[maven] Gradle 프로젝트의 Maven 아티팩트 ID를 어떻게 설정합니까?

gradle maven-publish 플러그인의 문서 에서 프로젝트 groupIdversion의를 직접 설정하는 것이 분명합니다 build.gradle.

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

그러나은 artifactId작업중인 폴더의 이름에서 가져온 것으로 보입니다. artifactId명시 적으로 설정하는 방법이 있습니까?



답변

에서 36.2.3. 생성 된 POM의 ID 값

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파일과 관련하여 다음 을 사용하여 루트 프로젝트의 이름을 변경할 수 있습니다.

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 블록을 사용하는 것이 더 좋은 방법이라고 생각합니다. 거기에서 artifact-id가 될 baseName을 작성할 수 있습니다. 그런 다음 각 하위 프로젝트에 대한 게시 / 게시 블록을 다시 작성하는 대신 다음과 같이 기본 build.gradle에 한 번만 작성합니다.

각 하위 프로젝트 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
        }
    }
}


답변

젠킨스를 사용하여 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

    }


답변

그러나 artifactId는 작업중인 폴더의 이름에서 가져온 것으로 보입니다. artifactId를 명시 적으로 설정하는 방법이 있습니까?

이에 대한 간단한 대답 jar.baseName은 디렉토리 이름을 재정의하는 을 설정하는 것 입니다.

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

이것은 나를 위해 일하는 것 같습니다.


답변

에서 Gradle을 , 당신은 설정할 수있는 jar.archiveName작업 폴더의 이름의 사용을 대체 할 …

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