如何从www.example.com脚本执行“gradle build”命令gradle.build

dpiehjr4  于 2023-04-06  发布在  其他
关注(0)|答案(3)|浏览(123)

我想从build.gradle文件执行gradle build命令。

build.gradle文件

apply plugin: 'java'
apply plugin: 'application'
task me{
   //Can we perform gradle build command here.
       }

***问题:***我们能否在任务me中执行gradle build命令,就像我们在命令提示符下执行一样(随附屏幕截图)..?

注意:我使用的是windowsenv,请假设我在build.gradle文件中提供了所有其他语句


*。

我想执行这个任务 * 我 * 从命令提示符,它应该负责调用gradle build命令。(附上截图)

uklbhaso

uklbhaso1#

是,如果将任务me转换为GradleBuild类型的任务
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.GradleBuild.html
例如:

task me(type: GradleBuild){
    buildFile 'mybuild.gradle' //defaults to build.gradle so not needed
    dir 'someDir'
    tasks 'clean', 'build'
}
46qrfjad

46qrfjad2#

您不能在Gradle构建中“调用”Gradle任务。
你可能会偶然发现每个Gradle任务都有一个方法execute(),但这是一个纯粹的内部方法,任何构建脚本不得使用。使用它将无法正常工作。它不会确保任务只运行一次,也不会确保依赖项任务在之前运行等等,只是 * 不要 * 使用它。
你的代码片段太大了,我现在不想解释它来理解你到底想做什么,但是如果你想从另一个Gradle任务“调用”一个Gradle任务,你的逻辑是虚假的,应该改变。如果你想在另一个Gradle任务运行之前或之后运行一个Gradle任务,唯一支持的方式是使用dependsOn(before)或finalizedBy(after),并且您不能在任务的执行阶段设置这些属性,而只能在配置阶段设置。
还有一种方法可以从构建脚本调用Gradle任务,但这是通过使用GradleBuild类型的任务,它将启动您指定的项目的一个完整的新的和单独的构建,这通常不是您真正想要做的动作。

e4eetjau

e4eetjau3#

我使用的方法是直接执行Gradle控制台命令。我更喜欢它,因为它更通用。你可以这样做:

task me{
    var command = "\"" + System.getProperty("user.dir") + "\\gradlew.bat\" build"
    command.execute()
}

另一种方法是使用finalizedBy()方法,它将在第一个任务完成后执行特定的任务。您可以这样使用它:

task me{
}
me.finalizedBy(build)

相关问题