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

让所有gradle子项目“测试”任务都依赖于rootproject“设置”任务

叶举
2023-03-14

我以为这会起作用,但事情一定发生了变化(或者我犯了某种错误)

根据父项目的任务,gradle子项目任务的语法是什么?

我在根级别上有以下任务(即子项目闭包之外和所有项目闭包之外)。

task deleteJavaCache {
    doLast {
        System.out.println("DELETE java caches here to prevent intermitten build failures from java deleting files")
    }
}

test.dependsOn rootProject.deleteJavaCache
test{
   beforeTest{ descr ->
    logger.warn("Starting Test ${descr.className} : ${descr.name}")
   }
...

我得到的错误是

A problem occurred evaluating root project 'webpieces'.
> Could not get unknown property 'deleteJavaCache' for root project 
'webpieces' of type org.gradle.api.Project.

然后我猜了几件事包括这个

test.dependsOn rootProject.task('deleteJavaCache')

但那给了我错误

* What went wrong:
A problem occurred evaluating root project 'webpieces'.
> Cannot add task ':deleteJavaCache' as a task with that name already exists.

版本信息因此

------------------------------------------------------------
Gradle 4.1-milestone-1
------------------------------------------------------------
Build time:   2017-06-20 17:05:46 UTC
Revision:     3ad5af92d482b963cc6b00fb5ad53b608606d657

Groovy:       2.4.11
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_111 (Oracle Corporation 25.111-b14)
OS:           Mac OS X 10.11.6 x86_64

共有1个答案

葛奇
2023-03-14

仔细检查你的settings.gradle,如果子项目是包含在那里

如果我理解正确,是这样的:

root (deleteJavaCache)
  |- subprojects (test.dependsOn deleteJavaCache from the root)

试试这个:

test.dependsOn (":deleteJavaCache")

或者,如果您希望所有子项目test任务都在之前运行它:

//in root build.gradle
subprojects {
    test.dependsOn (":deleteJavaCache")
}

我假设您正在尝试自定义子项目测试任务,使其依赖于根项目的任务?

因为你说的有点让人困惑:

我在根级别有以下任务

这意味着整个代码块都在根项目中,包括deleteJavaCache和test任务。如果是,请尝试下面的解决方案。如果不是,请使用上面的解决方案,并请澄清问题。

test.dependsOn deleteJavaCache
 类似资料:
  • 问题内容: 可以运行以了解模块任务的依赖性。有没有办法找到 buildscript依赖 的 传递依赖 ? 示例: 直接取决于: 可以在MVNRepository上看到。但是,这些工件有其自己的依赖性。有没有找到方法而无需手动遍历整个依赖树的方法? 为了澄清起见,我正在谈论的类路径由以下方式定义: 问题答案: 您可以使用以下命令: Udacity提供了很棒的Android Gradle 教程,但是您

  • 我有两个互斥的任务,它们都应该在完成后启动。 我提到它们是互斥的,因为我不想让< code>bootRun依赖于它们中的任何一个。相反,我在寻找一个类似如下的流程: 我尝试了以下方法, 因此,将启动设置()和bootRun(与的类似设置)。这会导致在项目'中找不到路径'bootRun'的 我还尝试将A/B任务声明为:< code > task A(type:org . spring framewo

  • 我有以下结构: api和web项目都使用插件,但其他项目只有插件。 我想在根项目中为heroku定义一个任务,即: 对所有拥有它的子项目执行干净任务 对所有拥有它的子项目执行战争任务 在所有拥有它的子项目上执行构建任务 我看到了这个答案:按顺序调用子项目和其他任务但失败的Gradle批处理任务。已尝试以下配置 并获取此错误: (api有war插件,如果我取消对task stage的注释,我可以运行

  • 我有以下多模块项目结构。 当我为/builder子项目运行任务时,我希望所有子项目都会执行任务(对于

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

  • 嗨,如果我用任务列出所有任务--我看到所有导入的ant任务,但是当我试图创建依赖于ant任务的任务时,我得到的是“Could not determine the dependencies of task':testgradle'”。 出现问题的行:-它显然看不到ant init任务。 我做错了什么? 所有编译-编译主源树java文件 byWorld5 copyTestConfiguration-复