我有几个Maven项目,它们从父pom.xml中共享一些常用的设置 - 存储库,插件和通用依赖项。如何管理不在同一目录结构中的maven子项目?
我想现在移动子项目来分离svn位置,以便他们可以拥有自己的生命周期,标签,分支和树干。但是如果我从目录结构中移动子项目,我将不得不重写所有项目中的整个公共pom.xml。
是否有更好的方式来处理这个问题,以便子项目仍然可以共享一个共同的父pom.xml,而不会彼此相邻(作为文件夹)。
我有几个Maven项目,它们从父pom.xml中共享一些常用的设置 - 存储库,插件和通用依赖项。如何管理不在同一目录结构中的maven子项目?
我想现在移动子项目来分离svn位置,以便他们可以拥有自己的生命周期,标签,分支和树干。但是如果我从目录结构中移动子项目,我将不得不重写所有项目中的整个公共pom.xml。
是否有更好的方式来处理这个问题,以便子项目仍然可以共享一个共同的父pom.xml,而不会彼此相邻(作为文件夹)。
我不知道为什么你必须显式引用父pom文件。
我最常做的是有父POM作为像这样一个项目:
<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>com.blah.commons</groupId>
<artifactId>project-standards</artifactId>
<name>Common Standards</name>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
...
注意<packaging>pom</packaging>
元素
而且每个项目/模块中,将取决于标准的POM。
<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>
<groupId>com.blah.commons</groupId>
<artifactId>project-standards</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.project</groupId>
<artifactId>xyz-core</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>project xyz core module</name>
...
注意<parent>
元素。
我假设你已经定义了一个父pom.xml的是这样的:
<parent>
<groupId>my.group</groupId>
<artifactId>name</artifactId>
<version>0.1.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
只需删除元素<relativePath/>
,则父像所有其他依赖访问,无论是从本地资源库或您自己的Nexus库。因此,相对路径不是必需的,这不依赖于目录结构。
+1这就是答案。请记住,您需要为父项目提供自己的'mvn deploy'作业,以便将其安装到您的存储库中,而不会自行获取它们。 – 2011-06-06 18:56:31
啊是的,这应该工作。但是,如果我检查我的本地存储库(artifactory)中的父pom。我将不得不在所有子项目中添加仓库设置(本地仓库)。任何方式,我可以避免这样做? – sheki 2011-06-07 04:57:36
@Sheki我从来没有使用过artifactory,但是如果它是你的**本地**版本库,应该自动找到这个artifact?如果没有,可以在你的'.m2/settings.xml'中配置。 – Thor 2011-06-07 10:00:37