Maven存储库位置困难

时间:2009-10-19 19:06:21

标签: maven-2 repository

我正在重新配置很久以前其他人设置的构建服务器,以使用新的Maven存储库。但是,旧的存储库仍然被引用,我无法弄清楚该引用的来源。

M2_HOME =的/ usr /共享/ maven2的

/etc/maven2/m2.conf (usr / share / maven2 / conf / m2.conf链接在这里)

main is org.apache.maven.cli.MavenCli from plexus.core

set maven.home default ${user.home}/m2

[plexus.core]
load ${maven.home}/lib/*.jar

/ etc / maven2 / conf还有一个settings.xml,其中所有条目都被注释掉了。

构建用户有一个〜/ .m2 / settings.xml:引用 NewRepo

<settings>
    <pluginGroups>
    </pluginGroups>
    <servers>
    </servers>
    <profiles>
        <profile>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <id>personal</id>
            <repositories>
                <repository>
                    <id>new-repo</id>
                    <name>New Maven 2 Repo</name>
                    <url>http://NewRepo/</url>
                </repository>
      <!-- Some other standard repos like maven.org here -->
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>ibiblio</id>
                    <name>Ibiblio Maven 2 Repo</name>
                    <url>http://repo1.maven.org/maven2/</url>
                </pluginRepository>
                <pluginRepository>
                  <id>apache-snapshots</id>
                  <name>Apache Snapshots Maven 2 Repo</name>
                  <url>http://people.apache.org./maven-snapshot-repository/</url>
                </pluginRepository>
            </pluginRepositories>
         </profile>
     </profiles>
</settings>

还有一个/mnt/public/maven/settings.xml,其内容与构建用户的settings.xml完全相同

我搜索了整个文件系统,以确保没有其他settings.xml文件。

运行时

mvn release:prepare

我收到警告:

  

[INFO]注意:Maven正在执行   离线模式。任何文物都没有   已经在你的本地存储库中了   无法访问。

运行时

mvn release:perform

我收到错误:

  

部署工件时出错:无法执行   转移文件:http:// OldRepo

http:// OldRepo 的引用哪里可以隐藏?

修改

项目的pom.xml引用父POM,如下所示:

<parent>
    <groupId>MyParent</groupId>
    <artifactId>maven</artifactId>
    <version>20090727</version>
</parent>

没有提及

<distributionManagement>

在项目的POM中。我无法找到父POM。

2 个答案:

答案 0 :(得分:8)

profile中宣布的settings.xml内的repositories左右,文档说:

  

存储库是Maven用来填充构建系统的本地存储库的项目的远程集合。它来自这个本地存储库,Maven称之为插件和依赖项。不同的远程存储库可能包含不同的项目,在活动的配置文件下,可能会搜索匹配的版本或快照工件。

因此,这不用于发布管理。要配置部署工件的位置,您需要在pom中添加distributionManagement元素。

以下是如何在项目pom.xml文件中配置distributionManagement元素的示例。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Application</name>
  <url>http://app.mycompany.com</url>
  ...
  <distributionManagement>
    <repository>
      <id>myRepoId</id>
      <name>myCompanyReporsitory</name>
      <url>ftp://repository.mycompany.com/repository</url>
    </repository>
  </distributionManagement>
  ...
</project>

在您的pom或父pom中查找此元素(可以在公司父pom中声明)。

编辑:您可以覆盖pom中的distributionManagement,但最好在父pom中修改它并在企业存储库中发布此新版本(如果这是一个权威性的)更改。

答案 1 :(得分:0)

也许愚蠢的建议,但你有没有尝试过你的老朋友grep,如果可以的话?