我有3个maven模块。一个是父组合其他两个模块。 所有项目文件夹都在同一根级别。
虽然部署无效。以下配置有什么问题?
project-parent/pom.xml
project-commons/pom.xml
project-web/pom.xml
父-POM:
<project>
<groupId>de.myproject</groupId>
<artifactId>project-parent</artifactId>
<packaging>pom</packaging>
<modules>
<!-- <module>../project-commons</module> -->
<module>../project-web</module>
</modules>
</project>
web的POM:
<parent>
<groupId>de.myproject</groupId>
<artifactId>project-parent</artifactId>
<version>1.0.0</version>
<relativePath>../project-parent/pom.xml</relativePath>
</parent>
结果:
[ERROR] The project de.myproject:project-parent:1.0.0 has 1 error
[ERROR] Child module \project-parent\..\project-web\pom.xml of \project-parent\pom.xml does not exist
项目结构:
svn/project-commons/trunk/pom.xml
svn/project-web/trunk/pom.xml
svn/project-parent/pom.xml
答案 0 :(得分:1)
我将概述一种方法,我已成功用于可能满足您需求的大型和小型项目。
pom.xml
superpom/pom.xml
utils0/pom.xml
utils1/pom.xml
utils2/pom.xml
services0/pom.xml
services1/pom.xml
services2/pom.xml
war0/pom.xml
war1/pom.xml
在此示例中,utils和services模块生成jar;战争模块产生战争。在工具,服务和战争之间会有各种依赖关系。
superpom模块的类型为pom,只包含父pom。每个util / service / war pom.xml引用具有../ superpom的相对路径的父代:
<parent>
<groupId>mygroup</groupId>
<artifactId>superpom</artifactId>
<version>1.3.3.3-SNAPSHOT</version>
<relativePath>../superpom</relativePath>
</parent>
superpom / pom.xml不包含任何元素,也不以任何方式引用“child”模块/ poms。 superpom包含共享属性,插件配置,依赖版本等。这是一个大pom。所有其他模块的poms(通常)都很小。
顶级pom包含对所有其他模块(包括superpom)的引用。它没有父pom(至少没有一个存在于此项目层次结构中)。您使用顶级(而不是superpom)来构建所有内容。您可以使用配置文件(或其他方法)来控制要构建的模块,但我通常只是从这里构建整个树。对SCM,CI构建等的支持存在于这个顶级pom中,这使得所有其他项目(包括父pom)保持清洁,并且仅关注构建和测试工件。
我的maven结构中没有“trunk”的概念 - 这是一个正交的概念。如果我想在主干或分支上工作,我会查看相应的主干或分支结构。