2016-04-21 3 views
0

У меня есть следующие 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.

Не могли бы Вы помочь мне?

+0

Похоже, вы используете сборку с несколькими модулями, но в вашем реакторе, похоже, были разные версии. Кроме того, в вашем ушном модуле, который по умолчанию не имеет смысла. В частности, вы определили зависимость от военного модуля ... который имеет другую версию. Поэтому в этом случае вам нужно жестко закодировать имя модуля, иначе вам нужно соответствующим образом изменить artifactId. Возможно, вы можете запросить функцию [Maven EAR Plugin] (https://issues.apache.org/jira/browse/MEAR). – khmarbaise

ответ

0

Возможное решение:

Определение myapp.version свойства в главном файле и пом использовать эту переменную везде, когда вам нужна эта информация. Например, вы можете использовать его между тегами <version> и между тегами <build><finalName>.

Смежные вопросы