使用gradle将源上载到nexus存储库

时间:2015-02-20 13:46:50

标签: java gradle nexus

我使用maven插件成功将我的罐子上传到nexus存储库,但它没有上传源代码。这是我的配置:

uploadArchives {
    repositories{
        mavenDeployer {
            repository(url: "http://...") {
                 authentication(userName: "user", password: "myPassword")
            }
        }
    }
}

我搜索并发现我可以通过添加新任务来添加源。

task sourcesJar(type: Jar, dependsOn:classes) {
     classifier = 'sources'
     from sourceSets.main.allSource
}

artifacts {
     archives sourcesJar
}

这很好但我认为必须有一个更好的解决方案,配置maven插件,像uploadSource = true这样:

uploadArchives {
    repositories{
        mavenDeployer {
            repository(url: "http://...") {
                 authentication(userName: "user", password: "myPassword")
            }
            uploadSources = true
        }
    }
}

2 个答案:

答案 0 :(得分:8)

没有比你自己描述的更好的解决方案了。 gradle maven插件正在上载当前项目中生成的所有工件。这就是为什么你必须明确创建一个"来源"工件。

使用新的maven-publish插件时,情况也不会发生变化。在这里,您还需要明确定义其他工件:

task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            artifact sourceJar {
                classifier "sources"
            }
        }
    }
}

原因是gradle更多地是作为一般构建工具而不是纯Java项目的绑定。

答案 1 :(得分:5)

您可以使用gradle-nexus-plugin

要使用该插件,请添加以下行并导入插件

buildscript {
     repositories {
         mavenLocal()
         jcenter {
            url "http://jcenter.bintray.com/"
        }
     }
     dependencies {
         classpath 'com.bmuschko:gradle-nexus-plugin:2.3'
     }
 }

apply plugin: 'com.bmuschko.nexus'

添加此部分,您将在其中配置要部署的URL

nexus {
     sign = false
     repositoryUrl = 'http://localhost:8081/nexus/content/repositories/releases/'
     snapshotRepositoryUrl = 'http://localhost:8081/nexus/content/repositories/internal-snapshots/'
 }

注意:您必须拥有〜/ .gradle / gradle.properties

nexusUsername = deployment
nexusPassword = deployment123