Spring Boot Maven/Gradle插件:bootRun任务生成很长的classpath?

Mis*_*yed 5 java gradle spring-boot spring-boot-maven-plugin spring-boot-gradle-plugin

组件

  • Spring Boot 1.4.3(并且还尝试过Spring Boot 1.5 RC1)
  • Mac OS Sierra上的Java 1.8.0_112
  • Gradle 3.3/Maven 3.3.9
  • 使用Spring Boot Gradle插件配置的简单Java Web应用程序(同样的问题似乎也适用于Spring Boot Maven插件)

问题

试图通过喜欢gradlew clean build bootRun或者简单地gradlew bootRun显示gradle/java进程在没有提示的情况下退出/崩溃.除了以下内容外,不会显示其他错误或日志:

"/ Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java以非零退出值1完成".

gradlew bootRun --debug然而,运行显示BootRun(Gradle的JavaExec的扩展)任务似乎想要生成非常非常非常长的Classpath条目,最终会轰炸Java进程.

Spring Boot文档指定:

要在不构建jar的情况下运行项目,可以使用"bootRun"任务

http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html#build-tool-plugins-gradle-running-applications

但是,如果插件要生成如此长的类路径,那么这种方法似乎不起作用.

复制

这个项目可能会证明这个问题:

https://github.com/apereo/cas-gradle-overlay-template

在cas/build.gradle文件中,可以添加依赖项来观察行为:

compile "org.apereo.cas:cas-server-support-json-service-registry:${project.'cas.version'}"

诊断

该项目包含以下依赖项:

dependencies { compile "somewhere:something:somehow@war" }

这根本没有问题bootRun; 但是,当任何其他编译/运行时依赖项添加到项目时,所有依赖项都可以传递或以其他方式添加到类路径中bootRun以便执行.

我也尝试创建一个"路径"JAR,希望插件/ Java可以简单地使用该Class-PathJAR清单中的条目来运行Web应用程序,并且传递给java命令的类路径条目将会缩短.然而,这并没有产生任何影响,java只是再次崩溃.

请注意,将Web应用程序作为可执行jar运行,java -jar app.war可以很好地处理所有依赖项等.

让其他人遇到类似问题吗?