Когда проект использует maven-jar-plugin, легко добавить в манифест пользовательский файл манифеста, но я не могу найти способ сделать то же самое с тень maven. Как я могу использовать свой файл манифеста при использовании «maven-shade-plugin»?Как я могу указать пользовательский файл MANIFEST.MF при использовании плагина Maven Shade?
Дополнительная информация:
Мой заказ файла манифеста находится в "SRC/основной/ресурсы/META-INF/MANIFEST.MF". Maven не включает мой файл, вместо этого он заменяется в последнем банке файлом манифеста по умолчанию maven.
Причина, по которой мне нужен файл манифеста, заключается в том, чтобы указать некоторые классы JavaBeans в моем манифесте для библиотеки компонентов swing. Несколько классов JavaBeans должны быть указаны в файле манифеста в следующем формате: described here. Обратите внимание, что пустые строки (и группировка строк) важны для маркировки классов JavaBeans в манифесте.
Name: SomeBean1.class
Java-Bean: True
Name: SomeBean2.class
Java-Bean: True
Name: SomeBean3.class
Java-Bean: True
Список покушения решений (они не работают):
1) Этот код работает только при использовании Maven плагина банки (не оттенок).
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
2) This link говорит: «Как и во всех примерах здесь, эта конфигурация может использоваться во всех плагинов, которые используют Maven архиватор, а не только Maven-Jar-плагин, как в этом примере.» Основываясь на этом совете, я попробовал следующий код, но это тоже не сработало. (Maven еще заменил мой файл манифеста с файлом манифеста по умолчанию.)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>core</shadedClassifierName>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
3) Я не могу использовать тени «ManifestResourceTransformer», как described here, чтобы сделать работу, по следующей причине. Мне нужно добавить классы JavaBeans в мой файл манифеста, как описано выше в разделе «Дополнительные сведения». Однако, если я добавляю манифестные записи с использованием тени ManifestResourceTransformer, эти записи вставляются в файл манифеста в непредсказуемом (случайном порядке) порядке. Для указания классов JavaBeans важно упорядочить записи манифеста (порядок строк).
4) Я попытался использовать IncludeResourceTransformer, но нижеприведенный код вызывает следующую ошибку: «Ошибка создания заштрихованной банки: дублирующаяся запись: META-INF/MANIFEST.MF».
<configuration> <shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>core</shadedClassifierName><createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/MANIFEST.MF</resource>
<file>src/main/resources/META-INF/MANIFEST.MF</file>
</transformer>
</transformers>
</configuration>
Заранее благодарим за любую помощь!