我使用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
}
}
}
答案 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