Как установить идентификатор артефакта maven проекта gradle?
Из gradle maven-publish plugin documentation, ясно, что вы устанавливаете groupId
и version
проекта непосредственно в build.gradle
:
group = 'org.gradle.sample'
version = '1.0'
Однако, artifactId
, похоже, берется из имени папки, в которой вы работаете. Есть ли способ явно установить artifactId
?
Ответы
Ответ 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"