0

我正在尝试将 nexus 集成到一个 maven 项目中并且遇到问题,希望这里有人可以提供帮助。

最初我让我的 Mavensettings.xml文件只使用本地存储库:

<settings>
  <localRepository>C:\\r</localRepository>
  ...
</settings>

这工作正常,我项目的所有依赖项都下载到本地存储库中。我通过删除maven-settings-2.2.1工件的目录并mvn -U dependency:list再次运行来验证这一点:

下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom(3 KB,11.3 KB/秒)
下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar
下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar(48 KB,509.5 KB/秒)

从上面可以看出,工件的pom.xmland.jar文件maven-settings-2.2.1已经下载。

接下来,我尝试将我的 maven 项目配置为指向我设置的 nexus 存储库:

<settings>
  <localRepository>C:\\r</localRepository>
  <mirrors>
    <mirror>
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <url>http://<server>:<port>/nexus/content/groups/public</url>
</mirror>
  </mirrors>
  ...
</settings>

我从本地存储库中删除了maven-settings-2.2.1工件,然后mvn -U dependency:list再次运行:

下载:http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
下载:http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom(3 KB,17.0 KB/秒)
下载:http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar

[错误] 无法在项目上执行目标:无法解析项目的依赖项:无法解析以下工件:org.apache.maven:maven-settings:jar:2.2.1: 找不到工件 org.apache.maven :maven-settings:jar:2.2.1 在 nexus (http://:/nexus/content/groups/public) -> [帮助 1]

这一次,nexus 可以下载pom.xml文件maven-settings-2.2.1神器,但不能下载.jar文件。我检查了 nexus 服务器,当我浏览“中央”存储库的远程内容时,我可以看到maven-settings-2.2.1工件(包括文件) pom.xml.jar但在 nexus 本地存储中,我pom.xml只看到文件。

因此,我查看了 nexus 文档(请参阅http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html)并按照建议使用 nexus 配置文件设置我的 maven 设置:

<settings>
  ... as before ...
  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
</settings>

我再次删除了maven-settings-2.2.1工件的任何本地副本,然后运行mvn -U dependency:list

下载:http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
下载:http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
下载:http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar

[错误] 无法在项目上执行目标:无法解析项目的依赖项:无法解析以下工件:org.apache.maven:maven-settings:jar:2.2.1: 找不到工件 org.apache.maven :maven-settings:jar:2.2.1 在 nexus (http://:/nexus/content/groups/public) -> [帮助 1]

和以前一样,pom.xml是从nexus 下载的,但不是.jar文件。和以前一样,当我检查 nexus 服务器上的本地存储时,pom.xml文件存在,但文件不存在.jar

作为健全性测试,我从我的 mavensettings.xml中删除了 nexus 配置,从我的本地存储库中删除了maven-settings-2.2.1工件,然后再次尝试:

下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar
下载:http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar

这一次,pom.xml和`.jar 文件都是直接下载的。

所以我不确定我需要做什么来解决这个问题:当使用本地存储库并让 maven 直接下载依赖项时,我可以下载工件的pom.xml.jar文件。maven-settings-2.2.1当我将我的 nexus 服务器添加到组合中时,只有pom.xmlnexus 下载。

这是一个关系服务器配置问题,还是一个 Maven 配置问题?

4

1 回答 1

1

首先,您误解了 Local Repository 的含义。

即使您使用的是 Nexus,您仍然拥有一个本地存储库。本地存储库只是您自己机器中的一个存储库,用于存储 Maven 将用于构建的所有工件。如果需要依赖项并且本地存储库中不可用,Maven 将联系远程存储库以尝试获取依赖项。获取后,将其放入本地 repo,以便 Maven 可以继续其构建过程。

您可能也误解了一件事:即使您删除了 nexus 设置,Maven 仍将从默认远程存储库下载,即所谓的 Maven Central ( http://repo.maven.apache.org/maven2 )。

我相信,整个问题只是你没有正确设置你的 Maven 来使用关系。从您引用的配置中:

<url>http://<server>:<port>/nexus/content/groups/public</url>

Maven中的错误消息:

[ERROR] ...  Could not find artifact ... in nexus (http://:/nexus/content/groups/public) -> [Help 1]

根本没有正确设置 nexus 的主机名和端口。

解决这个问题,一切都应该工作

如果这样的问题是因为您屏蔽了数据,那么问题将与您安装的nexus有关。进入 Nexus 的控制台站点,通过浏览您设置的代理的远程文件来验证您是否正确设置了代理。检查您是否也将 Maven 中心作为“公共”代理组中的代理之一

于 2013-07-11T02:41:12.183 回答