Maven存储库位置困难

Eri*_* J. 3 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
Run Code Online (Sandbox Code Playgroud)

/ 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>
Run Code Online (Sandbox Code Playgroud)

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

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

跑步时

mvn release:prepare
Run Code Online (Sandbox Code Playgroud)

我收到警告:

[INFO]注意:Maven正在离线模式下执行.任何尚未存在于本地存储库中的工件都将无法访问.

跑步时

mvn release:perform
Run Code Online (Sandbox Code Playgroud)

我收到错误:

部署工件时出错:无法传输文件:http:// OldRepo

在哪里可以隐藏http:// OldRepo

编辑

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

<parent>
    <groupId>MyParent</groupId>
    <artifactId>maven</artifactId>
    <version>20090727</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

没有提及

<distributionManagement>
Run Code Online (Sandbox Code Playgroud)

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

Pas*_*ent 8

关于repositoriesprofile声明的内部settings.xml,文档说:

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

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

编辑:你可以覆盖distributionManagement你的pom,但最好在父pom中修改它,并在你的企业存储库中发布这个新版本,如果这是一个明确的变化.