【问题标题】:Missing maven dependency using nexus setup使用 nexus 设置缺少 maven 依赖项
【发布时间】:2010-09-14 00:30:28
【问题描述】:

我正在尝试构建一个 maven 项目来测试一些测试软件 - Arquillian。

我设置了 nexus 并将 jboss 存储库添加到公共组的底部。

当我运行mvn test 时,我收到此错误:

Missing:
----------
1) com.sun.istack:istack-commons-runtime:jar:1.1-SNAPSHOT

  Try downloading the file manually from the project website.

  Then, install it using the command:
      mvn install:install-file -DgroupId=com.sun.istack -DartifactId=istack-commons-runtime -Dversion=1.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there:
      mvn deploy:deploy-file -DgroupId=com.sun.istack -DartifactId=istack-commons-runtime -Dversion=1.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency:
        1) org.jboss.arquillian.sandbox.showcase:arquillian-sandbox-showcase-jsf:jar:1.0.0-SNAPSHOT
        2) org.jboss.jbossas:jboss-as-client:pom:6.0.0.20100721-M4
        3) org.jboss.jbossas:jboss-as-iiop:jar:client:6.0.0.20100721-M4
        4) org.jboss.jbossts:jbossjts:jar:4.11.0.Final
        5) org.jboss.ws.native:jbossws-native-core:jar:3.3.0.CR1.SP2
        6) com.sun.xml.ws:jaxws-rt:jar:2.2
        7) com.sun.xml.ws:policy:jar:2.0-b01
        8) com.sun.istack:istack-commons-runtime:jar:1.1-SNAPSHOT

我检查了 java.net maven 2 存储库,它肯定是 there

但是,当我导航到我的本地 nexus 公共组时,它不存在。

我该如何解决这个问题?这个问题的原因是什么?我对此感到困惑,因为我更习惯于使用 ant+ivy。

mvn 的完整输出是here

【问题讨论】:

  • 不确定这是否重要,在我当地的 nexus 组的排序中,maven central 高于 java.net m2。 Maven 中心有一个 org/sun/istack/ 包,但 istack-commons-runtime 不存在。

标签: testing maven-2 nexus dependency-management


【解决方案1】:

我显然遇到了完全相同的问题。我解决了。 就我而言,问题在于托管 istack-common-runtime-1.1.0-SNAPSHOT 的存储库在配置的 nexus 代理存储库中被标记为“发布”。因此,nexus 忽略了该存储库中的所有快照。 我刚刚配置了另一个代理存储库,指向包含 istack-common-runtime-1.1.0-SNAPSHOT 的同一存储库,但在配置时将其标记为“SNAPSHOT”。然后我将这个新代理添加到我的“SNAPSHOT”组中。

在我的 settings.xml 中,我在公共关系组上有一个存储库,在快照组上有另一个:

<profiles>
    <profile>
        <id>nexus</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>release</id>
                <url>http://nexus-server/nexus/content/groups/public</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>snapshots</id>
                <url>http://nexus-server/nexus/content/groups/public-snapshots</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>
</profiles>

希望有帮助

【讨论】:

  • 这为我解决了。我在 Nexus 中创建了另一个代理存储库,指向相同的 URL,但使用存储库策略“快照”并将其添加到公共组。
【解决方案2】:

如果您使用 nexus 网络界面搜索它,它会显示吗?我在我们的 nexus 安装中看到了这样的情况,其中一个工件看起来像这样丢失了,但出现在搜索结果中。如果我随后通过浏览器从搜索结果中下载它,它会神奇地开始在 maven 命令行中运行。

我敢肯定,这不是您想听到的强大解决方案,但至少值得一试。

【讨论】:

  • Matt,不,它不会出现在 nexus 搜索中。检查本地文件系统显示它也不存在。通过 Web 界面导航也不会显示。就好像它不存在或者它读错了远程存储库。但是,当我为 java.net maven 2 存储库使用“浏览远程”时,它确实存在!
  • 我想我会提交一个错误,那么。 :-/
【解决方案3】:

如果您已将 JBoss 存储库添加到 Nexus,您是否记得配置您的公共存储库组以包含它?

截图如下:

【讨论】:

  • 感谢您的回复,正如我在第二句话中提到的,我已将 jboss 公共存储库组添加到我的本地公共存储库组中。
【解决方案4】:

您是否在公司防火墙后面?可能需要在 Nexus 中配置 HTTP 代理(请参阅服务器管理屏幕)

【讨论】:

  • 我已经配置了一个 HTTP 防火墙,它已经下载了很多其他的工件。
【解决方案5】:

最终成为一个糟糕的依赖项。我必须手动添加它才能让它全部工作。太可怕了!

【讨论】:

  • 呃,已经快一年了,现在我遇到了这个@#$%^ 问题。还没修好?您能说一下您手动添加的内容以使其正常工作吗?谢谢。
  • 我不得不将 jaxws-rt 版本从 2.2 更改为 &lt;version&gt;2.2.7-promoted-b73&lt;/version&gt; 来解决这个问题。
猜你喜欢
  • 2019-04-09
  • 2014-06-10
  • 2012-12-15
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多