Gradle 覆盖 zip 存档的默认设置 'artifactId'
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
plugin and the maven-publish
plugin。这两个插件的功能基本相同,但第一个插件很久以前就被弃用了。您应该决定使用哪个插件,我建议使用 maven-publish
插件。
尽管如此,让我们看一下旧 maven
插件的文档。它说:
Maven Element: artifactId
Default value: uploadTask.repositories.mavenDeployer.pom.artifactId
(if set) or archiveTask.archiveBaseName
以后:
When you set the archiveTask.archiveBaseName
property to a value other than the default, you’ll also have to set uploadTask.repositories.mavenDeployer.pom.artifactId
to the same value. Otherwise, the project at hand may be referenced with the wrong artifact ID from generated POMs for other projects in the same build.
这里,mavenDeployer
指的是被添加到 repositories
后面的 RepositoryHandler
的已弃用方法。似乎需要使用这种已弃用的方式来指定目标存储库,而不是使用您使用的 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
相同的方式定义 artifactId
和version
.
我正在将一些 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
plugin and the maven-publish
plugin。这两个插件的功能基本相同,但第一个插件很久以前就被弃用了。您应该决定使用哪个插件,我建议使用 maven-publish
插件。
尽管如此,让我们看一下旧 maven
插件的文档。它说:
Maven Element:
artifactId
Default value:uploadTask.repositories.mavenDeployer.pom.artifactId
(if set) orarchiveTask.archiveBaseName
以后:
When you set the
archiveTask.archiveBaseName
property to a value other than the default, you’ll also have to setuploadTask.repositories.mavenDeployer.pom.artifactId
to the same value. Otherwise, the project at hand may be referenced with the wrong artifact ID from generated POMs for other projects in the same build.
这里,mavenDeployer
指的是被添加到 repositories
后面的 RepositoryHandler
的已弃用方法。似乎需要使用这种已弃用的方式来指定目标存储库,而不是使用您使用的 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
相同的方式定义 artifactId
和version
.