你如何设置Gradle项目的Maven工件ID?

从gradle maven-publish插件的文档中 ,很明显你可以直接在build.gradle设置groupId和项目的version

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

但是, artifactId似乎取自您正在其中工作的文件夹的名称。 有没有办法明确设置artifactId

从“例65.4。自定义发布标识”:

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

工件ID默认为在settings.gradleconfiguration的工程名称,该工程名称默认为项目目录的名称。

这是maven-publish插件的正确答案。 这是作为旧的Maven插件的继任者。

如果像我一样,你被困在旧的插件中,那么对于“如何设置gradle项目的maven工件id”的正确答案是:

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

与root settings.gradle文件相关,您可以使用以下命令更改根项目的名称:

 rootProject.name = 'myproject' 

但是如果你想改变一个子项目的名字(例如,一个AndroidStudio项目的默认“app”子项目),你可以这样做,仍然在根settings.gradle文件中:

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

如果你有一个多模块项目,并且你希望工件的名称与目录(在settings.gradle中设置)不同,那么我认为一个更好的方法是为每个子项目设置一个jar块,在那里你可以写出baseName,这将是artifact-id。 然后, 而不是重写每个子项目的发布/发布块,您只能在主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 } } } 

对于使用jenkins构buildandroid和发布到artifactory,我在应用程序模块的build.gradle中configuration了下面的设置,用于configuration组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 } 

Gradle中 ,您可以设置jar.archiveName来覆盖工作文件夹名称的使用。

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