2012-04-29 117 views
0

这是一个基本的问题,我只是不太熟悉maven多模块结构。说,我有一个Web应用程序。我想连接一些模块(一些服务)。我是否需要制作一个Web应用程序只是其中一个模块,依赖于其他模块,然后运行它?起初我以为我可以运行整个项目,但是这个选项在我的IDE中变得不活跃(我现在使用的是NetBeans),这让我觉得我应该运行一个主模块(在这种情况下是一个Web应用程序)。是这样吗?提前致谢。运行一个多模块的Maven项目

回答

4

如果你有一个多模块项目,你需要一个像下面这样的结构,它也将由文件夹结构来表示。

+-- root (pom.xml) 
    +--- module-1 
    +--- module-2 
    +--- module-war 

而根部模块包含这样一件事:

<project ..> 

    <groupId>com.test.project</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <modules> 
    <module>module-1</module> 
    <module>module-2</module> 
    <module>module-war</module> 
    </modules> 

</project> 

在模块-1的POM应该是这样的:

<project ..> 
    <parent> 
    <groupId>com.test.project</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>module-1</artifactId> 

    dependencies for the module 

</project> 

模块-2看起来更或更少的相同..在战争模块它看起来像:

<project ..> 
    <parent> 
    <groupId>com.test.project</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <packaging>war</packaging> 
    <artifactId>module-war</artifactId> 

    dependencies for the module 

</project> 

如果您有例如模块之间的依赖关系模块1取决于模块-2,它看起来像在模块1以下:

<project ..> 
    <parent> 
    <groupId>com.test.project</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>module-1</artifactId> 

    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>module-2</artifactId> 
     <version>{project.version}</version> 
    </dependency> 

    ..other dependencies.. 

    </dependencies> 

</project> 

构建和打包你的项目,你会去父文件夹和做只是一个

mvn clean package 
+0

哦,非常感谢这样一个完整的答案。 – 2012-04-29 11:32:53