我有幾個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