Atlassian Bamboo无法使用分类器解析依赖关系

时间:2018-06-14 12:16:29

标签: maven bamboo

我有一个非常好的多模块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/

奇怪的是,本地存储库中存在所需的工件,但看起来竹子甚至都没有尝试使用它。

我尝试启用和禁用本地存储库隔离,但没有任何更改。

我真的不知道现在该做什么,任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

因此,问题出在pom的classifier标签上,但是让我们更好地解释一下实际的项目结构:

父pom(除其他外)有2个子项目,例如:

myApp 
+ artifact1 
+ artifact2 

artifact1maven-jar-plugin会生成几个包,因为出于传统原因,我们需要从每个jar中排除一些类。因此,结果是

artifact1-legacy.jar
artifact1.jar

其中legacycomplete是通过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>

这解决了我的问题。 希望这对遇到类似问题的人有所帮助。