gradle - 关于 Maven Publish Gradle 插件的问题?
问题描述
在我加入之前,许多建立我公司 Gradle 基础架构的前 DevOps 和开发人员已经离开,所以目前没有人知道他们做了很多事情。我是一名尝试学习 Gradle 的 Maven 人,所以我有几个问题,我的公司似乎没有人知道答案。例如,我有以下内容build.gradle
jar {
manifest {
attributes 'artifactId': artifactId,
'groupId': project.group,
'version': project.version
}
baseName artifactId
}
publishing {
publications {
coreComponent(MavenPublication) {
artifactId artifactId
from components.java
}
}
}
通常我希望看到maven(MavenPublication) {}
,但为什么coreComponent(MavenPublication) {}
?我在哪里/什么/如何找出是什么coreComponent
?
解决方案
通常我希望看到
maven(MavenPublication) {}
,但为什么coreComponent(MavenPublication) {}
?我在哪里/什么/如何找出是什么coreComponent
?
它只是出版物的名称,仅当您的项目有多个可能单独发布的出版物时才重要。Gradle 将语句coreComponent(MavenPublication) {...}
转换为create(String name, Class<U> type, Action<? super U> configuration)
对PublicationContainer
. 该调用创建一个类型MavenPublication
和名称的新发布,'coreComponent'
并使用传递的configuration
.
您可以为发布选择任何名称,它主要用于生成发布任务的名称,例如publish<PubName>PublicationToMavenLocal
. 调用gradle tasks
您的项目,您将看到它包含一个名为publishCoreComponentPublicationToMavenLocal
. 由于许多项目只有一个出版物,因此它们'maven'
用作出版物名称,但这与真正的约定相去甚远。
类似的机制用于发布存储库,因为任何发布都可以发布到多个存储库。在内部,存储库有另一个(较旧的)API,因此您不能使用上述表示法<name>(<Type>)
。相反,您可以MavenArtifactRepository
使用该方法创建类型的存储库,maven()
并使用配置操作为它们分配名称:
publishing {
repositories {
maven {
name = 'bintray'
// ...
}
maven {
name = 'github'
// ...
}
}
}
MavenPublication
然后,Gradle 为 a和 a的每个组合创建一个发布任务,MavenArtifactRepository
名称为publish<PubName>PublicationTo<RepoName>Repository
,从而生成任务publishCoreComponentPublicationToBintrayRepository
和publishCoreComponentPublicationToGithubRepository
。
推荐阅读
- python - python中有没有办法替换字符串但保持中间字符完整?
- c - 分配具有函数指针作为字段的结构
- google-sheets - 如何计算谷歌表格中某个范围内字符串的出现次数?
- javascript - html视频元素和页面加载事件之间的关系?
- c# - Uno 平台:非 UWP 项目中的 MapControl
- python-3.x - 将 OpenId connect / (Keycloak) 与 Django 和 Django Rest 框架集成的最佳方式
- javascript - Bootstrap-select - selectpicker类下拉列表未显示
- numpy - 是否有一个 Numpy pad 等价物可以让您指定所需的大小?
- typescript - 在 TypeScript 中将对象键/值的映射强类型到具有相同键但值不同的对象
- javascript - 允许用户单击 div 空白区域下的元素?