2008-09-16 85 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)。我花了半天的时间来解决最新版本中修复的类似问题。