在Gradle中的sourceSet中为资源定义多个输出目录

时间:2018-10-25 06:09:05

标签: java gradle

我有一个多项目,我想在其中附加来自不同位置的资源(生成资源的子项目),但还要将它们放置在不同的输出目录中。

wrapper (parent)
|--frontend (child)
|  |--build/dist
|     |--js
|     |  |-- ...
|     |--css
|        |-- ...
|--lib (child)
   |--build/dist
      |--python
         |-- ...

我需要wrapper (parent)将两个子项目的build/dist视为资源,但要放置在不同的outputDir中。

  • frontend/build/dist将位于./wrapper/build/resources/main/static
  • lib/build/dist将位于./wrapper/build/resources/main

目标是在将源集main的资源移至static时附加outputDir目录。

请注意,outputDir不是jar任务。这不是包装问题,而是outputDir问题。

sourceSets {
    main {
        resources {
             srcDirs [
                 project(':frontend').projectDir.absolutePath + '/build/dist'
                 project(':lib').projectDir.absolutePath + '/build/dist'
             ]
        }
        output.resourcesDir project.buildDir.absolutePath + '/resources/main/static'
    }
}

以上将资源添加到主sourceSet中,但是它们具有相同的output.resourceDir。

最终问题

  1. 是否存在允许为给定src定义输出的语法?能举个例子吗?
  2. 如果还没有,我将定义多个sourceSet。基本上定义main1main2,这可以很好地工作,但是我很难使那些sourceSets成为main的子代。换句话说-如果您定义自定义sourceSet(而不是maintest),则需要对其进行编译-如何?我知道我可以命令:gradle build sourceSetName来调用特定的自定义sourceSet编译,我该怎么做,所以它依赖于main

我正在将Gradle 4.10.1与Java(和eclipse)插件一起使用。

0 个答案:

没有答案