code

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

codestyles 2020. 10. 30. 08:06
반응형

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, 기본값은 프로젝트 디렉토리 이름입니다.


루트 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
        }
    }
}

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

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

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

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


For building android and publishing to artifactory using jenkins, I configured the settings below in the app modules's build.gradle for configuring group id, artifact id, and version.

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

    }

In Gradle, you can set jar.archiveName to override the use of the working folder's name...

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

참고URL : https://stackoverflow.com/questions/24827733/how-do-you-set-the-maven-artifact-id-of-a-gradle-project

반응형