我正在开发一个有多个项目的应用程序。 我正在尝试为根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]
问题:
答案 0 :(得分:2)
它应该有效,因为dependencyManagement
没有声明实际的依赖关系,而只是说“如果有人会要求它 - 那就是版本”。从错误日志中看来,您不仅添加了dependencyManagement
,还添加了对pom的实际依赖关系 - 它查找common-jar项目本身的common-jar依赖项。
答案 1 :(得分:0)
AFAIK,你不能这样做。在实践中,罐子还没有建成,所以它不存在
无论如何,使用$ {project.version}将jar声明为任何子模块中的依赖项将确保它们都得到它(正确的版本)。
只需确保jar在其他人使用之前构建(反应堆构建顺序)。
我希望这会有所帮助。