2012-05-03 45 views
0

我有一个简单的maven插件,而这又取决于父pom文件。父pom文件有10个(第10个)第三方jar依赖项,这些依赖项已使用以下命令安装在本地repo中。如何使用maven uber pom与依赖关系?

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下载第三方工件依赖关系,随后失败。因为在中央回购中没有可以找到这种协调的人为因素。

我也曾尝试使用超级pom作为插件依赖项,因为我很绝望。有任何想法吗?

+0

如果我看上去正确,你已经安装了foo.jar,但是不要在你的父pom中引用这个工件,只有foo1.jar,foo2.jar等等。此外,你已经安装了mavenn-uber-pom,通过mvn安装在你的本地储存库?如果你有第三方的jar文件,那么我建议你特别使用版本库管理器,这可能在maven central中不可用。 – khmarbaise

+0

谢谢你指出我。这是一个错字,编辑了这个。实际上我已经安装了maven install的所有jar:install-file到我的本地仓库。 – JourneyMan

+0

'mvn install'是否在父POM项目上运行?如果没有,那么它不会被发现。 –

回答

0

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

我不确定您是否忘记将其适用于您的示例,但“uberpom”定义为com.foo.bar作为groupId且插件上的用法为com.oracle.weblogic.test。这可能是一个错字。我也假设你所有的第三方依赖都被正确安装(检查他们的pom)。

只是为了它,请检查您的settings.xml中是否设置了<localRepository>。通常情况下,你不必设置它,但可以尝试一下。

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

+0

我有我的localrepository设置为自定义位置。我编辑了groupIds以匹配。这是一个错字:-(我的坏 – JourneyMan

0

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

+0

谢谢你指出这一点。我已经匹配他们,仍然发现在中央存储库搜索罐。 – JourneyMan

0

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

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

手动检查您的Maven回购罐的罐子,看他们是否正确安装。