【问题标题】:Maven looks for jar that isn't present in the repositoryMaven 查找存储库中不存在的 jar
【发布时间】:2016-06-23 09:27:42
【问题描述】:

我在 Artifactory 上为我的 Maven 项目设置了一个存储库。我已经在我的 settings.xml 的<repositories> 标记中为其中一个项目声明了这个 repo,我在我的 POM 中创建了对其他项目(比如 projectA)的依赖项以获得快照版本。对于这个项目A,Artifactory 上只有POM 工件,没有jar。仍然当我编译我的 POM 时,Maven 尝试下载该项目的 jar 并失败说它找不到它。

我将很快粘贴确切的 POM、错误、settings.xml 和 repo 视图。知道有什么问题吗?

【问题讨论】:

  • 您所依赖的工件类型是什么?如果它是 JAR 类型(默认),当然 Maven 会尝试下载它。
  • 在我的包装领域我没有定义任何东西。你问的是这个吗?
  • 这意味着依赖实际上是或类型 jar 对吗?如果您声明了对 jar 工件的依赖关系,那么 Maven 尝试下载它会出现什么问题?
  • 没有足够的信息来解决这个问题。如果您尝试下载的 jar 是您的代码,则在某些时候您需要将其部署在 artifactory 上。如果它正在您的工件上寻找公共工件,那么您的 settings.xml 中可能存在配置问题,并且您的 maven 安装未从 maven repo 中心检索工件。
  • 据我了解,您正试图将 pom 包装作为依赖项。那么 drorb 的回答是有效的。如果不是 jar,则必须指定类型。

标签: maven maven-2 maven-3 artifactory artifacts


【解决方案1】:

如果你想拥有 pom 类型的依赖,你需要显式声明它。例如:

<dependency>
   <groupId>com.mycompany</groupId>
   <artifactId>my-artifact</artifactId>
   <version>1.0</version>
   <type>pom</type>
</dependency>

如果未指定类型,Maven 将使用默认值 jar。

从 OP 编辑​​:请注意,我使用 IntelliJ,即使设置正确,它也使用了一些旧的(可能是缓存的)settings.xml。我从命令行运行,它选择了正确的。

【讨论】:

  • 我同意这一点,当涉及到与 Maven 交互以构建您的最终包时,我总是更喜欢命令行而不是任何 IDE - 这样您就有更多的保证可以构建任何其他机器(主要是运行 CI 的机器)。
猜你喜欢
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 2012-01-10
  • 2012-08-10
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多