web-dev-qa-db-ja.com

gradleプロジェクトのMavenアーティファクトIDをどのように設定しますか?

Gradle maven-publishプラグインのドキュメント から、プロジェクトのgroupIdversionbuild.gradleに直接設定したことは明らかです。

group = 'org.gradle.sample'
version = '1.0'

ただし、artifactIdは、作業中のフォルダーの名前から取得されたようです。 artifactIdを明示的に設定する方法はありますか?

69
Armand

から 6.2.3。生成されたPOMのID値

publishing {
    publications {
        maven(MavenPublication) {
            groupId 'org.gradle.sample'
            artifactId 'project1-sample'
            version '1.1'

            from components.Java
        }
    }
}

アーティファクトIDは、デフォルトでsettings.gradleで構成されたプロジェクト名になり、プロジェクトディレクトリの名前になります。

68

ルートsettings.gradleファイルに関連して、次の方法でルートプロジェクトの名前を変更できます。

rootProject.name = 'myproject'

ただし、サブプロジェクトの名前(AndroidStudioプロジェクトのデフォルトの "app"サブプロジェクトなど)を変更する場合は、ルートsettings.gradleファイルで次のようなことができます。

rootProject.children.each {
    it.name = ('app' == it.name ? 'MyAppName' : it.name)
}
10
Alex Dommasch

これはmaven-publishプラグインの正しい答えです。これは、古いmavenプラグインの後継として意図されています。

私のように、古いプラグインに固執している場合、「gradleプロジェクトのMavenアーティファクトIDを設定する方法」に対する正しい答えは次のとおりです。

uploadArchives {
    repositories {
        mavenDeployer {
            pom.artifactId = 'project-sample'
        }
    }
}
7

マルチモジュールプロジェクトがあり、アーティファクトの名前をディレクトリ(settings.gradleに設定されている)とは異なるものにする場合、サブプロジェクトごとにjarブロックを作成することをお勧めします。そこで、baseNameを記述できます。これは、アーチファクトIDになります。次に、各サブプロジェクトの発行/公開ブロックを書き換えるのではなくメイン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
        }
    }
}
5
OhadR

ただし、artifactIdは、作業中のフォルダーの名前から取得されているようです。 artifactIdを明示的に設定する方法はありますか?

これに対する簡単な答えは、jar.baseNameを設定して、ディレクトリ名を上書きすることです。

// changes the name of the jar from the directory name
jar.baseName = 'some_arifact_name';

これは私にとってはうまくいくようです。

2
Gray

Gradleでは、jar.archiveNameを設定して、作業フォルダーの名前の使用をオーバーライドできます...

group = 'com.example'
version = '0.0.1-SNAPSHOT'
jar.archiveName = "myproject-0.0.1-SNAPSHOT.jar"
1
nobar

Androidをビルドし、jenkinsを使用してアーティファクトに公開するために、グループID、アーティファクトID、およびバージョンを構成するために、アプリモジュールのbuild.gradleで以下の設定を構成しました。

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

    }
1
ChinLoong