gradle - 如何在不进行编译的情况下运行JavaExec

标签 gradle

我在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/

相关文章:

testing - 如何配置gradle以输出执行的测试总数?

java - 升级到 react-native 版本 0.60.4 后 react-native run-android 出错

c++ - 如何使用 Gradle MSBuild 插件运行 SonarQube Scanner?

java - 将资源目录添加到greety的类路径中(Gradle插件)

android - 使用LiveData依赖项进行构建时的“Failed to resolve: support-fragment ”

gradle - 无效的类路径发布/导出依赖项/ouat-contract。不支持项目条目

eclipse - 将外部jar文件添加到Eclipse中的特定库中

gradle - Gradle/Spock 中是否有测试套件的概念?

android - 无法编译Android应用程序,gradle

android - 导入时出现 ClassNotFoundException。阿尔