在Teamcity中使用依赖库构建jar

问题描述 投票:0回答:1

我正在使用IntelliJ和Maven来构建一些Java库和应用程序。应用程序jar依赖于在app的pom.xml声明中本地构建的库:

<dependency>
<groupId>GrpID</groupId>
<artifactId>ResultsExporterLib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

在本地构建,一切正常,因为我在maven的.m2 \ settings.xml中定义了标签“<localRepository>”。

但是,当我尝试使用TeamCity构建管理系统构建.jar应用程序时,我在Teamcity构建日志中收到以下错误:

[步骤1/3] [错误] [步骤1/3]无法在项目上执行目标健康检查:无法解决项目的依赖关系GrpID:ResultsExporterLib:jar:1.0-SNAPSHOT:找不到工件GrpID:ResultsExporterLib:jar:1.0 -SNAPSHOT [14:12:05] [第1/3步] [错误]有关错误和可能解决方案的更多信息,请阅读以下文章:[14:12:05] [第1/3步] [错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException [14:12:05] [步骤1/3]进程退出代码1

请注意,该库已在Teamcity的“工件依赖关系”(对于应用程序)中进行了配置,如下所示:

"Depend on: " => package ResultsExporterLib
"Get artifacts from:" => "Latest Successful build"
"Artifacts rules: " => "+:ResultsExporterLib-1.0-SNAPSHOT-jar-with-dependencies.jar"

有关如何解决Teamcity构建错误的任何想法/建议吗?是否与Teamcity的存储库配置有关?

maven teamcity
1个回答
1
投票

TeamCity中的工件依赖项只是您可以从一个构建传递到另一个构建的文件/存档。如果你不将它们提取到正确的文件夹,Maven将找不到它们 - 这无论如何都不是这个想法。

Maven通过存储库交换工件(相同的词,完全不同的东西)。本地代理或存储库代理(Nexus,Artifactory等)。您需要将依赖项发布到此类存储库,以便maven可以找到它。

如果您运行依赖项(mvn install)的构建,然后在同一代理上运行依赖构建,那么更快的工作方式。这样,工件将位于代理的本地maven存储库中。您可以在teamcity中的快照依赖项中定义此限制。根本不需要工件依赖性。

所以:构建A - > build(在同一代理上构建时的快照依赖关系)现在应该做。

这只能是现在的解决方法。 maven的工件需要进入存储库。此存储库在settings.xml中的teamcity中配置,您可以传递maven构建步骤,以便它可以解析内部maven工件。

希望它有效:)

© www.soinside.com 2019 - 2024. All rights reserved.