Обновление: вот как отфильтровать путь к классам в пользовательский манифест.
Цель build-classpath
подключаемого модуля maven-dependency-plugin можно настроить для вывода пути к классам в файл в формате свойств (т.е. classpath = [classpath]). Затем вы настраиваете элемент filters для использования сгенерированного файла classpath и настраиваете каталог ресурсов, который нужно отфильтровать.
Например:
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>build-classpath</goal>
</goals>
</execution>
</executions>
<configuration>
<outputFilterFile>true</outputFilterFile>
<outputFile>${project.build.directory}/classpath.properties</outputFile>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>
${project.build.outputDirectory}/META-INF/MANIFEST.MF
</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
<filters>
<filter>${project.build.directory}/classpath.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Затем укажите следующее в src / main / resources / META-INF / Manifest.MF:
Bundle-Version: 4.0.0
...
Classpath: ${classpath};[specify additional entries here]
Примечание: есть ошибка при этой обработке с использованием стандартного оконного разделителя пути (\
), путь создания лишен разделителей (обратите внимание, что он отлично работает в Linux). Вы можете получить правильный путь к классам для Windows, указав <fileSeparator>\\\\</fileSeparator>
в конфигурации цели build-classpath
.
Вы можете настроить манифест в конфигурации jar-plugin . Для этого вы должны добавить что-то вроде этого в свой пом.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
...
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>${pom.url}</url>
<key>value</key>
</manifestEntries>
</archive>
</configuration>
...
</plugin>
Полная спецификация архиватора предоставляет довольно много опций. См. примеры страниц для опций по настройке пути к классам.
Если ни одно из этих действий не подходит для вас, вы можете определить свой собственный манифест , настроить свойства, содержащие требуемые записи, и использовать фильтр , чтобы заполнить манифест этими свойствами