我在Windows命令提示符下设置环境时遇到一些问题:
我在做什么:
我尝试了两种不同的方法:
task setupenvironment(type:Exec) { def DirLocation = 'C:/../path/' workingDir = new File(DirLocation) commandLine DirLocation + 'environment.cmd' args = [ '-x', location, '-y', WorkspaceLocation, '-z', 'generated' ] } task createwithpackage (type:Exec, dependsOn: setupenvironment) { def DirLocation = 'C:/../path/' def WorkspaceLocation = 'C:/../Workspace' def location = 'C:/../location' workingDir = new File(DirLocation) commandLine DirLocation + 'package.bat' args = [ '-x', location, '-y', WorkspaceLocation, '-z', 'generated' ] }
//console: gradle createwithpackage --stacktrace
ERROR -> Process 'command 'C:/../package.bat'' finished with non-zero exit value 255
task createall(type:Exec) { { def DirLocation = 'C:/../' workingDir = new File(DirLocation) commandLine DirLocation + 'deploy.bat' } task createwithpackage(type:Exec) { { def DirLocation = 'C:/../path/' def WorkspaceLocation = 'C:/../Workspace' workingDir = new File(DirLocation) commandLine DirLocation + 'package.bat' args = [ '-x', location, '-y', WorkspaceLocation, '-z', 'generated' ] }
deploy.bat
CALL "C:\..\ environment.cmd" CALL gradle createwithpackage
//console: gradle createall –stacktrace
Exception throwed: createwithpackage: Could not find or load main class com.package.class
但是,如果我在控制台中手动执行以上命令,则一切正常。
难道我做错了什么?
- 编辑
很抱歉回复这么晚,我之前按照您链接上的建议尝试过。但是我一直有这个错误,我调试并使用stacktrace查找问题,最后我使它工作了,但仅适用于一项任务
这仅适用于直接任务(在任务前不设置环境变量):
task createwithpackage (type:Exec) { def DirLocation = 'C:/../path/' def WorkspaceLocation = 'C:/../Workspace' def location = 'C:/../location' workingDir = new File(DirLocation) commandLine DirLocation + 'package' args = [ '-x', location, '-y', WorkspaceLocation, '-z', 'generated' ] }
但是,下一种方法很好地启动,但是最后尝试将其保存到磁盘上时,抛出了“访问被拒绝”的期望,因此我猜测它必须具有gradle特权,而我不确定如何进行管理(我正在运行cmd以具有所有特权的管理员身份):
task createwithpackage (type:Exec) { def DirLocation = 'C:/../path/' def WorkspaceLocation = 'C:/../Workspace' def location = 'C:/../location' workingDir = new File(DirLocation) commandLine 'cmd', '/c', 'package', '-x', location '-y', WorkspaceLocation, '-z', 'generated' }
// gradle createwithpackage-调试
09:27:57.640 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully
started process 'command 'cmd''
09:29:06.193 [QUIET] [system.out] BIP0963E Error saving file in createwithpackage.
09:29:06.203 [QUIET] [system.out]
09:29:06.213 [QUIET] [system.out] The file "C:\path..\main
/" could not be saved to disk.
09:29:06.223 [QUIET] [system.out] The reason given was:
09:29:06.223 [QUIET] [system.out] C:\path..\main (Access i
s denied.)
09:29:06.233 [QUIET] [system.out]
09:29:06.233 [QUIET] [system.out]
09:29:09.483 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing st
ate to: FAILED
09:29:09.503 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'co
mmand 'cmd'' finished with exit value 1 (state: FAILED)
09:29:09.503 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceT
askExecuter
反正有没有让gradle拥有全部特权的方法?任何进一步的帮助将不胜感激
谢谢
最佳答案
您必须将其作为cmd in the Exec task执行:
commandLine 'cmd', '/c', DirLocation + 'deploy.bat'
关于groovy - Gradle/Groovy设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620874/