Gradleのからのmaven-公開プラグインのドキュメント、それはあなたが設定されていることは明らかだgroupId
とversion
で直接プロジェクトbuild.gradle
:
group = 'org.gradle.sample'
version = '1.0'
ただし、artifactId
は作業中のフォルダの名前から取得されているようです。artifactId
明示的に設定する方法はありますか?
Gradleのからのmaven-公開プラグインのドキュメント、それはあなたが設定されていることは明らかだgroupId
とversion
で直接プロジェクトbuild.gradle
:
group = 'org.gradle.sample'
version = '1.0'
ただし、artifactId
は作業中のフォルダの名前から取得されているようです。artifactId
明示的に設定する方法はありますか?
回答:
publishing {
publications {
maven(MavenPublication) {
groupId 'org.gradle.sample'
artifactId 'project1-sample'
version '1.1'
from components.java
}
}
}
アーティファクトIDは、デフォルトでで構成されたプロジェクト名settings.gradle
になり、次に、デフォルトでプロジェクトディレクトリの名前になります。
適切なプラグインが必要です。
plugins {
id 'maven-publish'
}
settings.gradle
(eg rootProject.name = "something"
)で変更できます。
ルートsettings.gradle
ファイルに関連して、ルートプロジェクトの名前を次のように変更できます。
rootProject.name = 'myproject'
ただし、サブプロジェクト(たとえば、AndroidStudioプロジェクトのデフォルトの「app」サブプロジェクト)の名前を変更する場合は、ルートsettings.gradle
ファイルで次のようにすることができます。
rootProject.children.each {
it.name = ('app' == it.name ? 'MyAppName' : it.name)
}
これは、maven-publishプラグインの正解です。これは、古いMavenプラグインの後継として意図されています。
私のように、古いプラグインで立ち往生している場合、「gradleプロジェクトのMavenアーティファクトIDを設定するにはどうすればよいですか」に対する正解は次のとおりです。
uploadArchives {
repositories {
mavenDeployer {
pom.artifactId = 'project-sample'
}
}
}
マルチモジュールプロジェクトがあり、アーティファクトの名前をディレクトリ(settings.gradleで設定)とは異なるものにしたい場合は、サブプロジェクトごとにjarブロックを用意することをお勧めします。そこで、アーティファクトIDとなるbaseNameを記述できます。次に、サブプロジェクトごとにpublishing / publicationsブロックを書き直すのではなく、次のようにメインのbuild.gradleに1回だけ書き込みます。
サブプロジェクトbuild.gradleごとに:
jar {
baseName = 'new-artifact-name-A' //A beacause you also have B, C modules...
}
メインのbuild.gradleで:
publishing {
publications {
mavenJava(MavenPublication) {
artifactId jar.baseName
from components.java
}
}
}
jenkinsを使用してAndroidをビルドし、アーティファクトに公開するために、アプリモジュールのbuild.gradleで、グループID、アーティファクトID、バージョンを構成するための以下の設定を構成しました。
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
group "com.company.division.productgroup" //add group id
version "8.8.8" //add version
defaultConfig {
minSdkVersion 9
targetSdkVersion 21
versionCode 32
versionName "$version"
archivesBaseName = "android-appname" //add artifact id
}
でGradleでは、あなたが設定することができjar.archiveName
、作業フォルダの名前の使用を無効にするために...
group = 'com.example'
version = '0.0.1-SNAPSHOT'
jar.archiveName = "myproject-0.0.1-SNAPSHOT.jar"