首页 > 解决方案 > gradle:使用不同的 jar 配置运行两次 InstallDist 任务

问题描述

出于打包原因,我需要在构建过程中运行两次installDist任务,以生成两个发行版。在它们中的每一个中,主 jar 将包含不同的资源文件夹。

例子

假设我要生成:

我尝试了以下但没有成功:

tasks = ['installDist', ...., 'osXjar', 'installDist', ... ]

    jar {
           archiveName = xxx
           exclude "f1"
           exclude "f2"
        }


task osXjar(type: Jar) {
           archiveName = xxx
           exclude "f1"
        }

它产生两次相同的结果,我认为installDist只依赖于 jar 并忽略 osXjar

此外,如果尝试仅运行自定义 jar 任务osXjar,生成的 jar 会损坏并且尺寸非常小,而 jar 任务会产生正确的结果。

预先感谢您的帮助 !

标签: javagradle

解决方案


所以我在这里发布答案,以防有人遇到同样的问题。诀窍是包含from sourceSets.main.output在自定义 jar 任务中。因此,以下将起作用:

tasks = ['installDist', ...., 'osXjar', 'installDist', ... ]

    jar {
           archiveName = xxx
           exclude "f1"
           exclude "f2"
        }


task osXjar(type: Jar) {
           archiveName = xxx
           from sourceSets.main.output
           exclude "f1"
        }

推荐阅读