Gradleのmavenプラグインを使用してjarを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
}
}
}
あなたが自分で説明したものよりも良い解決策はありません。 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プロジェクトに縛られていないということです。
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