如何使用依赖的maven uber pom?

时间:2012-05-03 08:48:36

标签: maven maven-2 pom.xml parent-pom

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

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

同样,我已将所有其他9个罐子安装到我的本地仓库。这是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文件中引用这个超级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下载第三方工件依赖项,然后失败。因为在中央仓库中没有可以找到这种坐标的工件。

我也尝试过使用uber-pom作为插件依赖,因为我很绝望。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

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

我不确定您是否忘记将此修改为您的示例,但“uberpom”定义的com.foo.bar为groupId,插件上的用法为com.oracle.weblogic.test。这可能是一个错字。我还假设所有第三方依赖项都已正确安装(请检查它们的pom)。

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

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

答案 1 :(得分:0)

父POM中的groupId与父POM的引用中的groupId不匹配。 groupId,artifactId和version必须完全匹配,以便Maven找到父级。

答案 2 :(得分:0)

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

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

手动检查您的maven仓库以查看它们是否正确安装。