maven build从远程存储库而不是本地硬盘驱动器下载我的项目

时间:2013-07-24 08:56:07

标签: maven

我在pom.xml中添加了以下存储库,因为我需要Primefaces库。

            <repositories>
                <repository>
                    <id>prime-repo</id>
                    <name>PrimeFaces Maven Repository</name>
                    <url>http://repository.primefaces.org</url>
                    <layout>default</layout>
                </repository>
            </repositories>             

但是当我运行构建时添加后,构建日志显示它从远程存储库http://repository.primefaces.org下载而不是我的本地硬盘驱动器..并且具有以下日志。

请澄清。 非常感谢。

            [INFO] Scanning for projects...
            [INFO]                                                                         
            [INFO] ------------------------------------------------------------------------
            [INFO] Building xxx_presentation Maven Webapp 0.0.1-SNAPSHOT
            [INFO] ------------------------------------------------------------------------
            Downloading: http://repository.primefaces.org/com/jay/business/0.0.1-SNAPSHOT/maven-metadata.xml
            Downloading: http://repository.primefaces.org/com/jay/data/0.0.1-SNAPSHOT/maven-metadata.xml
            Downloading: http://repository.primefaces.org/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.pom
            Downloading: http://repo.maven.apache.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.pom
            [WARNING] The POM for com.oracle:ojdbc6:jar:11.2.0.3 is missing, no dependency information available
            Downloading: http://repository.primefaces.org/com/jay/common/my_common/0.0.1-SNAPSHOT/maven-metadata.xml
            Downloading: http://repository.primefaces.org/com/jay/common/my_common/0.0.1-SNAPSHOT/maven-metadata.xml
            Downloading: http://repository.primefaces.org/com/jay/common/business/my_common_business/0.0.1-SNAPSHOT/maven-metadata.xml
            Downloading: http://repository.primefaces.org/com/jay/common/data/my_common_data/0.0.1-SNAPSHOT/maven-metadata.xml

3 个答案:

答案 0 :(得分:0)

将存储库添加到pom.xml意味着maven将首次使用它来下载依赖项。然后maven将使用本地存储库。 这是默认行为

答案 1 :(得分:0)

这是正常的。 Maven首次在远程存储库中搜索工件,然后将其下载到本地存储库(隐藏目录/.m2)。下次执行构建时,maven将使用本地副本。

offtopic:如果您想使用专有工件或自己制造的工件,那么我建议您使用Nexus maven存储库管理器。

答案 2 :(得分:0)

可以通过指定 updatePolicy 来配置Maven尝试连接到远程存储库的频率,如Maven Settings Reference中所述。

'每日'是默认设置,但您可以对其进行配置,以满足您的需求。简而言之,它的工作原理如下(从上面提到的Maven文档中复制):

  <repositories>
    <repository>
      <id>codehausSnapshots</id>
      <name>Codehaus Snapshots</name>
      <releases>
        <enabled>false</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
      <url>http://snapshots.maven.codehaus.org/maven2</url>
      <layout>default</layout>
    </repository>
  </repositories>

updatePolicy :此元素指定更新应尝试发生的频率。 Maven会将本地POM的时间戳(存储在存储库的maven-metadata文件中)与远程数据进行比较。选项包括:always,daily(默认),interval:X(其中X是以分钟为单位的整数)或从不。