Gradle 多项目的个人发行版

Individual distributions for Gradle multi-project

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

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

我需要先复制公共文件,然后再从子项目中复制 add/overwrite 文件。我查看了 samples/userguide/multiproject 中的示例,并希望使用平面结构。但是这些例子非常简单,所以任何例子都将不胜感激!

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

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

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

和两个基本相同的子项目(projectAprojectB):

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

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