У меня есть следующие Java/Maven структура модуля:Maven ухо - boundleFileName с номером версии
myapp
|-application <- this is an ear assembler module
|-commons
|-restapi
Я хочу собрать ухо, которое содержит переименованные артефакты с правильным номером версии boundled артефактов.
myapp-1.0.ear
|-myapp-commons-1.1.jar
|-myapp-restapi-1.2.war
Я знаю, что имя артефактов аналогично с именем имя Java-модуля. Поскольку я не хочу использовать префиксы «myapp» перед именами модулей, поэтому мне нужно переименовать окончательное имя артефактов, например: myapp- [modulename] - [modulversion] .jar | war.
Моя проблема в том, что если я использую конфигурацию 'bundleFileName', то я не могу вручную добавить информацию о номере версии.
мастер ПОМ:
<groupId>a.b.myapp</groupId>
<artifactId>myapp</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>application</module>
<module>commons</module>
<module>restapi</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>a.b.myapp</groupId>
<artifactId>restapi</artifactId>
<version>1.2</version>
<type>war</type>
</dependency>
</dependencies>
</dependencyManagement>
application.pom (модуль уха):
<parent>
<artifactId>myapp</artifactId>
<groupId>a.b.myapp</groupId>
<version>1.0</version>
</parent>
<artifactId>application</artifactId>
<version>1.0</version>
<packaging>ear</packaging>
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>a.b.myapp</groupId>
<artifactId>restapi</artifactId>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<finalName>${parent.artifactId}-${artifactId}-${version}</finalName> <-- MY-APPLICATION-1.0.EAR
<modules>
<webModule>
<groupId>com.remal.gombi</groupId>
<artifactId>restapi</artifactId>
<bundleFileName>${parent.groupId}-${artifactId}-${????}.war</bundleFileName> <- MYAPP-RESTAPI-???.WAR
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
restapi.pom
<parent>
<artifactId>myapp</artifactId>
<groupId>a.b.myapp</groupId>
<version>1.0</version>
</parent>
<artifactId>restapi</artifactId>
<version>1.2</version>
<packaging>war</packaging>
<modelVersion>4.0.0</modelVersion>
Я не в состоянии получить информацию о версии из 'restapi' между тегами bundleFileName. Если свойство bundleFileName не используется, тогда имя военного файла в ухе будет restapi-1.2.war вместо myapp-restapi-1.2.war.
Не могли бы Вы помочь мне?
Похоже, вы используете сборку с несколькими модулями, но в вашем реакторе, похоже, были разные версии. Кроме того, в вашем ушном модуле, который по умолчанию не имеет смысла. В частности, вы определили зависимость от военного модуля ... который имеет другую версию. Поэтому в этом случае вам нужно жестко закодировать имя модуля, иначе вам нужно соответствующим образом изменить artifactId. Возможно, вы можете запросить функцию [Maven EAR Plugin] (https://issues.apache.org/jira/browse/MEAR). – khmarbaise