【问题标题】:Individual distributions for Gradle multi-projectGradle 多项目的单独发行版
【发布时间】:2016-05-24 02:09:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: gradle multi-project


    【解决方案1】:

    请查看此示例项目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 文件中。 希望这会有所帮助。

    【讨论】:

    • 谢谢!我正在处理你的代码。看起来在您的示例中,主项目嵌套了子项目。其中一个要求是项目使用平面结构,因此“commonProject也是一个主项目。可以这样做吗?
    • 取决于"的含义...要求项目使用平面结构,因此“commonProject 也是一个主项目”所需的修改可能会有所不同。但是在任何情况下,答案都可能是肯定的。例如,您可以在 commonProject 内从 settings.gradle includeFlat("projectA") 并从 commonProject 内部启动 gradle distZip。只需将所有 gradle 文件移动到 commonProject并切换到settings.gradle 中的includeFlat。如果您只想构建其中一个项目,您也可以运行例如gradlew :projectA:distZip
    • 感谢您的帮助,享受赏金!
    • 我按照你的建议来扁平化项目,现在我得到了这个:* What went wrong: A problem occurred evaluating project ':projectA'. > Project with path ':commonProject' could not be found in project ':projectA'.
    • 想通了 - 而不是 commonProjectContent project(path: ':commonProject', configuration: 'sharedContent')dependencies 部分它实际上是 commonProjectContent project(path: ':', configuration: 'sharedContent') 因为您只是将根项目称为 :
    猜你喜欢
    • 2014-03-31
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多