我有许多非常相似(非Java)的项目需要生成Zip / Tar分发。通常,每个项目只有一个distributions
部分,用于复制各种文件/目录并组装存档。我想将公共代码提取到单独的“公共”项目,但是从子项目执行构建,这样我就可以根据我需要的风格生成一个存档。公共代码只是一个需要包含在存档中的目录
我可能永远不会从父级运行构建来生成多个发行版。
我需要先复制公共文件,然后添加/覆盖子项目中的文件。我查看了samples/userguide/multiproject
中的示例,并希望使用扁平结构。但是这些例子非常简洁,所以任何例子都会非常感激!
答案 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文件中。
希望这会有所帮助。