groovy - Gradle/Groovy设置环境变量

标签 groovy gradle

我在Windows命令提示符下设置环境时遇到一些问题:

我在做什么:

  • 设置环境(创建环境变量)
  • 配置环境
  • 后运行bat

    我尝试了两种不同的方法:
  • 在build.gradle上创建两个不同的任务:

  • 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
    
  • 在build.gradle上创建任务以调用.bat,这两个进程都包含

  • 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/

    相关文章:

    java - 使用 groovy 脚本引擎(GroovyClassLoader)运行包含新行 "\n"的 java 代码时出现 GroovyCastException

    使用奇怪的常规代码进行排序

    gradle - 在 gradle 的插件扩展中传递闭包

    android - 使用 Maven 存储库导入

    intellij-idea - Gradle依赖关系未在IntelliJ中添加为库

    security - 如何禁用 Jenkins 管道构建的安全检查

    android - Android:无法加载mupdf

    java - 如何添加到 cordova 中的 settings.gradle

    unit-testing - 如何在 groovy 中使用 Spock 框架对日志记录错误进行单元测试

    java - 如何将 Chartboost 依赖项添加到我的 LibGDX 项目?