[英]Gradle override default 'artifactId' of a zip archive
我正在将一些my-libs.zip
上传到 S3,但无法获取覆盖默认artifactId
的语法。 当前artifactId
,它是从settings.gradle
提取的project.name
注意:我不想在settings.gradle
更改我的project.name
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
插件和maven-publish
插件。 两个插件的功能基本相同,但第一个插件很久以前就被弃用了。 您应该决定使用哪个插件,我建议使用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
方法。 遗憾的是,这个旧接口可能无法使用 AWS 身份验证和s3
协议。
现在让我们来看看新的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
部分允许您以与groupId
和version
相同的方式定义artifactId
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.