在gradle中同时使用应用程序和分发插件

在gradle中同时使用应用程序和分发插件,gradle,build.gradle,Gradle,Build.gradle,使用发行版插件时,为了在发行版输出中设置文件夹结构,我有以下代码 但是现在我必须使用“应用程序”插件。 1.这两个插件可以一起使用吗?(抱怨任务名称相同) 2.如果没有,如何为应用程序插件实现下面的代码? distributions { main { baseName = appName contents { into('bin') { from jar.archivePath } into('lib') {

使用
发行版
插件时,为了在发行版输出中设置文件夹结构,我有以下代码

但是现在我必须使用“应用程序”插件。
1.这两个插件可以一起使用吗?(抱怨任务名称相同)
2.如果没有,如何为应用程序插件实现下面的代码?

distributions {
    main {
        baseName = appName
        contents {
            into('bin') { from jar.archivePath }
            into('lib') { from configurations.runtime }
            into('etc') { from project(':server').file('src/main/other') }
        }
    }
}

在评论中讨论后,以下代码应该会有所帮助:

applicationDistribution.from(jar.archivePath) {
    into "bin"
}
applicationDistribution.from(configurations.runtime ) {
    into "lib"
}
applicationDistribution.from(project(':server').file('src/main/other')) {
    into "etc"
}
或者(可能)较短的形式(无法验证)


如前所述:不知道baseName到底是什么,但假设它也可以设置

如果存在任务名称冲突,那么使用两个插件是没有意义的——但据我所知,在完成一些令人厌倦的工作后,它们可以一起使用。docs()声明,您可以仅使用应用程序插件执行所需操作。此外,应用程序插件还具有分发容器:。什么不起作用?是的,根据文件,申请应该足够了。然而,在你发送的链接中,它写道:“DistributionContainer是由分发插件添加的”。哦,我在源代码中看到了它。实际上,应用程序插件所做的是首先应用分发插件。看来你需要的只是应用程序插件。嘿,我们刚刚改变了应用程序插件的实现,使之依赖于分发插件。这将是2.4版本的一部分,对您来说应该会轻松很多。
with(applicationDistribution) {
   from(jar.archivePath) { into "bin" }
   from(configurations.runtime ) { into "lib" }
   from(project(':server').file('src/main/other')) { into "etc" }
}