maven - 如何使用Gradle将依赖 Artifact 上传到Maven存储库(NEXUS)?

标签 maven gradle nexus

我正在尝试从一个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/

相关文章:

maven-2 - Nexus + Maven + Hudson 的发布问题

java - Maven 版本不工作 - "Maven executable not found"

java - maven:如何在 .jar 中包含注释生成的 .java 文件

maven - 在这个 Artifact 包含过滤器 : o 'com. alibaba:dubbo 中从未触发以下模式

android - 按Android Studio的PLAY进行特定的调试

java - 将库添加到 netbeans gradle 项目

java - 从项目中删除 "src"文件夹

java - 如何使用Gradle版本1.12将本地(.war .jar)文件发布(部署)到Artifactory?

maven - 在 Jenkins 管道 Groovy 脚本中访问 Maven 元数据插件参数?

maven-2 - Maven、Hudson 和动态 Clearcase View