2013-01-18 122 views
4

我是Maven的新手,最近安裝了nexus。現在我想創建一個父POM,這樣我公司內的所有項目都可以使用它。這是我的父母POM。Maven Parent 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>1.0.0</modelVersion> 
    <groupId>com.mycomp</groupId> 
    <artifactId>parent-pom-android</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>apk</packaging> 
    <name>Android Parent POM</name> 

    <repositories> 
     <repository> 
      <id>nexus-repo</id> 
      <url>http://10.10.10.230:8081/nexus/content/groups/public</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </snapshots> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>nexus-repo</id> 
      <name>confiz-repo</name> 
      <url>http://10.10.10.230:8081/nexus/content/groups/public/</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 
</project> 

現在在哪兒,我把這個POM文件,這樣我的其他POM文件可以從它繼承?

回答

3

你有你的項目部署到內部Maven倉庫開始。要做到這一點,首先需要配置一個Maven倉庫服務器(我推薦使用Apache Archiva),然後將你的pom.xml和settings.xml指向服務器:http://archiva.apache.org/docs/1.4-M3/userguide/deploy.html

部署它之後,可以指向所有項目從你的公司使用那個pom作爲父母。您可以使用相同的策略來創建內部項目依賴關係。這在continuous integration環境中非常好。

+0

我已經安裝了nexus並將parent-pom.xml上傳到了nexus。我怎樣才能指出我的項目pom從nexus repo中讀取pom? – AndroidDev

+1

您需要配置您的pom.xml和settings.xml以使用該存儲庫。一些信息在這裏:https://support.sonatype.com/entries/21283268-configure-a-maven-build-to-publish-to-nexus –

+0

聽起來像雞或雞蛋問題給我。父pom定義自定義存儲庫,但客戶端必須從存儲庫獲取父pom。 – Robert

10

如果你把這個父pom放在一個名爲android的文件夾中,並且會在這個文件夾中使用它。

  • 的Android
  • 的pom.xml
  • 機器人項目-1
    • 的pom.xml

該項目的pom.xml然後可以通過將使用父POM這在其pom.xml的頂部:

<parent> 
    <groupId>parent.group</groupId> 
    <artifactId>parent.artifact</artifactId> 
    <version>${version.number}</version> 
    <relativePath>../</relativePath> 
</parent> 

然後,您可以在將來擴展這個結構是這樣的:

  • 移動
    • 的pom.xml
    • 的Android
      • 的pom.xml
      • Android的項目1
      • android-project-2
    • iPhone
      • 的pom.xml
      • iphone項目-1

這讓你定義常見的配置爲Android項目,iphone項目和常見的配置常見的配置所有移動項目。等等

1

對於每個孩子pom,放置一個對父pom的引用。

<parent> 
    <groupId>com.mycomp</groupId> 
    <artifactId>parent-pom-android</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <relativePath>relative/path/to/parent/pom</relativePath> 
</parent> 

relativePath計算從孩子POM

+0

如果父pom位於Nexus中,並且settings.xml配置爲使用內部的Nexus,則不需要相對路徑。當你在版本控制中有幾個項目存儲在一起並且有一個父POM他們都使用時,相對路徑很有用。然後,父pom不在Nexus中,而是在與該組項目的版本控制中。 –

1

包裝類型應該是pom而不是apk