Dans la documentation du plugin gradle maven-publish , il est clair que vous définissez les groupId
et version
du projet directement dans build.gradle
:
group = 'org.gradle.sample'
version = '1.0'
Cependant, la artifactId
semble provenir du nom du dossier dans lequel vous travaillez. Est-il possible de définir explicitement la artifactId
?
De 36.2.3. Valeurs d'identité dans le POM généré
publishing {
publications {
maven(MavenPublication) {
groupId 'org.gradle.sample'
artifactId 'project1-sample'
version '1.1'
from components.Java
}
}
}
Par défaut, l'ID d'artefact est le nom du projet configuré dans settings.gradle
, qui à son tour utilise le nom du répertoire du projet.
C'est la bonne réponse pour maven-publish plugin. Il s’agit du successeur de l’ancien maven plugin.
Si, comme moi, vous êtes coincé avec l'ancien plug-in, la réponse correcte à "Comment définir l'identifiant d'artefact maven pour un projet de dégradé" est:
uploadArchives {
repositories {
mavenDeployer {
pom.artifactId = 'project-sample'
}
}
}
En relation avec le fichier racine settings.gradle
, vous pouvez modifier le nom du projet racine avec:
rootProject.name = 'myproject'
Mais si vous voulez changer le nom d'un sous-projet (par exemple, le sous-projet "app" par défaut d'un projet AndroidStudio), vous pouvez faire quelque chose comme ceci, toujours dans le fichier racine settings.gradle
:
rootProject.children.each {
it.name = ('app' == it.name ? 'MyAppName' : it.name)
}
Si vous avez un projet multi-module et que vous voulez que les noms des artefacts diffèrent de ceux de Directory (défini dans settings.gradle), je pense qu'une meilleure approche consiste à disposer d'un bloc jar pour chaque sous-projet et là vous pouvez écrire le nom de base, qui sera l'identifiant d'artefact. Ensuite, plutôt que de ré-écrire le bloc publishing/publications pour chaque sous-projet, vous ne l'écrivez qu'une fois dans le fichier principal build.gradle de cette façon:
pour chaque sous-projet build.gradle:
jar {
baseName = 'new-artifact-name-A' //A beacause you also have B, C modules...
}
dans le build.gradle principal:
publishing {
publications {
mavenJava(MavenPublication) {
artifactId jar.baseName
from components.Java
}
}
}
Cependant, artifactId semble provenir du nom du dossier dans lequel vous travaillez. Existe-t-il un moyen de définir explicitement artifactId?
Une solution simple consiste à définir le jar.baseName
qui remplace ensuite le nom du répertoire.
// changes the name of the jar from the directory name
jar.baseName = 'some_arifact_name';
Cela semble fonctionner pour moi.
Dans Gradle , vous pouvez définir jar.archiveName
pour remplacer le nom du dossier de travail ...
group = 'com.example'
version = '0.0.1-SNAPSHOT'
jar.archiveName = "myproject-0.0.1-SNAPSHOT.jar"
Pour construire Android et publier sur artifactory à l'aide de Jenkins, j'ai configuré les paramètres ci-dessous dans les modules de l'application build.gradle pour configurer l'identifiant de groupe, l'identifiant d'artefact et la 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
}