真的没有办法为“gradle run”设置工作目录吗?

e5nszbig  于 2023-03-18  发布在  其他
关注(0)|答案(2)|浏览(135)

当我执行“gradle run”时,我希望java命令在project dir的$projectDir/dist文件夹中执行。这是我的应用程序构建的地方,直接从projectDir运行它是没有意义的。从我的研究中,我一直看到这是不可能的?真的是这样吗?我尝试了以下方法:

application() {
    mainClass.set("com.myapp.MainClass")
    applicationDefaultJvmArgs = listOf("-Duser.dir=$buildDir\\dist")
}

但这并没有改变工作目录。我可以创建另一个任务:

tasks.register<JavaExec>("runApp") {
    classpath = sourceSets["main"].runtimeClasspath
    mainClass.set("com.myapp.MainClass")
    workingDir = file("$buildDir\\dist")
}

我可以在其中设置工作目录,但不使用gradle自带的标准任务似乎很愚蠢。有什么建议吗?

vvppvyoh

vvppvyoh1#

任何现有任务都可以修改,只要你知道它的名称。知道类型也很重要(当使用Groovy时,它不是关键,但可能非常有用)。所以让我们了解一下run任务。
Gradle应用程序插件会自动创建一个名为run的任务。run的类型为JavaExec,该类型具有默认为项目目录的属性workingDir
有了这些,我们现在可以修改Groovy中现有的run任务:

// build.gradle
plugins {
  application
}

tasks.named('run') {
  workingDir = file("$buildDir/dist")
}

或者在Kotlin

// build.gradle.kts
plugins {
  application
}

tasks.named<JavaExec>("run") {
  workingDir = file("$buildDir/dist")
}

// or, using a Kotlin DSL Accessor:
tasks.run {
  workingDir = file("$buildDir/dist")
}

另请参见

我也找到了这些答案,但它们比较老,包含一些过时的语法,所以我认为值得重新审视这个问题。

w46czmvw

w46czmvw2#

可以重新配置run任务来设置工作目录。假定Kotlin构建脚本语言:

tasks.named<JavaExec>("run") {
    workingDir(file("$buildDir/dist"))
}

相关问题