我有一个非常好的多模块maven项目。 使用maven-jar-plugin和maven-install-plugin组合后,其中一个模块经过轻微调整以产生不同的工件。
当我从root运行mvn install
时,所有模块都构建并存储在我的本地存储库中,并且包含其中一个工件的模块已成功构建。
现在,我将源代码链接到Bamboo,创建不同的任务,进行编译,测试,打包和部署。
问题是,当我运行“安装”任务时,这只是一个简单的mvn clean install -Pmy-profile -U
,它失败并显示以下消息:
Could not resolve dependencies for project my-group:artifact:jar:vers: Failure to find my-group:another-artifact:jar:classifier:vers in http://my-nexus/repository/maven-public/
奇怪的是,本地存储库中存在所需的工件,但看起来竹子甚至都没有尝试使用它。
我尝试启用和禁用本地存储库隔离,但没有任何更改。
我真的不知道现在该做什么,任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
因此,问题出在pom的classifier
标签上,但是让我们更好地解释一下实际的项目结构:
父pom(除其他外)有2个子项目,例如:
myApp
+ artifact1
+ artifact2
artifact1
到maven-jar-plugin
会生成几个包,因为出于传统原因,我们需要从每个jar中排除一些类。因此,结果是
artifact1-legacy.jar
artifact1.jar
其中legacy
和complete
是通过classifier
元素定义的。
现在的问题是:artifact2
依赖于artifact1-legacy,并使用classifier标签声明为依赖项,如下所示:
<dependency>
<groupId>my-group</groupId>
<artifactId>artifact1</artifactId>
<classifier>legacy</classifier>
<version>${project.parent.version}</version>
<scope>provided</scope>
</dependency>
尽管此配置可通过命令行,IDE等完美运行,但不适用于Atlassian Bamboo。
幸运的是,提供了依赖项,这意味着它已经有效地包含在其他位置,因此我通过删除classifier
标记来修复它,就像这样
<dependency>
<groupId>my-group</groupId>
<artifactId>artifact1</artifactId>
<version>${project.parent.version}</version>
<scope>provided</scope>
</dependency>
这解决了我的问题。 希望这对遇到类似问题的人有所帮助。