我在不使用Gradle Jar任务的情况下构建了一个jar文件(我需要在我的任务中使用Ant任务)。如何配置uploadArchives以便能够在指定的存储库中安装JAR。
我试图用
覆盖默认工件uploadArchives {
repositories {
mavenDeployer {
// some Maven configuration
}
}
}
artifacts {
archives file: file('bin/result.jar')
}
但是我收到的错误是可能没有2个具有相同类型和分类器的工件,这意味着此配置会增加覆盖配置。
答案 0 :(得分:21)
你是对的,artifacts
闭包只能将工件添加到给定的配置中(参见ArtifactHandler API)。
您有两种选择:
1)按照here所述添加工件过滤器(参见第45.6.4.1节“每个项目的多个工件”)。如果您使用此功能,请尝试声明archives
配置,如:
artifacts {
archives file: file('bin/result.jar'), name: 'result', type: 'jar'
}
这样,您在工件过滤器中会出现类似的情况:
addFilter('result') {artifact, file ->
artifact.name == 'result'
}
2)将其作为单独的maven模块上传。如果result.jar
是您上传的唯一jar,这可能是一个很好的解决方案。
configurations {
resultArchives
}
uploadResultArchives {
repositories {
mavenDeployer {
repository(url: "same/url/here")
}
}
}
artifacts{
resultArchives file: file('bin/result.jar')
}
希望这有帮助。