Gradle:从子项目复制application.properties文件

时间:2017-12-15 02:26:32

标签: java gradle build task

TL; DR创建一个FatJar,但将`application.properties``文件从子项目复制到构建输出文件夹(其中任何一个)。

大家好,

我有一个gradle项目,它不包含父项目中的源代码,但有子项目。其中一个子项目有一个application.properties文件,我希望它出现在我的构建文件夹中。应用程序的结构如下所示。

ParentProject
|
|-datamodel(Sub Project)
|   |
|   |-build.gradle
|-datadb(Sub Project)
|   |
|   |-build.gradle
|-dataservices(Sub Project)
|   |
|   |-src
|   |   |
|   |   |-main
|   |       |
|   |       |-resources
|               |
|               |-application.properties(File I need)
|   |-build.gradle      
|
|-build.gradle

我想拥有它,以便在构建ParentProject时,构建目录看起来像这样。

build
  |
  |-libs
  |   |
  |   |-outputted.jar
  |
  |-resources
      |
      |-application.properties

截至目前,我正在构建我认为称为FatJar的构建脚本输出。我不确定这是否会造成问题。

jar {
   ...
   from {
       (configurations.runtime).collect {
        it.isDirectory() ? it : zipTree(it)
       }
   }
   ...
}

我尝试过的事情:

一切。我在ParentProject构建文件中尝试了整个自定义任务路径

task copyStuff (dependsOn : 'subproject:build'){... 

task copyStuff and then copyStuff.dependsOn...

task copyStuff..{
   doLast {

无论如何,我从来没有把它复制过来,整个晚上都是失败的瀑布。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

只需使用Copy中的Gradle任务,那取决于Jar任务

task customBuild(type: Copy, dependsOn: [jar]) {
    from "dataservices/src/main/resources/"
    into "build/resources"
    include "application.properties"
}