我可以在根项目的依赖关系管理部分中添加子公共项目

时间:2013-12-27 06:32:01

标签: maven maven-surefire-plugin maven-dependency-plugin

我正在开发一个有多个项目的应用程序。 我正在尝试为根POM中的一个常见项目添加依赖关系管理,以便我可以确保所有项目使用相同的版本。

Root / parent pom包含

 <groupId>com.citylimited</groupId>
    <artifactId>maven-master-project</artifactId>
    <version>12.3.2-SNAPSHOT</version>
    <packaging>pom</packaging>    
    <name>Maven Master Project</name>
     <dependencyManagement>
            <dependencies>
                <!-- COMPILE Dependencies -->
                <dependency>
                    <groupId>com.city.common</groupId>
                    <artifactId>common-project-jar</artifactId>
                    <version>${project.version}</version>
                    <scope>compile</scope>
                </dependency>
         </dependencies>
     <dependencyManagement>

当我从我的共同项目中进行maven构建时,它会失败,如下所示。

    [ERROR] Failed to execute goal on project common-project-jar: Could not resolve dependencies for project com.citylimited:common-project-jar:jar:12.3.2-SNAPSHOT
: Failure to find com.citylimited:common-project-jar:jar:12.3.2-SNAPSHOT in http://server1/nexus/content/groups/public was cached in the local repository, re
solution will not be reattempted until the update interval of internal-city-repository has elapsed or updates are forced -> [Help 1]
[ERROR]

问题:

  • 导致上述问题的原因是什么?
  • 我可以在根项目的依赖关系管理部分添加子公共项目并引用所有其他子项目吗?

2 个答案:

答案 0 :(得分:2)

它应该有效,因为dependencyManagement没有声明实际的依赖关系,而只是说“如果有人会要求它 - 那就是版本”。从错误日志中看来,您不仅添加了dependencyManagement,还添加了对pom的实际依赖关系 - 它查找common-jar项目本身的common-jar依赖项。

答案 1 :(得分:0)

AFAIK,你不能这样做。在实践中,罐子还没有建成,所以它不存在 无论如何,使用$ {project.version}将jar声明为任何子模块中的依赖项将确保它们都得到它(正确的版本)。
只需确保jar在其他人使用之前构建(反应堆构建顺序)。

我希望这会有所帮助。