К Добавить запись пути к классу в манифест , вам необходимо указать подключаемому плагину Maven Jar, добавив элемент <archive>
с соответствующей конфигурацией. Из Настройка манифеста (слегка адаптировано):
Настройка манифеста
Манифест по умолчанию может быть изменен
с конфигурацией архива
элемент. Ниже вы найдете некоторые из
параметры конфигурации, которые
имеется в наличии. Для получения дополнительной информации см Maven
Ссылка на архиватор. Эта версия
Плагин Maven JAR использует Maven Archiver
2.4.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<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>
</plugins>
</build>
...
</project>
Но проблема в вашем случае заключается в том, что вы (ab) используете evil system
scope , который по определению предназначен для зависимостей, которые, как предполагается, всегда равны доступны и не найдены в хранилище . Поэтому не ожидайте, что Maven поместит их в запись Class-Path в Manifest.mf.
Полагаю, Я никогда не повторю достаточно , что люди не должны его использовать system
Зависимые области, но их использование настоятельно не рекомендуется :
system : эта зависимость требуется на некотором этапе жизненного цикла вашего проекта, но зависит от системы. Использование этой области не рекомендуется: эта функция считается «продвинутой» и должна использоваться только в том случае, если вы действительно понимаете все последствия ее использования, что может быть чрезвычайно трудно, если вообще невозможно определить количественно, Эта область по определению делает вашу сборку непереносимой. Это может быть необходимо в определенных крайних случаях. В системную область входит элемент <systemPath>
, который указывает на физическое расположение этой зависимости на локальном компьютере. Таким образом, он используется для ссылки на некоторый артефакт, который, как ожидается, будет присутствовать на данном локальном компьютере, а не в репозитории; и чей путь может варьироваться от машины к машине. Элемент systemPath
может ссылаться на переменные среды в своем пути: например, ${JAVA_HOME}
.
Либо установите свои jar-файлы в локальный репозиторий, либо используйте корпоративный репозиторий, либо используйте файловый репозиторий . Но не используйте область действия system
.