3

. . 我们正在迁移到 Rational Team Concert (RTC) 并希望利用它的“组件”定义。流中使用的组件会产生一个平坦的本地 scm 工作区,并且其物理根不在 scm 中,如下所示:

|- workspace-name
   | component1
   | component2
   <empty>

源代码中的文件只存在于组件文件夹中,workspace-name只是一个文件系统父级,所以除非我在构建时将代码复制到那里,否则它是空的构建文件或代码。

我发现了很多关于平面项目布局通用组件布局以及Gradle 工作原理的优秀入门知识:逻辑布局与物理布局等方面的好问题和答案。这些仍然没有完全解决我的困惑。

想要做的是:

|- workspace-name
   | component1
   | component2
   | buildSrc

我有这个buildSrc/settings.gradle

includeFlat '../component1/compa','../component2'

马上,它给了我一个错误,即我的自定义任务(在 中定义buildSrc\src\main\groovy\CustomTask.groovy)不存在(could not find property 'CustomTask' on project ':component1/compa')。

我相信那是因为buildSrc应该projectroot 目录本身中(正如gradle docs所暗示的那样),例如:

|- workspace-name
   | component1
   | component2
     | buildSrc

这让我想到,也许我需要一个既成为逻辑父级又成为 buildSrc 父级的虚拟组件。

我的问题是,如果我没有物理根目录,那么放置settings.gradle文件的“最佳”位置是什么?每个组件都需要来自自定义任务的代码来构建,所以我也在寻找最好的地方(如果不在虚拟组件中)。谢谢!

安迪

4

2 回答 2

1

我会尽量远离虚拟组件,并且:

  • 要么在每个组件中存储一个 buildSrc 文件夹,其中包含特定于组件的 Gradle 文件
  • 或将所有 buidSrc Gradle 文件存储在一个组件中,并具有能够在请求构建时复制/创建每个组件中所需内容的脚本。
于 2013-10-15T18:03:14.470 回答
1

每个构建只能有一个buildSrc,并且您将其放置在正确的位置。但是,buildSrc它是它自己的构建,并且让它包含主要构建的项目是没有意义的(正如您显然尝试过的那样)。的参数includeFlat也不是文件路径。不太确定你想在这里实现什么。

至于主构建的settings.gradle,如果你不能把它放到根目录,另一个选择是把它放到一个名为master. (这是一个内置约定,不能重新配置。)

于 2013-10-15T18:19:42.733 回答