2014-04-16 58 views
0

我是maven的初学者。简而言之,我在Web项目中有三个模块:父模块,Web模块和服务模块。如何在svn中配置多模块maven项目的父模块

parent-module 
    +----web-module 
    |   +----pom.xml 
    +----service-module 
    |   +----pom.xml 
    +----pom.xml 

通常情况下,父母可以module.pom.xml喜欢这样的:

<modules> 
    <module>../web-module</module> 
    <module>../service-module</module> 
</modules> 

我如何配置父module.pom.xml当服务模块是SVN和我没有检出它。

+1

为什么'web模块'内的'parent-module'?似乎是违反直觉的。 – Raghuram

+0

对不起,这是我的错误 – LENS

回答

0

你的结构是错误的。更改文件夹结构使您的生活更轻松。

+-- parent-module (pom.xml) 
     +--- web-module (pom.xml) 
     +--- service-module (pom.xml) 

最好把上面的结构放到SVN中。这意味着您可以签出项目的主干,并且您将在工作副本中获得上述结构。 所以结果是:

svn checkout URL/project/trunk workingcopy 

将创建下列到workgincopy文件夹:

+-- (pom.xml) 
     +--- web-module (pom.xml) 
     +--- service-module (pom.xml) 

基础上你的父母模块上方看起来就像这样:

<project> 
    <groupId>whatEver</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    ... 
    <modules> 
    <module>web-module</module> 
    <module>service-module</module> 
    </modules> 
</project> 

现在你的孩子(网络模块)看起来像这样:

<project> 
    <parent> 
    <groupId>whatEver</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

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

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

最后是你的服务模块是这样的:

<project> 
    <parent> 
    <groupId>whatEver</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>service-module</artifactId> 

... 
</project> 

所以在Maven中你可以改变你的项目(工作拷贝)的根,并通过以下构建整个项目:

mvn clean package 
+0

thx,但我的情况是,如果我有本地主机中的父模块和web模块,svn中的服务模块,然后是父模块pom.xml,其标记像你的那样不能部署,因为它说服务模块不存在。我必须退出服务模块吗? – LENS