Gradle多项目

时间:2016-05-24 02:09:20

标签: gradle multi-project

我有许多非常相似(非Java)的项目需要生成Zip / Tar分发。通常,每个项目只有一个distributions部分,用于复制各种文件/目录并组装存档。我想将公共代码提取到单独的“公共”项目,但是从子项目执行构建,这样我就可以根据我需要的风格生成一个存档。公共代码只是一个需要包含在存档中的目录

我可能永远不会从父级运行构建来生成多个发行版。

我需要先复制公共文件,然后添加/覆盖子项目中的文件。我查看了samples/userguide/multiproject中的示例,并希望使用扁平结构。但是这些例子非常简洁,所以任何例子都会非常感激!

1 个答案:

答案 0 :(得分:1)

请查看此示例项目https://github.com/fanick1/so-individual-distributions-for-gradle-multi-project

根据您在问题中所写的内容,我假设您使用的是发布插件。存储库包含一个由一个项目组成的多项目( commonProject ),让我们说一下共同的内容:

commonProject/src/
  - commonFiles/
  - customFiles/customFile.txt

和两个子项目( projectA projectB )基本相同:

  project[A|B]/src/
    - customFiles/customFile.txt
    - files[A|B]/

您可以运行gradlew distZip,这将在/build/distributions文件夹的每个子项目中创建分发zip文件。 子项目包含文件夹customFiles,该文件夹也位于commonProject中。如果存在具有相同名称的文件,则输出zip文件中的内容最终将被相应子项目中的内容覆盖。 基本上这意味着文件/customFiles/customFile.txt将被覆盖。 /commonFiles中的内容将始终复制到子项目的分发zip文件中。 希望这会有所帮助。