Maven对其他Maven项目的依赖

时间:2016-10-06 10:28:36

标签: java eclipse maven maven-assembly-plugin

我有多个maven项目,要在它们之间添加依赖项,我只需将它添加到POM中,例如:

    <dependency>
        <groupId>com.company</groupId>
        <artifactId>XMLManagement</artifactId>
        <version>1.0</version>
    </dependency>

我正在使用eclipse,一切都运行良好,直到我尝试释放一个jar。

**问题1:** Maven抛出一个错误,因为它无法在本地存储库中找到它依赖的其他maven项目的jar, 这意味着我必须弄清楚项目之间的依赖关系,并按正确的顺序转到每个项目并运行&#34; mvn clean install&#34;

这似乎不合逻辑,因为这是maven的主要目的,必须有一种方法告诉maven自己做。

**问题2:**如果项目A依赖于依赖于C的B,并且我想在A中使用C然后在eclipse中足够我在A的POM中添加B并且它可以工作,但是当我运行时&#34; mvn clean install&#34; maven抛出一个错误,它缺少C的依赖性。 这意味着我必须添加A和C之间的依赖关系,这没有意义,因为在eclipse中我已经在&#34; Maven Dependencies&#34;下看到了它,所以如果eclipse认识到它为什么mvn clean install并不是&# 39;吨?

请注意,我能够在最后生产我需要的罐子,但是只有在经过如上所述的大量努力之后才能生产。

我知道我可以使用像nexus或ar​​tifactory这样的东西,但这对我来说太过分了,我希望能够在本地存储库中进行。

我正在寻找合适的方法来做任何建议吗?

2 个答案:

答案 0 :(得分:3)

您需要的是一个顶级pom,它列出了您希望构建为模块的每个内容。在maven术语中,这被称为reactor build

类似的东西:

function customSort(array, arrayOrder, numColumn) {
    var order = [];

    // transpose vertical 2d array into 1d array
    for (var i = 0; i < arrayOrder.length; i++) {
      order.push(arrayOrder[i][0]);    
    }

    // sort
    return array.sort(function (a, b) {
        return order.indexOf(a[numColumn-1]) - order.indexOf(b[numColumn-1]);
    });
}

答案 1 :(得分:1)

试试这个,找到你的文件 settings.xml 配置路径存储库的方法:

<localRepository>E:\repositoryMavem</localRepository>
  • 为此文件 settings.xml
  • 启用Eclipse(或使用的IDE)
  • 转到路径后,您的项目有pom.xml
  • run de command
 mvn install:install-file -Dfile=E:\repositoryMavem\XMLManagement-1.0.jar -DgroupId=com.company -DartifactId=XMLManagement -Dversion=1.0 -Dpackaging=jar 
  • 如果你想使用IDE Eclipse(你可以)。
  • 如果为工件运行清理,则需要再次运行安装