2016-04-21 22 views
0

Ich habe folgende java/Maven Modulstruktur:Maven Ohr - boundleFileName mit der Versionsnummer

myapp 
|-application <- this is an ear assembler module 
|-commons 
|-restapi 

Ich mag ein Ohr montieren, den umbenannten Artefakte mit dem richtigen Versionsnummer des Boundled Artefakte enthält.

myapp-1.0.ear 
|-myapp-commons-1.1.jar 
|-myapp-restapi-1.2.war 

Ich weiß, dass der Name der Artefakte mit dem Namen des Java-Modul-Name ähnelt. Da ich die 'myapp'-Präfixe nicht vor den Modulnamen verwenden möchte, muss ich den endgültigen Namen der Artefakte wie folgt umbenennen: myapp- [modulename] - [modulversion] .jar | war.

Mein Problem ist, wenn ich 'bundleFileName' Konfiguration verwenden, dann kann ich die Versionsnummer nicht manuell hinzufügen.

Master pom:

<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 (Ohr-Modul):

<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> 

Ich bin nicht in der Lage, die Versionsinformationen des bekommen 'restapi' Modul zwischen den bundleFileName Tags. Wenn die Eigenschaft bundleFileName nicht verwendet wird, lautet der Name der WAR-Datei im Ohr restapi-1.2.war anstelle von myapp-restapi-1.2.war.

Könnten Sie mir bitte helfen?

+0

Es sieht so aus, als ob Sie einen Multi-Modul-Build verwenden, aber Sie scheinen verschiedene Versionen in Ihrem Reaktor zu haben. Außerdem in Ihrem Ohr-Modul, das standardmäßig nicht sinnvoll ist. Insbesondere, weil Sie eine Abhängigkeit zum Warmodul definiert haben, die eine andere Version hat. In diesem Fall müssen Sie den Modulnamen fest codieren, andernfalls müssen Sie die artifactId entsprechend ändern. Möglicherweise können Sie eine Feature-Anfrage an [Maven EAR Plugin] (https://issues.apache.org/jira/browse/MEAR) stellen. – khmarbaise

Antwort

0

Mögliche Lösung:

definiert myapp.version Eigenschaft in der Haupt-pom-Datei und verwendet diese Variable überall, wenn Sie diese Informationen benötigen. Zum Beispiel können Sie es zwischen den Tags <version> und zwischen <build> Tag auch verwenden.