Я пытаюсь скомпилировать проект с Maven (через Eclipse), удаляя версии из JAR зависимых. У меня есть следующие в моем pom.xml:Maven dependency stripVersion создает неправильный путь к классам
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
И действительно, баночки копируются в Lib/без номеров версий. Увы, я получаю ClassNotFound, потому что MANIFEST.MF в сгенерированном исполняемом JAR содержит путь к классам, ссылающийся на файлы , включая номера версий, которых, естественно, нет.
Что я делаю неправильно и как его исправить?
Edit: JAR создается с Maven-баночки-плагин:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>my.main.class</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
Я использую Run as -> Maven Install
(Eclipse с m2e плагин)
Как вы генерации ехес uable JAR? Обычно для этого не требуется использование плагина зависимостей. – Seelenvirtuose
Использование maven-jar-plugin. Я добавил конфигурацию из моего pom.xml. Вы имеете в виду, что maven-jar-plugin может копировать зависимости самостоятельно? Как я могу сказать это, чтобы стричь номера версий? – Itai
Вы можете использовать [shade-plugin] (https://maven.apache.org/plugins/maven-shade-plugin/) или [сборку-плагин] (https://maven.apache.org/components/ plugins/maven-assembly-plugin /) для этой цели. Оба плагина могут создавать _FAT JAR_ (в которых вам не нужно настраивать имена библиотек). Плагин сборки также может создавать ZIP-файл, например, который имеет структуру, которую вы, возможно, захотите: исполняемый JAR и его библиотеки в каталоге lib. В этом случае вы должны настроить [jar-plugin] (https://maven.apache.org/plugins/maven-jar-plugin/), чтобы ссылаться на правильные библиотеки. – Seelenvirtuose