@Nikita222266

Java. Преобразователь артефакта. Как очистить проект от module-info.class?

Всем привет! Может ли кто-то пожалуйста помочь мне, с очищением проекта от module-info.class. Извините меня за то, что я не могу подробнее описать мою проблему, по причине того что сам плохо понимаю это. Artifact Transformer в моем понимании, это то что может очистить артефакт/полученный .jar файл и зависимости от такого ненужного в моем понимании, шлака как module-info.class(Java 9+) Я пишу мод майнкрафт 1.12.2 и после того как я добавил через shadow зависимости в .jar, меня стали беспокоить различные ошибки. Их можно игнорировать, так как он не влияют на работу мода, но я хочу их исправить.

Я следую этому примеру https://github.com/jjohannes/understanding-gradle/... Я хотел использовать этот код для регистрации artifact transformer
configurations.compileClasspath {
attributes.attribute(javaModuleAttribute, true)
}
configurations.runtimeClasspath {
attributes.attribute(javaModuleAttribute, true)
}

dependencies.artifactTypes.maybeCreate("jar").attributes.attribute(javaModuleAttribute, false)

dependencies.registerTransform(JavaModuleTransform) {
from.attributes.attribute(ARTIFACT_TYPE_ATTRIBUTE, "jar").attribute(javaModuleAttribute, false)
to.attributes.attribute(ARTIFACT_TYPE_ATTRIBUTE, "jar").attribute(javaModuleAttribute, true)
}
но возникает ошибка, и он не может найти основной класс пакета net.minecraftforge.legacydev

```2. Мне пришлось создать buildSrc/build.gradle и выполнить преобразование артефакта уже в build.gradle, поскольку скрипт groovy может быть импортирован только в основном build.gradle. Я ожидаю, что преобразование артефакта будет выполнено, но сейчас оно не выполняется, поскольку я, по-видимому, неправильно его зарегистрировал. У меня есть println, который должен отображать пути зависимостей при преобразовании ``

Я извиняюсь если не описал все очень хорошо, так как это мой первый вопрос, но суть в том что мне нужно очистить все зависимости/проект от module-info.class и исправить ошибки связанные с ним
Вот ошибка и код, пожалуйста помогите мне. ERROR:

https://pastebin.com/pbnBXt0C

BUILD.GRADLE(ROOT) and buildSrc/build.gradle

https://pastebin.com/TbwXDdT0

buildSrc/src/main/groovy/org/example/JavaModuleTransform.groovy

https://pastebin.com/hFygDi8d
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
На самом последнем stage (я думаю gradle это позволяет) тебе надо просто добавить еще один
шаг - очистка артифакта от Java9 modules. Я-бы это сделал в простом случае просто распаковкой
артифакта во временный фолдер. Удалением файлов модулей и упаковкой обратно.

Что то вроде.
jar x .... -d target/temp  
find -type f -name module-info.class -delete
jar c ....
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы