我是Maven的新手,正在为我的公司创建一个构建。我们不想连接到Maven Central Repository,并且src和test代码的目录结构与超级pom中指定的目录结构不同。我认为处理这个问题的最好方法是创建一个客户超级pom,但我想知道--我实际上应该把超级pom放在哪里,这样我的项目poms才能引用它?它会放在存储库中的某个地方吗?如果是,在哪里?
谢谢,杰夫
发布于 2009-06-12 13:38:03
我的建议是创建一个父POM,您的项目可以从中派生您的设置。这个父POM只是另一个Maven2项目,但类型是"pom“而不是"jar”。
例如,您可以拥有如下所示的父pom:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.projectname</groupId>
<artifactId>projectname</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<name>projectname</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<superprop1>this property is available in all child projects</superprop1>
<superprop2>this property is available in all child projects</superprop2>
<superprop3>this property is available in all child projects</superprop3>
</properties>
</project>该项目的子项目可能如下所示:
<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">
<parent>
<artifactId>projectname</artifactId>
<groupId>com.company.projectname</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>child-project</artifactId>
<packaging>jar</packaging>
<name>child-project</name>
<description>
My child project
</description>
</project>您在父pom中声明的所有内容现在都可以在子POM中使用。在示例关于中,子项目将自动拥有可用的JUnit依赖项。这样做还可以确保自动计算环境,而不是让每个开发人员都去摆弄他们的Maven安装的超级POM。
https://stackoverflow.com/questions/986578
复制相似问题