Maven依赖问题 - 在中央仓库中找不到工件

时间:2013-09-14 01:34:57

标签: java maven

我正在尝试从此网站http://www.joptimizer.com/usage.html构建项目。我下载了来源jar文件,将其解压缩并在根文件夹中运行maven package。 Maven在最后一分钟失败,说无法解决依赖问题。

could not find artifact seventytwomiles:architecture-rules:jar:3.0.0-M1 in central repo - repo.maven.apache.org/maven2 .. 

我有一种感觉,我可能需要在pom.xml文件中更改某些内容才能使用,但不知道是什么。谷歌搜索这个缺少的依赖导致我没有。一般来说,如何知道如何处理此类错误(并请帮助解决此特定情况)。

3 个答案:

答案 0 :(得分:6)

具体地

根据http://www.joptimizer.com/usage.html上的Building说明:

  

JOptimizer基于maven 3.0构建。在构建之前,您必须解决   (在pom.xml中)对Colt和其他依赖项的外部依赖   不在公共存储库中的。请参阅“依赖关系”   报告完整治疗。 易于使用的边界   提供这些外部库(访问“下载”):解压缩   在文件夹中绑定并运行“maven-install.cmd”(将其翻译成   你自己的shell语言),你将获得当地的工件   库中。

要获取此包,请转到http://sourceforge.net/projects/cvxopt/files/,然后下载相应版本的joptimizer-3.X.X-dependencies.zip。在您自己的文件夹中解压缩,然后运行mvn install:install-file -DgroupId=seventytwomiles -DartifactId=architecture-rules -Dversion=3.0.0-M1 -Dpackaging=jar -Dfile=architecture-rules-3.0.0-M1.jar -DpomFile=architecture-rules-3.0.0-M1.pom

一般

使用http://mavenrepository.com之类的工具搜索缺少的依赖项的其他版本,并使用正确的版本更新您的POM。如果MVNRepository不知道它,您可以自己安装依赖项。如果您正在与一组开发人员合作,正如Eric Jablow所提到的,像Nexus或Artifactory这样的工件库非常适合共享非公共依赖项。如果只是您,您可以按照此处所述在本地仓库中安装工件:How to manually install an artifact in Maven 2?

答案 1 :(得分:1)

您应该添加自己的存储库管理器,如Nexus或Artifactory。然后,找出保留这种依赖的位置;有中央以外的存储库。如果它保存在另一个存储库中,那么也要使您的存储库镜像。

否则,Nexus或Artifactory具有手动输入依赖关系的命令。创建一个名为“第三方”的本地存储库并将其添加到那里。

最后,更改您的settings.xml文件以将所有内容引用到您的存储库管理器。

最常见的情况是公司拒绝将其产品许可证保存在中央存储库中。例如,Microsoft不会通过Central分发其sqljdbc.jar文件。所以,你需要手工添加它。

答案 2 :(得分:0)

按以下方式更改依赖关系

<dependency>
  <groupId>org.architecturerules</groupId>
  <artifactId>architecture-rules</artifactId>
  <version>3.0.0-rc1</version>
  <scope>test</scope>
</dependency>

在pom中添加存储库

  <repositories>
    <repository>
      <id>architecturerules.googlecode.com</id>
      <url>http://architecturerules.googlecode.com/svn/maven2/</url>
    </repository>
 </repositories>