2011-04-20 118 views
1

我在Eclipse中有两个Maven项目,都有自己的POM。Maven构建一个WAR文件,但首先构建一个JAR文件

项目A创建一个JAR文件。

项目B创建一个WAR文件。

当我运行针对项目B中的“包”命令,我想它也包一个项目,然后将所得的JAR文件复制到任意位置,在B项目

我试图(和成功)在由Maven的战争插件使用webResources值,像这样的副本:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
    <webResources> 
     <resource> 
     <directory>../ProjectA/target</directory> 
     <targetPath>.</targetPath> 
     <includes> 
      <include>ProjectA*.jar</include> 
     </includes> 
     <excludes> 
      <exclude>*shaded*.jar</exclude> 
     </excludes> 
     </resource> 
    </webResources> 

但我怎么能得到项目B中的POM做项目A的构建?

我尝试过的另一种方法是让项目A成为项目B的依赖项,以便将其导入到WAR的WEB-INF/lib目录中,然后将它移动到其他位置。但是这似乎有点混乱。

任何帮助,非常感谢。

回答

6

为此,您应该创建一个这样的结构的多模块版本。

root 
    +-- pom.xml 
    +-- ProjectA 
      +-- pom.xml 
    +-- ProjectB 
      +-- pom.xml 

有了像上面这样的结构,您可以处理您的问题非常优雅。此外,请阅读multi-module builds等。 有一件事是使用更新版本的maven-war-plugin,导致当前版本是2.1.1而不是2.0.X. OK。

+0

OK。你是否建议新的pom.xml存在于Eclipse项目B中?所以项目B有两个poms,一个叫做项目A,然后是它的子目录POM? – Phil 2011-04-20 15:58:34

+0

不可以。您创建文件夹让它命名为“父”,并将该结构放入此文件夹中。该项目将被导入到Eclipse中,而不是分离的项目。你是否使用Eclipse,如果是,请检查m2eclipse插件。 (编辑答案)。 – khmarbaise 2011-04-20 16:06:42

+0

我认为你的方法是正确的,但我需要进一步研究多模块。感谢您的建议。 – Phil 2011-04-21 10:37:04