Удаление номера версии из имени файла с помощью Maven
-
19-09-2019 - |
Вопрос
У меня есть проект с 5 модулями в maven.Прямо сейчас, когда я выполняю «чистую установку mvn», он генерирует ухо, содержащее два jar-файла, один war и один sar из других модулей.
Все имена файлов содержат версию, например, projectx-ear-2.0.0.ear, projectx-client-2.0.0.jar и т. д.
Мне нужно переименовать одну из баночек и последнее ухо, чтобы опустить версию в имени файла.Это должно выглядеть так:
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web
Сейчас я использую следующие плагины для сборки:maven-compiler-plugin и maven-release-plugin
Как лучше всего добиться ожидаемых результатов?
Решение
В ушном модуле вы можете использовать project.build.finalName
элемент или вы можете настроить maven-ушной плагин который поддерживает finalName
необязательный параметр.А чтобы настроить окончательное имя связанного jar-файла, вам необходимо определить jarModule
и установить bundleFileName
собственность для этого.
Окончательная конфигурация может выглядеть примерно так (здесь я продемонстрирую, как установить окончательное имя уха в конфигурации плагина):
<project>
[...]
<dependencies>
<dependency>
<groupId>yourgroupid</groupId>
<artifactId>projectx-client</artifactId>
<version>2.0.0</version><!-- not mandatory if inherited -->
</dependency>
[...]
</dependencies>
[...]
<build>
[...]
<plugins>
[...]
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>projectx-ear</finalName>
<modules>
<jarModule>
<groupId>yourgroupid</groupId>
<artifactId>projectx-client</artifactId>
<bundleFileName>anotherName.jar</bundleFileName>
</jarModule>
</modules>
</configuration>
</plugin>
[...]
</project>
Другие советы
Этого можно добиться, указав finalName
свойство в вашем pom следующим образом:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Пункт первый:одиночный JAR/WAR.
Чтобы создать его без номера версии в имени, в pom.xml просто добавьте код:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Итак, если вы скомпилируете, например, projectx_misc, вы получите projectx_misc.jar .
Что со мной происходит?Когда я компилирую один и тот же пакет из проекта POM (в Netbeans), все jar-файлы имеют версию в имени, а EAR включает архивы xxx-version.jar.
Итак, пункт второй:проблема с УХОМ.
В файле pom.xml EAR измените maven-ушной плагин добавив в конфигурацию это свойство:
<fileNameMapping>no-version</fileNameMapping>
Например, это настройка моего плагина:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
Итак, теперь, когда я компилирую все архивы из проекта pom, все номера версий удаляются из jar-файлов.