2011-02-15 41 views
2

我正在爲我的項目構建一個通用的父pom文件。你在通用的pom文件中放置了什麼樣的存儲庫?

在那個文件中,我希望有一個最常見的Maven倉庫列表,以便在子項目(Jboss,Spring等)中提供大多數依賴項。

下面是這個當前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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.courtine</groupId> 
    <artifactId>parent</artifactId> 
    <packaging>pom</packaging> 
    <name>Parent</name> 
    <version>1.0</version> 
    <description>Common repositories</description> 
    <repositories> 
     <repository> 
      <id>javanet</id> 
      <name>Repository for Maven2</name> 
      <url>http://download.java.net/maven/2</url> 
     </repository> 
     <repository> 
      <id>google</id> 
      <name>Google repository for Maven2</name> 
      <url>https://oss.sonatype.org/content/repositories/google-releases/</url> 
     </repository> 
     <repository> 
      <id>jboss</id> 
      <name>JBoss repository for Maven2</name> 
      <url>http://repository.jboss.org/maven2/</url> 
     </repository> 
     <repository> 
      <id>com.springsource.repository.bundles.release</id> 
      <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name> 
      <url>http://repository.springsource.com/maven/bundles/release</url> 
     </repository> 
     <repository> 
      <id>com.springsource.repository.bundles.external</id> 
      <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> 
      <url>http://repository.springsource.com/maven/bundles/external</url> 
     </repository> 
     <repository> 
      <id>com.springsource.repository.libraries.release</id> 
      <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name> 
      <url>http://repository.springsource.com/maven/libraries/release</url> 
     </repository> 
     <repository> 
      <id>com.springsource.repository.libraries.external</id> 
      <name>SpringSource Enterprise Bundle Repository - External Library Releases</name> 
      <url>http://repository.springsource.com/maven/libraries/external</url> 
     </repository> 
    </repositories> 
</project> 
  1. 就是這樣一個普通的文件,列出常見的資源庫是一個好主意?
  2. 你知道其他常見的公共Maven倉庫放入這樣一個通用的pom文件嗎?

回答

3

將存儲庫放到pom中並不是一個好主意。更好地使用Repository Manager,如Nexus,ArtifactoryArchiva。 在這種類型的pom中,您應該將默認插件與其適當的修訂(pluginManagement)或應該使用的依賴關係(dependencyManagement)一起使用。

查看this的解釋。並看看here如何設置此。

+0

我也使用一個私人的Nexus存儲庫。之前,我把這些重新命名在settings.xml中使用正則表達式,但是如果沒有這個文件,這些項目不能移植。將存儲庫放在父pom中可以使我的項目變得便攜。 注意:我也放在父文件的公共依賴和插件,但它不是當前的問題。 – 2011-02-15 11:02:22

3

我有另一種做你想做的選擇。您可以在您的settings.xml中使用一個配置文件,該配置文件爲您提供了所有的存儲庫(作爲連接/ archiva將執行)。 我已經在我的site上發佈了一些關於他的內容。

只需在您的settings.xml補充一點:

<profile> 
    <id>my-repository</id> 
    <activation> 
    <!-- here we did not activat this profile by default --> 
      <activeByDefault>false</activeByDefault> 
    </activation> 
    <repositories> 
    <!-- list of standard repository --> 
    <repository> 
     <id>javanet</id> 
     <name>Repository for Maven2</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
    <repository> 
     <id>google</id> 
     <name>Google repository for Maven2</name> 
     <url>https://oss.sonatype.org/content/repositories/google-releases/</url> 
    </repository> 
    <repository> 
     <id>jboss</id> 
     <name>JBoss repository for Maven2</name> 
     <url>http://repository.jboss.org/maven2/</url> 
    </repository> 
    <repository> 
     <id>com.springsource.repository.bundles.release</id> 
     <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name> 
     <url>http://repository.springsource.com/maven/bundles/release</url> 
    </repository> 
    <repository> 
     <id>com.springsource.repository.bundles.external</id> 
     <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> 
     <url>http://repository.springsource.com/maven/bundles/external</url> 
    </repository> 
    <repository> 
     <id>com.springsource.repository.libraries.release</id> 
     <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name> 
     <url>http://repository.springsource.com/maven/libraries/release</url> 
    </repository> 
    <repository> 
     <id>com.springsource.repository.libraries.external</id> 
     <name>SpringSource Enterprise Bundle Repository - External Library Releases</name> 
     <url>http://repository.springsource.com/maven/libraries/external</url> 
    </repository> 
    <repository> 
     <id>intelligents-ia</id> 
     <name>Intelligents-ia Repository</name> 
     <url>http://intelligents-ia.com/maven2</url> 
    </repository> 
    </repositories> 
    </profile> 

而且你可以通過在命令行中添加-Pmy-repository生成項目:

mvn -Pmy-repository clean install 

或通過設置真正激活默認情況下此配置文件:

<activation> 
     <activeByDefault>true</activeByDefault> 
</activation> 
相關問題