尝试通过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”任务
但是,如果插件要生成如此长的类路径,那么这个方法似乎不起作用。
此项目可能会证明此问题:
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可以简单地使用该JAR清单中的Class-Path
条目来运行Web应用程序,并且传递给java命令的类路径条目将是缩短了。然而,这并没有产生任何影响,java只是再次崩溃。
请注意,将Web应用程序作为带有java -jar app.war
的可执行jar运行,可以很好地处理所有依赖项等。
让其他人遇到类似问题吗?