我没有广泛使用 Maven
目前有 5 个不同的 maven 项目,每个项目都有不同的 pom.xml。截至目前,它们之间存在依赖关系,如果需要,每个都在 <dependency> 中指向另一个。
目前我们不喜欢的是
- 当我们发布一个子 projectA 时,我们需要手动修改所有具有 projectA 作为依赖项的项目以使用新版本。Saw Maven 有一个版本插件,不知道会有什么帮助。
- 作为一种解决方案,我希望在 poms 之间有一个更清洁的组织,并可能避免上述问题。
我的想法是(可能不正确)
其中粗箭头表示父子关系,细箭头表示子模块。但这似乎不起作用,请参阅下面的代码和错误
儿童项目 2 pom
<groupId>ChildProject2</groupId>
<artifactId>ChildProject2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>Parent</groupId>
<artifactId>Parent</artifactId>
<version>${parent.version}</version>
<relativePath>../Parent/pom.xml</relativePath>
</parent>
<dependencies> ... </dependencies>
ChildProject2 - Error Project build error: Non-resolvable parent POM: Failure to transfer Parent:Parent:pom:${parent.version} from http://repo1.maven.org/maven2被缓存在本地存储库中,解析不会重新尝试,直到经过中央的更新间隔或强制更新。原始错误:无法将工件 Parent:Parent:pom:${parent.version} 从/到中央(http://repo1.maven.org/maven2)传输:索引 45 处路径中的非法字符: http://repo1 .maven.org/maven2/Parent/Parent/ ${parent.version}/Parent-${parent.version}.pom 和 'parent.relativePath' 指向错误的本地 POM
家长会
<groupId>Parent</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<parent.version>0.0.1-SNAPSHOT</parent.version>
</properties>
<modules>
<module>../ChildProject2</module>
<module>../ChildProject1</module>
</modules>
<dependencies> ... </dependencies>
GrandParent2 pom
<groupId>GrandParent2</groupId>
<artifactId>GrandParent2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<grandparent2.version>0.0.1-SNAPSHOT</grandparent2.version>
</properties>
<modules>
<module>../Parent</module>
</modules>
<dependencies>... </dependencies>
ParentMain.java
public class ParentMain {
public static void main(String[] args) {
DocumentFactory df = new DocumentFactory();
ChildProject1Main cp1 = new ChildProject1Main();
ChildProject2Main cp2 = new ChildProject2Main();
}
}
ParentMain - 错误
- ChildProject1Main 无法解析为类型
- ChildProject1Main 无法解析为类型
我目前正在使用Maven 版本2.2.1(如果可以使用升级的 maven 版本解决此问题,则可以升级) 下面的评论之一说可以使用“诸如 Jenkins 和 TeamCity 等 CI 工具”来解决这个问题.. 任何指针(示例) 如何使用 Maven ( 和或 Hudson ) 解决这个问题?
我在做什么错,如何为此类项目依赖项获得最佳设计