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

Gradle Exec:为什么它没有运行在配置阶段?

彭衡
2023-03-14

这是我的:

task makeDirectoryStructure(type:Exec){

    description 'Creates directory structure .'

    commandLine 'mkdir'
    args '-p' ,'top_dir/sub_dir_1/sub_dir_2'
    println "This line is printed in configuration phase."
}
$gradle tasks

我希望mkdir在配置阶段运行,即我的目录结构应该形成,但没有发生。

然而,我得到了以下输出:

yogeshwardancharan@yogeshwardancharan-Lenovo-G570:~/android_learning_resources/gradle_resources/ud867/1.01-Exercise-RunYourFirstTask$ gradle tasks
This line is printed in configuration phase.
:tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
components - Displays the components produced by root project '1.01-Exercise-RunYourFirstTask'. [incubating]
dependencies - Displays all dependencies declared in root project '1.01-Exercise-RunYourFirstTask'.
dependencyInsight - Displays the insight into a specific dependency in root project '1.01-Exercise-RunYourFirstTask'.
help - Displays a help message.
model - Displays the configuration model of root project '1.01-Exercise-RunYourFirstTask'. [incubating]
projects - Displays the sub-projects of root project '1.01-Exercise-RunYourFirstTask'.
properties - Displays the properties of root project '1.01-Exercise-RunYourFirstTask'.
tasks - Displays the tasks runnable from root project '1.01-Exercise-RunYourFirstTask'.

Other tasks
-----------
makeDirectoryStructure - Creates directory structure .

现在,在上面这行的输出打印中

$gradle makeDirectoryStructure

共有1个答案

宗烨赫
2023-03-14

请查看AbstractExecTaskExec从其继承。正如您所看到的,有很多getter和setter。在配置时发生的是只为这些字段设置值,而不是运行它们。所有设置的属性都将仅在用@taskaction注释的exec()方法被调用时使用-这在运行时发生。为什么println工作?它只是一个被调用的方法,与上面提到的setter完全相同--println只是具有可见的效果,而setter只是更改后面使用的属性。

每一项任务都有它的行动。不同之处在于,在配置阶段,只配置任务,并且在执行任务操作时使用此配置。

 类似资料:
  • 另一个Maven问题。我有一个用Maven-SureFire-Plugin运行的TestNG测试的应用程序。我已经创建了2个配置文件,用于pdoruction和测试。

  • 问题内容: 我正在编写一个简单的项目,一个使用Swing编写的业务应用程序,它使用Hibernate作为后端。我来自Spring,这为我提供了使用hibernate和事务的简便方法。无论如何,我设法让Hibernate工作。昨天,在编写一些代码从数据库中删除bean的同时,我得到了以下信息: 删除代码很简单: 我的是: 其他详细信息:仅在关闭应用程序时,我才会在代码中关闭hibernate会话。这

  • 问题内容: 我有以下代码: 以及其他各种方法,例如@ Before,@ After,@ Test或@AfterClass方法。 测试在启动时不会像看起来的那样失败。有谁可以帮助我吗? 我有JUnit 4.5 该方法无法立即调用注释为@before的setUp()。类def是: 问题答案: 不要扩展TestCase并同时使用注释! 如果需要使用批注创建测试套件,请使用RunWith批注,例如: (按

  • 控制台中出现以下错误: 我的文件夹文件: 那么,虽然存在,但为什么我会出现错误呢?

  • 我在CompletableFuture的供应Async()中处理长时间运行的操作,并将结果输入thenAccess()。在某些情况下,thenAccess()在主线程上执行,但在某些时候,它在工作线程上运行。但是我想只在主线程上运行thenAccess()操作。这是示例代码。 结果是: 我怎样才能解决这个问题?