API文档: | MavenPublication |
---|
AMavenPublication
是 Gradle 应如何以 Maven 格式发布内容的表示/配置。您可以通过提供类型来
直接将命名的 Maven 发布添加到项目的publishing.publications
容器中。MavenPublication
publishing {
publications {
myPublicationName(MavenPublication) {
// Configure the publication here
}
}
}
默认的 Maven POM 标识属性映射如下:
groupId
-project.group
artifactId
-project.name
version
-project.version
对于某些常见用例,通常指定要发布的组件就足够了,仅此而已 ( MavenPublication.from(org.gradle.api.component.SoftwareComponent)
。已发布的组件用于确定要发布哪些工件,以及应在生成的 POM 文件中列出哪些依赖项。
要将其他工件添加到已发布的集合中,请使用MavenPublication.artifact(java.lang.Object)
和MavenPublication.artifact(java.lang.Object, org.gradle.api.Action)
方法。您还可以使用 完全替换已发布的工件集MavenPublication.setArtifacts(java.lang.Iterable)
。这些方法一起使您可以完全控制将发布的工件。
要自定义在生成的 POM 中发布的元数据,请在通过
方法或直接通过传递到 的操作(或闭包)MavenPom.getDescription()
返回的 POM 上设置属性,例如。作为最后的手段,可以使用该方法修改生成的 POM。
MavenPublication.getPom()
MavenPublication.pom(org.gradle.api.Action)
MavenPom.withXml(org.gradle.api.Action)
plugins { id 'java' id 'maven-publish' } task sourceJar(type: Jar) { from sourceSets.main.allJava archiveClassifier = "sources" } publishing { publications { myPublication(MavenPublication) { from components.java artifact sourceJar pom { name = "Demo" description = "A demonstration of Maven POM customization" url = "http://www.example.com/project" licenses { license { name = "The Apache License, Version 2.0" url = "http://www.apache.org/licenses/LICENSE-2.0.txt" } } developers { developer { id = "johnd" name = "John Doe" email = "john.doe@example.com" } } scm { connection = "scm:svn:http://subversion.example.com/svn/project/trunk/" developerConnection = "scm:svn:https://subversion.example.com/svn/project/trunk/" url = "http://subversion.example.com/svn/project/trunk/" } } } } }
财产 | 描述 |
artifactId | 此出版物的artifactId。 |
artifacts | 本出版物的完整工件集。 |
groupId | 此出版物的 groupId。 |
pom | 将发布的 POM。 |
version | 本出版物的版本。 |
方法 | 描述 |
artifact(source) |
|
artifact(source, config) | 创建 |
from(component) | 提供应发布的软件组件。 |
pom(configure) | 配置将要发布的 POM。将根据结果执行提供的操作 |
setArtifacts(sources) | 从指定源清除任何先前添加的工件 |
suppressAllPomMetadataWarnings() | 消除 Maven 发布的所有兼容性警告。当使用无法完全映射到 Maven POM 的 Gradle 功能时,会发出警告。 |
suppressPomMetadataWarningsFor(variantName) | 消除指定变体的 Maven 发布的兼容性警告。当使用无法完全映射到 Maven POM 的 Gradle 功能时,会发出警告。 |
versionMapping(configureAction) | 配置版本映射策略。例如,要使用运行时依赖项的解析版本: |
String
artifactId
此出版物的artifactId。
MavenArtifactSet
artifacts
本出版物的完整工件集。
String
groupId
此出版物的 groupId。
MavenPom
pom
(只读)
将发布的 POM。
String
version
本出版物的版本。
MavenArtifact
artifact
(Object
来源)
MavenArtifact
创建要包含在出版物中的自定义。该artifact
方法可以采用多种输入:
- 一个
PublishArtifact
例子。扩展和分类器值取自包装实例。 - 一个
AbstractArchiveTask
例子。扩展和分类器值取自包装实例。 File
任何可以通过方法解决的事情Project.file(java.lang.Object)
。扩展名和分类器值是根据文件名插入的。Map
包含可解析为任何其他输入类型(包括文件)的“源”条目。该映射可以包含“分类器”和“扩展”条目以进一步配置构造的工件。
以下示例演示了各种自定义工件的添加。
plugins { id 'maven-publish' } task sourceJar(type: Jar) { archiveClassifier = "sources" } publishing { publications { maven(MavenPublication) { artifact sourceJar // Publish the output of the sourceJar task artifact 'my-file-name.jar' // Publish a file created outside of the build artifact source: sourceJar, classifier: 'src', extension: 'zip' } } }
MavenArtifact
artifact
(Object
来源,配置)Action
<? super MavenArtifact
>
Action
<? super MavenArtifact
>创建MavenArtifact
要包含在发布中的内容,该发布由关联操作配置。第一个参数用于创建自定义工件并将其添加到出版物中,按照MavenPublication.artifact(java.lang.Object)
。然后使用提供的操作配置创建的内容MavenArtifact
,该操作可以覆盖工件的扩展或分类器。此方法还通过强制类型接受配置操作作为闭包参数。
plugins { id 'maven-publish' } task sourceJar(type: Jar) { archiveClassifier = "sources" } publishing { publications { maven(MavenPublication) { artifact(sourceJar) { // These values will be used instead of the values from the task. The task values will not be updated. classifier "src" extension "zip" } artifact("my-docs-file.htm") { classifier "documentation" extension "html" } } } }
void
from
(SoftwareComponent
成分)
提供应发布的软件组件。
- 组件声明的任何工件都将包含在发布中。
- 组件声明的依赖项将包含在已发布的元数据中。
目前支持 3 种类型的组件:“components.java”(由 JavaPlugin 添加)、“components.web”(由 WarPlugin 添加)和“components.javaPlatform”(由 JavaPlatformPlugin 添加)。对于任何单独的 MavenPublication,只能以这种方式提供单个组件。以下示例演示了如何将“java”组件发布到 Maven 存储库。
plugins { id 'java' id 'maven-publish' } publishing { publications { maven(MavenPublication) { from components.java } } }
配置将要发布的 POM。将根据结果执行提供的操作MavenPublication.getPom()
。此方法还通过类型强制接受闭包参数。
void
setArtifacts
(Iterable
<?>
来源)
Iterable
<?>从指定源清除任何先前添加的工件MavenPublication.getArtifacts()
并从指定源创建工件。每个提供的源均按照 进行解释MavenPublication.artifact(java.lang.Object)
。例如,要排除组件声明的依赖项,而使用一组自定义工件:
plugins { id 'java' id 'maven-publish' } task sourceJar(type: Jar) { archiveClassifier = "sources" } publishing { publications { maven(MavenPublication) { from components.java artifacts = ["my-custom-jar.jar", sourceJar] } } }
void
suppressPomMetadataWarningsFor
(String
变体名称)
消除指定变体的 Maven 发布的兼容性警告。当使用无法完全映射到 Maven POM 的 Gradle 功能时,会发出警告。
void
versionMapping
(配置动作)Action
<? super VersionMappingStrategy
>
Action
<? super VersionMappingStrategy
>配置版本映射策略。例如,要使用运行时依赖项的解析版本:
plugins { id 'java' id 'maven-publish' } publishing { publications { maven(MavenPublication) { from components.java versionMapping { usage('java-runtime'){ fromResolutionResult() } } } } }