最好的解决方案是为组织中的所有项目创建一个简单的父pom文件项目(带有“ pom”包装)。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>your.company</groupId> <artifactId>company-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <distributionManagement> <repository> <id>nexus-site</id> <url>http://central_nexus/server</url> </repository> </distributionManagement></project>
可以将其构建,发布并部署到您的本地关系,以便每个人都可以访问其工件。
现在,对于要使用它的所有项目,只需包括以下部分:
<parent> <groupId>your.company</groupId> <artifactId>company-parent</artifactId> <version>1.0.0</version></parent>
该解决方案将使您可以轻松地将其他常见内容添加到公司的所有项目中。例如,如果您想将JUnit使用标准化为特定版本,那么这将是理想的选择。
如果您的项目使用具有自己父级的多模块结构,那么Maven还支持链继承,因此完全可以接受的是,使项目的父pom文件引用公司的父pom,并使项目的子模块甚至不知道您的父公司的母公司。
从您的示例项目结构中可以看到,您正在尝试将父项目置于与聚合器pom相同的级别。如果您的项目需要其自己的父级,则我发现的最佳方法是在与其他模块相同的级别上包含父级,并将聚合器pom.xml文件放在所有模块目录所在的根目录中。
- pom.xml (aggregator) - project-parent - project-module1 - project-module2
使用此结构所要做的就是将父模块包含在聚合器中,并使用
mvn install根目录中的来构建所有内容。
我们在我的组织中使用了这种精确的解决方案,它经受了时间的考验,并为我们很好地工作。



