我在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
我该怎么办 ?
最佳答案
当您将类路径设置为来自主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
关于gradle - 如何在不进行编译的情况下运行JavaExec,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45094074/