Вы можете настроить плагины Assembly и jar для использования [конкретного файла манифеста. Из раздела Создание исполняемого файла Jar документации по сборке:
Как вы, несомненно, заметили, плагин Assembly может быть очень полезным способом создания автономного двоичного артефакта для вашего проекта, среди многих других вещей. Однако, как только вы создали этот автономный jar-файл, вам, вероятно, понадобится возможность его выполнить с помощью ключа -jar JVM.
Для этого плагин Assembly поддерживает конфигурацию элемента, идентичную той, которая поддерживается maven-jar-plugin (см. Раздел Ресурсы). Используя эту конфигурацию, легко настроить атрибут Main-Class манифеста jar:
Обратите внимание, что указанный вами манифест объединен с созданным контентом. Со ссылочной страницы фляги:
Содержимое вашего собственного файла манифеста будет объединено с записями, созданными Maven Archiver. Если вы укажете запись в своем собственном файле манифеста, она переопределит значение, сгенерированное Maven Archiver.
Следующая конфигурация связывает выполнение сборки-плагина с фазой pre-integration-test
(следующая фаза после пакета) и также включает в себя файл MANIFEST.MF, определенный в src / main / resources / META-INF.
Таким образом, следуя этому подходу, вы можете определить общее содержимое манифеста в вашем файле MANIFEST.MF и объединить его в окончательный манифест.
содержимое src / main / resources / META-INF / MANIFEST.MF
Created-By: Me
Foo: bar
Main-Class: com.foo.bar.MyMainClass
Bundle-Version: 4.0.0
Обновление:
Основываясь на комментариях об использовании addDefaultSpecificationEntries , предложенный подход будет работать в сочетании с этой спецификацией для jar, созданного плагином jar. Однако похоже, что плагин сборки еще не поддерживает объединение дополнительных объявлений . Плагин jar объединяет манифест из src / main / resources с дополнительно указанными значениями для предоставления этого содержимого в моем тестовом проекте:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Me
Built-By: Rich Seller
Build-Jdk: 1.5.0_15
Specification-Title: Unnamed - org.test:test:jar:1.0.0
Specification-Version: 1.0.0
Implementation-Title: Unnamed - org.test:test:jar:1.0.0
Implementation-Version: 1.0.0
Implementation-Vendor-Id: org.test
Foo: bar
Main-Class: com.foo.bar.MyMainClass
Bundle-Version: 4.0.0
Принимая во внимание, что выход из сборки-плагина:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Me
Foo: bar
Main-Class: com.foo.bar.MyMainClass
Bundle-Version: 4.0.0
конфиг:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-deps</id>
<phase>pre-integration-test</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifestFile>${manifest.file}</manifestFile>
<!--these properties are ignored-->
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifestFile>${manifest.file}</manifestFile>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
...
<properties>
<manifest.file>src/main/resources/META-INF/MANIFEST.MF</manifest.file>
</properties>