java - Gradle 覆盖 zip 存档的默认“artifactId”
问题描述
我正在将一些上传my-libs.zip
到 S3 并且无法获得覆盖 default 的语法artifactId
。目前artifactId
,它是project.name
从settings.gradle
注意:我不想改变我project.name
的settings.gradle
apply plugin: 'maven-publish'
artifacts {
someArtifact file: file('image/my-libs.zip'), name: 'my-libs', type: 'zip'
}
uploadSomeArtifact {
description 'Uploads some artifact.'
group = "com.mypackage"
version = "dummy-SNAPSHOT"
repositories {
maven {
url "s3://my-mvn-repo/snapshot/com/mypackage"
authentication {
awsIm(AwsImAuthentication)
}
}
}
}
解决方案
首先,由于某种原因,您同时应用了maven
plugin和maven-publish
plugin。两个插件的功能基本相同,但第一个插件很久以前就被弃用了。您应该决定使用哪个插件,我建议使用该maven-publish
插件。
不过,让我们看一下旧maven
插件的文档。它说:
Maven 元素:
artifactId
默认值:(uploadTask.repositories.mavenDeployer.pom.artifactId
如果设置)或archiveTask.archiveBaseName
然后:
当您将该
archiveTask.archiveBaseName
属性设置为默认值以外的值时,您还必须设置uploadTask.repositories.mavenDeployer.pom.artifactId
为相同的值。否则,手头的项目可能会从为同一构建中的其他项目生成的 POM 中使用错误的工件 ID 进行引用。
在这里,mavenDeployer
指的是被添加到RepositoryHandler
后面的不推荐使用的方法repositories
。似乎需要使用这种不推荐使用的方式来指定目标存储库,而不是使用maven
您使用的方法。遗憾的是,可能无法s3
通过这个旧接口使用 AWS 身份验证和协议。
现在让我们看一下新maven-publish
插件。使用此插件,您不再定义工件和配置Upload
任务。相反,您定义发布和存储库,插件将为发布和存储库的每个组合生成一个任务:
publishing {
publications {
myLibs(MavenPublication) {
groupId = 'com.mypackage'
artifactId = 'my-libs'
version = 'dummy-SNAPSHOT'
artifact (file('image/my-libs.zip')) {
classifier 'src'
extension 'zip'
}
}
}
repositories {
maven {
url 's3://my-mvn-repo/snapshot/com/mypackage'
authentication {
awsIm(AwsImAuthentication)
}
}
}
}
如您所见,该repositories
部分保持不变,并且该publications
部分允许您以与和artifactId
相同的方式定义。groupId
version
推荐阅读
- mysql - 在标签中定义 IF-THEN 语句
- javascript - 使用过滤器返回对象值匹配的数组
- spring - OneToMany + Spring Boot + Jpa 不起作用
- python - 同时迭代和更新熊猫数据框
- java - Spring Boot:为什么要使用 OncePerRequestFilter?
- javascript - 使用赛普拉斯检查文本输入中的值是否完全可见
- asp.net-core - 如何用png替换svg?
- node.js - 登录后反应快递 paspport 和谷歌身份验证重定向
- docker - 无效的发布选项格式(应该是名称=值,但得到“-v”)
- java - 如何启用 github 操作以访问秘密属性文件