我正在尝试从一个Nexus存储库下载 Artifact ,然后使用Gradle将其上传到另一个。
我的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
}
}
}
Upload有效,它将上传具有正确组, Artifact ID和版本的Jar。它还会将其上传到正确的位置。
问题:
上传的jar是包含要上传的实际jar的存档。
例如,如果我要下载
artifact.jar
并将其上传到另一个nexus存储库,则脚本会将artifact.jar
上传到正确的nexus存储库,但是如果我下载了上传的artifact.jar
并打开了文件,则可以在其中找到下载的artifact.jar
。
最佳答案
我解决了这个问题。更新后的脚本如下:
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 ,而是直接将文件作为参数传递给
artifact
任务的maven_artifact
方法。
关于maven - 如何使用Gradle将依赖 Artifact 上传到Maven存储库(NEXUS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36874217/