如何使用Gradle将依赖项Artifact上传到Maven Repository(NEXUS)?
问题描述:
我想从一个Nexus存储库下载一个工件,并使用Gradle将其上传到另一个工作站。如何使用Gradle将依赖项Artifact上传到Maven Repository(NEXUS)?
我的摇篮建立文件如下:
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和版本罐子。它还将其上传到正确的位置。
问题:
上传的罐子是将要上传包含实际罐子一个归档。
例如,如果我想下载artifact.jar
并上传到另一个关系库,脚本上传的artifact.jar
正确的关系库,但如果我下载上传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”任务,以指定的神器被上传,我直接通过文件作为参数传递给maven_artifact
任务的artifact
方法。
答
我,因为扩展了这一解决方案,包括所有的文物
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
})
}
}