gradle maven 发布插件:无法通过“发布”上传 zip

Posted

技术标签:

【中文标题】gradle maven 发布插件:无法通过“发布”上传 zip【英文标题】:gradle maven publish plugin : unable to upload zip via `publish` 【发布时间】:2020-07-16 08:55:51 【问题描述】:

我正在尝试为我的 Spring 启动应用程序编写 build.gradle。(gradle v.6.5.1)

构建后,我想将其部署到私有 Nexus 存储库。(带有资产 zip 文件)

问题是...当我执行命令 gradle build publish --debug 时,它会上传 bootJar,但不会上传资产 zip 文件。并且控制台中没有可疑消息。

这里是build.gradle的部分

plugins 
    ...
    id "maven-publish"


task assembleAssets(type:Zip) 
    archiveFileName = "$rootProject.name-$rootProject.version.zip"
    destinationDirectory = file("$buildDir/libs/")
    from "assets"
    classifier "assets"

tasks.build.dependsOn(assembleAssets)

# From bootJar
configurations 
    [apiElements, runtimeElements].each 
        it.outgoing.artifacts.removeIf  it.buildDependencies.getDependencies(null).contains(jar) 
        it.outgoing.artifact(bootJar)
    


publishing 
    publications 

        bootJarDeploy(MavenPublication) 
            from components.java
        

        assetDeploy(MavenPublication) 
            artifact source: assembleAssets, extension: 'zip', classifier: 'config'
        
    
    repositories 

        maven 
            url = "$nexus_url"
            credentials 
                username repoUser
                password repoPw
            
        
    


我检查了本地目录中的 Zip 文件生成并在 Nexus UI 中上传了 jar(bootJar)。但是 Nexus 中没有 zip 文件...

我想将我的 zip 存档文件上传到 Nexus。

我是否遗漏了什么,或者只是将maven-publish 插件与bootJar 一起使用并不好?

谢谢。

【问题讨论】:

【参考方案1】:

下面发布 zip 文件

task zipJ(type: Zip, dependsOn: jar) 
    from sourceSets.main.runtimeClasspath


build.dependsOn zipJ

publishing 
    publications 
        maven(MavenPublication) 
            //from components.java
            artifact jar
            artifact zipJ
        
    

【讨论】:

以上是关于gradle maven 发布插件:无法通过“发布”上传 zip的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件自定义 Gradle 插件模块 ③ ( Gradle 插件模块发布配置 | Windows 本地 Maven 仓库地址 | 将插件上传到本地 Maven 仓库 )

用于 Maven 发布等功能的 Gradle 发布插件

Android 库 - 使用 Gradle 将多个变体发布到本地 Maven 存储库

将 Maven 依赖项转换为 Gradle

如何使用自定义 gradle 插件而不将其发布到 maven/ivy 存储库?

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ⑧ ( 设置 Gradle 插件模块 | 将 Gradle 插件上传到自建 Maven 仓库 )