问题描述
我正在将一些my-libs.zip
上传到S3,但是无法获取覆盖默认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
方法。遗憾的是,可能无法通过此旧界面使用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
部分则允许您以与artifactId
和{ {1}}。