2011-02-15 36 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> 
相关问题