gpt4 book ai didi

gradle - Gradle任务以其他用户身份执行

转载 作者:行者123 更新时间:2023-12-03 04:00:33 24 4
gpt4 key购买 nike

我有一个设置为运行Java类的Gradle任务:

task runEchoServerTest(type: JavaExec, dependsOn: [compileTestJava]) {
classpath sourceSets.main.runtimeClasspath

main = 'EchoServerTest'
}

但是我想以 super 用户身份运行它,并且不想键入 sudo gradle runEchoServerTest。可以在Gradle中更改正在运行的用户吗?这个问题愚蠢吗?

更新:

按照@NikitaSkvortsov的建议,我添加了以下任务:
task sudoRunEchoServerTest(type: Exec, dependsOn: [compileTestJava]) {
commandLine "sudo " + tasks.runEchoServerTest.commandLine.join(" ")
}

我没有添加密码,因为我在Raspberry Pi上工作,可以在不使用密码的情况下使用 sudo

我运行该任务,但失败了。要了解更多信息,我使用 --stacktrace再次运行它。这是关键消息(为便于阅读而进行了编辑):
Caused by: java.io.IOException: 
Cannot run program "sudo /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/bin/java
-Djava.library.path=./native/linux
-Dfile.encoding=UTF-8
-Duser.country=GB
-Duser.language=en
-Duser.variant
-cp /home/pi/bloomm/build/classes/java/main:/home/pi/bloomm/build/resources/main:/home/pi/bloomm/build/classes/java/test:/home/pi/bloomm/build/resources/test EchoServerTest"
(in directory "/home/pi/bloomm"):
error=2, No such file or directory

有趣的是,如果我将整个命令复制到命令行并运行它,它将起作用!

那么,还有什么地方会出错呢?

最佳答案

无论如何,您都必须调用susudo,因为不能简单地更改OS中进程的当前用户:)

为此,再添加一个exec任务,获取预配置的Java exec的有效命令行,并在前面加上“sudo”。不要忘记提供密码!

task doPriveleged(type: Exec, dependsOn: [compileTestJava]) {
commandLine "echo $sudo_password | sudo -S " + tasks.runEchoServerTest.commandLine.join(" ")
}

关于gradle - Gradle任务以其他用户身份执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com