0

我有一个简单的 maven 插件,它又依赖于父 pom 文件。父 pom 文件有十个(10 个)第 3 方 jar 依赖项,它们已使用以下命令安装在我的本地存储库中。

mvn install:install-file -Dfile=foo.jar -DgroupId=com.foo.bar -DartifactId=foo1.jar -Dversion=1.1.0.0 -Dpackaging=jar

同样,我已将所有其他 9 个 jar 安装到我的本地仓库中。这是 uber pom.xml 文件。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.foo.bar</groupId>
  <artifactId>maven-uber-pom</artifactId>
  <packaging>pom</packaging>
  <version>1.1.0.0</version>
  <name>maven-uber-pom</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>com.foo.bar</groupId>
      <artifactId>foo1.jar</artifactId>
      <version>1.0.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.foo.bar</groupId>
      <artifactId>foo2.jar</artifactId>
      <version>1.0.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.foo.bar</groupId>
      <artifactId>foo3.jar</artifactId>
      <version>1.0.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.foo.bar</groupId>
      <artifactId>foo4.jar</artifactId>
      <version>1.0.0.0</version>
    </dependency>
   :
   :
  </dependencies>

我试图通过以下方式在我的插件的 pom.xml 文件中引用这个 uber pom:

<project>
  <parent>
    <groupId>com.foo.bar</groupId>
    <artifactId>maven-uber-pom</artifactId>
    <version>1.1.0.0</version>
  </parent> 
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.foo.bar</groupId>
  <artifactId>foo-maven-plugin</artifactId>
  <packaging>maven-plugin</packaging>
  <version>1.1.0.0</version>
  <name>foo bar plugin</name>
  <url>http://maven.apache.org</url>
</project>

在此之后,我尝试使用 pom.xml 文件安装我的插件

mvn install                  <command>

Maven 尝试从中央存储库http://repo1.maven.org/maven2下载第 3 方工件依赖项,但随后失败。因为没有可以在中央回购中找到这样的坐标的工件。

自从我绝望以来,我也尝试过使用 uber-pom 作为插件依赖项。有任何想法吗?

4

3 回答 3

0

父 POM 中的 groupId 和对父 POM 的引用中的 groupId 不匹配。groupId、artifactId 和 version 必须完全匹配才能让 Maven 找到父级。

于 2012-05-03T21:27:34.757 回答
0

默认情况下,Maven 将首先在本地存储库中搜索依赖项。如果没有找到,它将搜索您的全局/自定义存储库(默认情况下仅设置中央存储库)。你mvn install在uberpom上跑过吗?如果是这样,请检查它在本地仓库中的路径是否正确。

我不确定您是否只是忘记将其适应您的示例,但是“uberpom”定义具有com.foo.bargroupId 并且您的插件上的用法具有com.oracle.weblogic.test. 不过,这可能是一个错字。我还假设您所有的第 3 方依赖项都已正确安装(检查他们的 pom)。

只是为了它,检查是否<localRepository>在您的 settings.xml 中设置。通常你不必设置它,但试一试。

我不是任何专家,但我希望它有帮助!

于 2012-05-03T20:03:50.320 回答
0

尝试mvn install -o强制离线模式。Out 可能会指出问题所在。

当您运行 install-file 命令时,您是否指定了生成 pom 并生成校验和?

手动检查您的 Maven 存储库中的 jar 以查看它们是否正确安装。

于 2012-05-04T01:25:20.707 回答