2013-10-22 43 views
2

我需要在编译代码之前执行一个java类,该类中包含主要方法。这是我到目前为止已经试过:如何在compileJava之前执行'JavaExec'类型的任务

task runSimple(type: JavaExec) { 
    main = 'jjrom.ObjectGen' 
    classpath = sourceSets.main.runtimeClasspath 
    File prop1 = file(propFilePath) 
    args '-sqlserver', '-force', prop1.path 
    println "I'm done executing." 
} 
compileJava { 
    dependsOn runSimple 
} 

当我执行这个脚本命令“gradle这个compileJava”,我得到这个错误信息:

我做执行。

失败:生成失败,出现异常。

出了什么问题:下面的任务之间的循环依赖:类---:compileJava ---:runSimple ---:类(*)

回答

1

如果您需要在编译代码时要执行这个类,你不能给它classpath = sourceSets.main.runtimeClasspath。后者包含编译后的代码,所以Gradle会自动推断出runSimple.dependsOn compileJava,它与您的compileJava.dependsOn runSimple一起给出了循环任务依赖关系。 (准确地说,摇篮推断runSimple.dependsOn classes,而这又取决于compileJava。)

0

如果你只需要与dependecies类路径运行JavaExec,只是改变classpath变量是这样的:

classpath = configurations.compile 

或者,如果你对特定的类路径感兴趣,可以添加像这样的自定义配置:

configurations { 
    customClasspath 
} 

dependencies { 
    customClasspath files('path/to/your.jar') 
} 

task runSimple(type: JavaExec) { 
    main = 'jjrom.ObjectGen' 
    classpath = configurations.customClasspath 
    File prop1 = file(propFilePath) 
    args '-sqlserver', '-force', prop1.path 
    println "I'm done executing." 
} 

compileJava { 
    dependsOn runSimple 
} 
相关问题