Gradle - 更改主要发行版 - 删除 bin 和 lib 文件夹

xzt*_*xzt 5 java gradle

我有一个应用了应用程序插件的 Gradle 构建。应用程序插件还应用分发插件并创建默认main分发,这会将启动脚本放在bin文件夹中,将依赖项放在lib.

现在我想完全删除该默认行为并拥有自己的发行版但名称相同main。更准确地说,我不想要binlib文件夹,而是想要我的自定义内容。

我知道我可以轻松定义一个新的发行版,例如

distributions {
    my {
        // my configuration here
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以通过myDistZip例如产生所需的分布。

但我想准确地更改main分布,以便我能够通过简单distZip(或distTar)生成存档。

我试图删除主要分布(通过distributions.remove(distributions.main))并创建新的

distributions {
    main {
        // my configuration here
    }
}
Run Code Online (Sandbox Code Playgroud)

但这失败了

Cannot add task ':distZip' as a task with that name already exists.
Run Code Online (Sandbox Code Playgroud)

我想这仅仅是因为 GradledistZip为每个新发行版创建任务,所以它也试图为新发行版这样做main,但是distZip在插件应用程序期间已经创建了任务。

那么,有没有办法改变main分配摆脱binlib文件夹?

等级:3.5

was*_*syl 1

但我想完全更改主要发行版,以便我能够通过简单的 distZip (或 distTar)生成存档。

似乎您不必更改main发行版 - 插件的文档distribution(由插件自动添加application)指出对于每个发行版,因此您可以使用gradle myDistZip.

然而,您似乎也应该能够配置现有的main发行版:

distributions {
  main {
    contents {
      // configure
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然您似乎无法重置现有值,但也许您可以使用排除来不复制特定文件夹(请参阅https://docs.gradle.org/current/javadoc/org/gradle/api/file/CopySpec.html