2008-09-16 46 views
2

我試圖使用maven2來構建axis2項目。我的項目配置爲具有AAR,WAR和EAR模塊的父項目。當我運行父項目的包目標時,控制檯顯示成功構建並創建所有文件。但是,由AAR項目生成的AAR文件不包含在生成的WAR項目中。 AAR項目被列爲WAR項目的依賴項。當我明確運行WAR的包目標時,AAR文件將包含在WAR文件中。在maven2多項目構建中缺少aar文件

爲什麼父母的軟件包目標在運行孩子的軟件包目標時不包括必要的依賴項呢?

我在我的戰爭項目中使用了maven-war-plugin v2.1-alpha-2。

父POM:

<parent> 
    <groupId>companyId</groupId> 
    <artifactId>build</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.nationwide.nf</groupId> 
<artifactId>parent</artifactId> 
<packaging>pom</packaging> 
<version>1.0.0-SNAPSHOT</version> 
<modules> 
    <module>ws-war</module> 
    <module>ws-aar</module> 
    <module>ws-ear</module> 
</modules> 

AAR POM:

<parent> 
    <artifactId>parent</artifactId> 
    <groupId>companyId</groupId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<groupId>companyId</groupId> 
<artifactId>ws-aar</artifactId> 
<version>1.0.0-SNAPSHOT</version> 
<description/> 
<packaging>aar</packaging> 
<dependencies>...</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.axis2</groupId> 
      <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
      <version>1.4</version> 
      <configuration>...</configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsdl2code</goal> 
        </goals> 
        <id>axis2-gen-sources</id> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.axis2</groupId> 
      <artifactId>axis2-aar-maven-plugin</artifactId> 
      <version>1.4</version> 
      <extensions>true</extensions> 
      <configuration>...</configuration> 
     </plugin> 
    </plugins> 
</build> 

WAR POM:

<parent> 
    <artifactId>parent</artifactId> 
    <groupId>companyId</groupId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<groupId>companyId</groupId> 
<artifactId>ws-war</artifactId> 
<packaging>war</packaging> 
<version>1.0.0-SNAPSHOT</version> 
<description/> 
<dependencies> 
    <dependency> 
     <groupId>companyId</groupId> 
     <artifactId>ws-aar</artifactId> 
     <type>aar</type> 
     <version>1.0.0-SNAPSHOT</version> 
    </dependency> 
    . 
    . 
    . 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1-alpha-2</version> 
      <configuration> 
       <warName>appName</warName> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

謝謝, 喬

回答

2

我能得到我的Maven構建中加入以下的插件到WS-戰爭POM文件正常工作:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory> 
          ${project.build.directory}/${project.build.finalName}/WEB-INF/services 
         </outputDirectory> 
         <includeArtifactIds> 
          ws-aar 
         </includeArtifactIds> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

這太糟糕,你不得不求助於使用的依賴插件,但我很高興你有它的工作。我認爲這可能是戰爭插件中的一個錯誤,不過,您可能想在Maven用戶組上發帖,看看是否有人可以幫助你。 – 2008-10-17 14:04:47

0

您是否嘗試過使用 「型」元素i你的依賴關係?例如:

<dependency> 
    <groupId>group-a</groupId> 
    <artifactId>artifact-b</artifactId> 
    <version>1.0</version> 
    <type>aar</type> 
</dependency> 

很難確定你的問題是什麼,而沒有看到你的實際的pom文件。

更新:

如果從父項目,運行會發生什麼:

mvn clean install 
  1. 是否「安裝」比「包」就任何不同的行爲,如你的問題是關注?
  2. 您是否在本地maven存儲庫(〜/ .m2/repository/com/mycompany /.../)中看到.aar文件?

作爲一個方面說明,我從來沒有很滿意的Maven戰爭插件。我一直使用maven assembly插件。它似乎工作得更好,更一致。另外,確保你使用的是最新版本的maven(2.0.9)。我花了半天的時間來解決最新版本中修復的類似問題。