你如何设置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.gradle
configuration的工程名称,该工程名称默认为项目目录的名称。
这是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"