Подтвердить что ты не робот

Как установить идентификатор артефакта maven проекта gradle?

Из gradle maven-publish plugin documentation, ясно, что вы устанавливаете groupId и version проекта непосредственно в build.gradle:

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

Однако, artifactId, похоже, берется из имени папки, в которой вы работаете. Есть ли способ явно установить artifactId?

4b9b3361

Ответ 1

Из "Пример 65.4. Настройка идентификатора публикации":

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

            from components.java
        }
    }
}

Идентификатор артефакта по умолчанию соответствует имени проекта, настроенному в settings.gradle, которое по умолчанию относится к имени каталога проекта.

Ответ 2

Это правильный ответ для плагина maven-publish. Он предназначен как преемник более старого maven плагина.

Если, как и я, вы застряли со старым плагином, правильный ответ на "Как установить идентификатор артефакта maven для проекта gradle":

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

Ответ 3

Связанный с корневым файлом settings.gradle, вы можете изменить имя корневого проекта:

rootProject.name = 'myproject'

Но если вы хотите изменить имя подпроекта (например, подпроект "app" по умолчанию проекта AndroidStudio), вы можете сделать что-то вроде этого, все еще находясь в корневом файле settings.gradle:

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

Ответ 4

Если у вас есть проект с несколькими модулями, и вы хотите, чтобы имена артефактов отличались от Каталога (который установлен в settings.gradle), то я думаю, что лучший подход состоит в том, чтобы иметь блок jar для каждого суб-модуля -project, и там вы можете написать 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
        }
    }
}

Ответ 5

Для создания android и публикации artifactory с помощью jenkins, я настроил параметры ниже в модулях приложения build.gradle для настройки идентификатора группы, артефакта 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

    }

Ответ 6

В Gradle вы можете установить jar.archiveName для переопределения имени рабочей папки...

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