从gradle maven-publish插件的文档中,很明显,您可以直接在中设置项目的groupId
和:version
build.gradle
group = 'org.gradle.sample'
version = '1.0'
但是,artifactId
似乎是从您正在使用的文件夹的名称中提取的。有没有办法artifactId
显式设置?
从gradle maven-publish插件的文档中,很明显,您可以直接在中设置项目的groupId
和:version
build.gradle
group = 'org.gradle.sample'
version = '1.0'
但是,artifactId
似乎是从您正在使用的文件夹的名称中提取的。有没有办法artifactId
显式设置?
Answers:
publishing {
publications {
maven(MavenPublication) {
groupId 'org.gradle.sample'
artifactId 'project1-sample'
version '1.1'
from components.java
}
}
}
工件ID默认为在中配置的项目名称settings.gradle
,而默认为项目目录的名称。
您将需要适当的插件。
plugins {
id 'maven-publish'
}
settings.gradle
(例如rootProject.name = "something"
)。
与根settings.gradle
文件相关,您可以使用以下命令更改根项目的名称:
rootProject.name = 'myproject'
但是,如果您想更改子项目的名称(例如,AndroidStudio项目的默认“ app”子项目),则仍可以在根settings.gradle
文件中执行以下操作:
rootProject.children.each {
it.name = ('app' == it.name ? 'MyAppName' : it.name)
}
这是maven-publish插件的正确答案。它旨在作为旧版maven插件的后继产品。
如果像我一样,您仍然使用旧的插件,那么“如何为gradle项目设置Maven工件ID”的正确答案是:
uploadArchives {
repositories {
mavenDeployer {
pom.artifactId = 'project-sample'
}
}
}
如果您有一个多模块项目,并且希望工件的名称与目录(在settings.gradle中设置)不同,那么我认为一个更好的方法是为每个子项目提供一个jar块,在这里您可以编写baseName,它将是工件ID。然后,您不必在每个主项目中重写发布/发布块,而只需在主版本中编写一次即可。
对于每个子项目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
}
}
}
为了构建android并使用jenkins发布到工件,我在应用程序模块的build.gradle中配置了以下设置,用于配置组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
}