我在build.gradle中运行gradle javaexec
task main(type: JavaExec) {
main = 'com.gtan.Application'
classpath = sourceSets.main.runtimeClasspath
}
这是输出结果:
:compileJava UP-TO-DATE
:compileScala UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:main
我想在没有编译任务的情况下运行这个javaexec。像:
:main
我该怎么办?
答案 0 :(得分:3)
当您将类路径设置为主sourceSet中的运行时类路径时,您告诉Gradle您的任务取决于主sourceSet的输出。因此,它将首先编译主源集,以确保为您的JavaExec任务正确设置类路径。
您的问题的答案取决于com.gtan.Application
类的位置以及应用程序所期望的类路径。如果此类驻留在本地项目中,则在src/main/java
下,您将无法摆脱编译,因为Gradle必须编译此类才能执行它。
如果课程位于您的构建所依赖的JAR中,例如:
dependencies {
runtime 'com.gtan:this-example-has-what-to-run:1.0.0'
}
然后,您可以将任务定义更改为:
task main(type: JavaExec) {
main = 'com.gtan.Application'
classpath = configurations.runtime
}
通过将类路径设置为配置,Gradle不需要执行任何编译,您将得到:
$ ./gradlew main
:main