Чтобы удалить файл `module-info.class` из .jar-файла мода для Minecraft, вы можете использовать различные способы. Для начала рассмотрим упомянутый вами Artifact Transformer и как его можно использовать в Gradle для удаления ненужного класса из .jar-файла.
Если в вашем проекте используется Gradle Shadow Plugin, вы можете добавить кастомный Transformer, который будет удалять файл `module-info.class` во время процесса сборки. Вот примерный код для вашего `build.gradle` файла:
```groovy
import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer
// Создание кастомного трансформера
class DeleteModuleInfoTransformer implements Transformer {
boolean canTransformResource(File file) {
return file.name.equals("module-info.class")
}
boolean hasTransformedResource() {
return true
}
void transform(URLClassLoader classLoader, File file) {
if (file.name.equals("module-info.class")) {
file.delete()
}
}
void modifyOutputStream(ZipOutputStream jos, boolean preserveFileTimestamps) {
// нет необходимости вносить изменения в поток вывода
}
}
shadowJar {
// Добавление кастомного трансформера
transform(DeleteModuleInfoTransformer)
// Остальная конфигурация shadowJar здесь
}
```
В этом коде создается класс `DeleteModuleInfoTransformer`, который реализует интерфейс `Transformer` и который будет удалять `module-info.class`.
Также можно использовать другие подходы, например, удаление файла `module-info.class` напрямую из собранного .jar-файла при помощи команды `zip` в командной строке:
```bash
zip -d path/to/your.jar module-info.class
```
Выполнение этой команды удалит файл `module-info.class` из указанного .jar-файла.
Если вам нужна программа с графическим интерфейсом, можно воспользоваться утилитами архивирования, такими как 7-Zip, WinRAR или любыми другими, которые поддерживают работу с архивами .jar (фактически zip-архивы).
1. Откройте .jar-файл с помощью вашей программы для архивирования.
2. Найдите `module-info.class` внутри архива.
3. Удалите его и сохраните изменения в архиве.
Наконец, если у вас есть подобные проблемы с избыточными файлами в .jar в будущем, вы можете настроить вашу сборку так, чтобы не включать ненужные классы и файлы. Многие плагины сборки, такие как Maven Shade Plugin или Gradle Shadow Plugin, предоставляют возможности для исключения файлов напрямую в конфигурации сборки.