【问题标题】:Maven not able to inherit repositoryMaven 无法继承存储库
【发布时间】:2013-11-11 12:22:35
【问题描述】:

我的项目结构是这样的。

Artifact A
|- depends on hadoop-client.jar
|- cloudera repository is added to pom

pom.xml

 <repository>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <releases>
        <updatePolicy>always</updatePolicy>
    </releases>
    <id>central</id>
    <name>libs-release</name>
    <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>

现在,A 编译正常,已打包为 jar 并推送到工件(jfrog 一)

Artifact B
|- depends on A
|- doesn't have cloudera repo in pom

pom.xml

<dependency>
    <groupId>groupId</groupId>
    <artifactId>artifact_a</artifactId>
 </dependency>

Artifact B 无法使用 A 中添加的 repo 并在编译时出错。

"Could not find artifact org.apache.hadoop:hadoop-client:jar:2.0.0-cdh4.2.0"

我错过了什么吗? 不想在 Artifact B 的 pom 中添加 cloudera repo。

【问题讨论】:

  • 请附上你pom.xml的相关部分。
  • B的pom.xml中A的作用域是什么?
  • @MustafaGenç,没有添加范围,所以它认为它是默认的。
  • @MustafaGenç 我知道这一点。你在这里指的是哪一部分?

标签: java maven maven-2


【解决方案1】:

Maven 只从父 POM 继承存储库信息,而不是从依赖项。 您可以创建第三个 POM C,它声明存储库并从中继承 A 和 B - 这将起作用。

不久前掉进了同一个坑……;)

【讨论】:

  • 但是即使我们创建第三个 pom C 也不一样吗? A/B 必须从 C 继承 repo 信息
  • Maven 中有两种机制:1) 从父 pom 继承,2) 对另一个工件的依赖。 Repos 是通过 1) 继承的,但不是通过 2)。 1) 在 元素中设置,而 2) 在 元素中设置。
猜你喜欢
  • 2011-09-15
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2018-05-23
  • 2017-09-07
  • 2014-02-15
相关资源
最近更新 更多