当前位置: 首页 > 知识库问答 >
问题:

Gradle多项目-仅执行一次根任务

周意智
2023-03-14

我正在使用以下项目结构Project

---子项目1

---子项目2

---子项目3

|build.gradle

|设置。格拉德尔

子项目2取决于子项目1

子项目3取决于子项目2

对于所有子项目,我需要有任务“构建”,这将是每个项目的自定义任务。但在“构建”之前必须执行一些初始化任务(对于所有子项目都相同)。问题是,这个初始化任务必须在构建期间执行一次,而且只能执行一次,无论我在构建什么-根项目或任何子项目。例如,如果我构建子项目3,则序列必须如下:init build Subproject1 build Subproject2 build Subproject3

我试图在根项目构建中为“build”定义“doFirst”。gradle并将“init”代码放入其中。但在本例中,在每次“构建”之前执行“init”代码。我试图为每个“构建”定义对根的依赖性,但遇到了与之前相同的问题。

共有1个答案

孟均
2023-03-14

这对于Gradle来说很简单。定义您的初始化任务(可能在根项目中),并自定义子项目中的构建任务,以依赖于类似于构建的初始化任务。dependsOn“:init”更多详细信息,请访问http://www.gradle.org/docs/current/userguide/tutorial_using_tasks.html

顺便说一句:当构建开始时,每个任务只能执行一次,因此您似乎多次使用doFirst()添加任务操作或将其添加到已执行的多个任务中。

 类似资料:
  • 我面临以下问题。我有一个多模块的Gradle项目。一个模块是我的根项目,第二个模块是集成测试。 为了让我的集成测试运行,复制任务需要首先运行,以便将一些资产移动到项目根目录上的文件夹中。 我已经在我的根项目上定义了这样一个任务,当我试图调用它时,它什么也不做(我尝试了几种不同的调用方式)。 由于失败,我继续在子项目本身上创建了以下任务: 这是我的另一个任务。我的目标是让它将根项目类以及在下生成的j

  • 我正在使用以下项目结构 子模块包含在设置中。gradle,并在内部版本中配置。根项目的渐变。 我有3个任务要做 (每个子项目都有这个) (这是每个子项目都需要自己工作的打包机制) (这只需要调用一次) 我想能够打电话 $gradle部署 build.gradle

  • 如果我有一个像这样的gradle多项目 每个项目都有一个任务'foo',我可以在root项目上调用它 它还可以为子项目执行 但如果我从子项目调用task“:foo” 仅执行根项目上的任务 但不是子项目上的“foo”任务。 在子项目中,是否有方法对所有项目调用“foo”?我这样问是因为我使用的是gradle eclipse插件,在那里我只能访问子项目,即我在eclipse中看到的项目。 顺便说一句:

  • 我正在使用Eclipse的STS插件创建gradle多项目。我以为我在读完教程后得到了基本的知识,但我无法再现所显示的行为。添加时 对于父项目的build.gradle,我将假设每个项目执行的任务'hello‘。为子项目实际进行了2次,但结果只是: 我的项目树看起来或多或少是这样的:

  • 我有以下方式的多项目: > 根项目 子项目1 子项目2 不管是什么任务 我希望能够配置任务“任何”一次,并从任何范围(根或子项目)执行它,并且只执行一次! 这意味着: 如果我跑/读什么,我应该得到:“什么” 如果我运行 /subproject1/gradle任何东西,我应该得到:“任何东西” 总之,我不知道如何根据项目的数量来执行同一任务和多个任务。 我还没能得到这么简单的结果。如果你能提供任何帮

  • 在我的多项目中,我正在根项目上运行测试任务,并期望它将在子项目上运行测试任务并生成一个测试报告。我观察到的是,它从来没有在子项目上运行测试任务。我的期望是不正确的吗?“我需要在我的gradle脚本中进行任何特殊配置吗? 请注意,我的根项目中没有测试。