繁体   English   中英

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插件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部分允许您以与groupIdversion相同的方式定义artifactId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM