【问题标题】:Gradle issue running Copy and Exec tasks in specific orderGradle 问题按特定顺序运行 Copy 和 Exec 任务
【发布时间】:2016-11-18 00:30:30
【问题描述】:

我正在尝试按顺序运行几个任务:

task deleteTargetAndCopyfiles(type: Copy) {}

--> then:

task RunMavenCommands(type: Exec) {}

--> then:

task zipTheResults(type: Zip) {}

我在运行 Exec 任务时遇到问题。 如果我使用:

task RunMavenCommands(type: Exec) {}
    println '*******************************'

    standardOutput = new ByteArrayOutputStream()

    ext {

        def startingDir = 'target/gradle_assembly'
        def mavenOpt = '-Dmaven.test.skip=true -DskipTests=true'
        def mavenRepo = '-Dmaven.repo.local=../../Tools/local/repository'
        environment "MAVEN_OPTS", "${mavenOpt} ${mavenRepo}"

        workingDir 'target/gradle_assembly'

        def command = commandLine 'mvn', 'verify'
   }


//    doLast {
//        println '*******************************'
//        }  
}

或者我跑:

task RunMavenCommands(type: Exec) {}
    println '*******************************'

    standardOutput = new ByteArrayOutputStream()

    ext {

        def startingDir = 'target/gradle_assembly'
        def mavenOpt = '-Dmaven.test.skip=true -DskipTests=true'
        def mavenRepo = '-Dmaven.repo.local=../../Tools/local/repository'
        environment "MAVEN_OPTS", "${mavenOpt} ${mavenRepo}"

        workingDir 'target/gradle_assembly'

        def command = commandLine 'mvn', 'verify'
   }


    doLast {
        println '*******************************'
    }  
}

我收到此错误:

18:14:02.420 [调试] [org.gradle.process.internal.DefaultExecHandle] 将状态更改为:STARTING 18:14:02.421 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] 等待处理 开始:命令'mvn'。

18:14:02.476 [调试] [org.gradle.process.internal.DefaultExecHandle] 将状态更改为:FAILED 18:14:02.477 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] 进程'命令 'mvn'' 以退出值 -1 结束(状态:FAILED)

18:14:02.477 [调试] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] 完成执行任务 ':mavenExecute' 18:14:02.478 [LIFECYCLE] [class org.gradle.TaskExecutionLogger]:mavenExecute FAILED 18:14:02.478 [信息] [org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor] :mavenExecute (Thread[main,5,main]) 完成。耗时 0.067 秒。 18:14:02.478 [调试] [org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor] 任务工作者 [Thread[main,5,main]] 完成,忙碌:0.067 秒,空闲:0.001 秒 18:14:02.483 [错误] [org.gradle.BuildExceptionReporter] 18:14:02.483 [错误] [org.gradle.BuildExceptionReporter] 失败:构建失败 一个例外。 18:14:02.483 [错误] [org.gradle.BuildExceptionReporter] 18:14:02.483 [错误] [org.gradle.BuildExceptionReporter] *发生了什么 错误:18:14:02.484 [错误] [org.gradle.BuildExceptionReporter] 任务“:mavenExecute”执行失败。 18:14:02.484 [错误] [org.gradle.BuildExceptionReporter] > 开始出现问题 进程'命令'mvn''

在过去的 3 天里,我一直在尝试破解任何可能的方法,但成功率为零,但没有看到任何人有适合我的有效解决方案。

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

    这个异常让我想知道它的执行错误还是排序错误,但要回答你提出的问题:

    如果命令总是需要按该顺序运行,请使用dependsOn:

    task deleteTargetAndCopyfiles(type: Copy) {}
    
    task RunMavenCommands(type: Exec) {
        dependsOn deleteTargetAndCopyfiles
    }
    
    task zipTheResults(type: Zip) {
        dependsOn RunMavenCommands
    }
    

    否则,从命令行中,您应该能够按顺序指定所有目标:

    gradle deleteTargetAndCopyfiles RunMavenCommands zipTheResults
    

    【讨论】:

    • 我确实有那个依赖,deleteTargetAndCopyfiles 任务总是运行,但 RunMavenCommands maven 任务总是失败。
    • 上面的输出是用--stacktrace运行的吗?如果没有,你能添加那个输出吗?
    • 以上是运行--debug
    猜你喜欢
    • 2014-12-14
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2017-06-14
    • 2017-04-19
    • 1970-01-01
    相关资源
    最近更新 更多