我正在尝试从一个Nexus存储库下载工件,并使用Gradle将其上传到另一个工具库。
My Gradle构建文件如下:
dependencies {
compile group: ARTIFACT_GROUP_ID, name: ARTIFACT_ARTIFACT_ID, version: ARTIFACT_VERSION
}
// Get dependency Artifact file
task upload_artifact(type: Jar){
from(file(project.configurations.compile.find { it.name.startsWith(ARTIFACT_ARTIFACT_ID+"-"+ARTIFACT_VERSION) }))
}
// Finally publish the artifact
publishing {
repositories{
maven{
url NEXUS_URL
credentials {
username NEXUS_USER
password NEXUS_PASSWORD
}
}
}
publications {
maven_artifact(MavenPublication) {
//GAV Co-ordinates to use to publish the artifact
artifact upload_artifact
groupId ARTIFACT_GROUP_ID
artifactId ARTIFACT_ARTIFACT_ID
version ARTIFACT_UPLOAD_VERSION
}
}
}
上传工作,它上传一个具有正确组,工件ID和版本的Jar。它还会将其上传到正确的位置。
问题:
上传的jar是一个包含要上传的实际jar的存档。
例如,如果我想下载artifact.jar
并将其上传到另一个nexus存储库,脚本会将artifact.jar
上传到正确的nexus存储库,但如果我下载上传的artifact.jar
并且打开存档,我会在其中找到已下载的artifact.jar
。
答案 0 :(得分:0)
我解决了这个问题。更新后的脚本如下:
dependencies {
compile group: ARTIFACT_GROUP_ID, name: ARTIFACT_ARTIFACT_ID, version: ARTIFACT_VERSION
}
// Finally publish the artifact
publishing {
repositories{
maven{
url NEXUS_URL
credentials {
username NEXUS_USER
password NEXUS_PASSWORD
}
}
}
publications {
maven_artifact(MavenPublication) {
//GAV Co-ordinates to use to publish the artifact
artifact file(project.configurations.compile.find { it.name.startsWith(ARTIFACT_ARTIFACT_ID+"-"+ARTIFACT_VERSION) })
groupId ARTIFACT_GROUP_ID
artifactId ARTIFACT_ARTIFACT_ID
version ARTIFACT_UPLOAD_VERSION
}
}
}
而不是使用" upload_artifact"任务指定要上传的工件,我直接将该文件作为参数传递给artifact
任务的maven_artifact
方法。
答案 1 :(得分:0)
我自从扩展此解决方案以包含所有工件
apply plugin: 'java'
apply plugin: 'maven-publish'
dependencies {
runtime 'log4j:log4j:1.2.17'
runtime 'junit:junit:4.12'
}
repositories {
flatDir {
dirs project.projectDir
}
}
publishing {
repositories {
maven {
url 'http://example.org/nexus/content/repositories/foo-releases'
credentials {
username 'username'
password 'password'
}
}
}
configurations.runtime.allDependencies.each {
def dep = it
def file = file(configurations.runtime.find { it.name.startsWith("${dep.name}-${dep.version}") })
publications.create(it.name, MavenPublication, {
artifact file
groupId dep.group
artifactId dep.name
version dep.version
})
}
}