![](/img/trans.png)
[英]Cloud Foundry : How to deploy spring boot app with an additional JVM command
[英]Spring boot additional Crash Command
根据Spring启动文档 ,使用基于Crash的远程Shell时可以定义其他命令。
这些命令的默认位置是classpath *:/ commands / ,classpath *:/ crash / commands /
可以使用属性来覆盖默认位置,但是在提供的示例中,custom命令位于资源中。
我认为,自定义命令(至少是Java命令)不应位于资源中,而应位于src / main / java中。
在资源中定义自定义路径时,它工作正常,但是如何在src / main / java中定义自定义路径? 暂时找不到方法!
如果它们在src/main/java
,它们将自动编译,这不是您所需要的。 我的解决方案是将该目录模拟为资源文件夹,简而言之就是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<excludes>
<exclude>crash/commands/*</exclude>
</excludes>
</configuration>
</plugin>
<resource>
<directory>src/main/java/crash/commands</directory>
<targetPath>crash/commands</targetPath>
<filtering>false</filtering>
</resource>
次要更新和免责声明:
您可能已经知道,有两个闭包是在登录/注销时执行的。 至少在v1.3.1中(这是我从spring-boot盲目继承的),它将选择在类路径中找到的第一个login.groovy
。 我项目的工件与所有其他依赖项一起打包在RPM中。 由于它的名称以r
开头,所以它是在crash.shell-1.3.1.jar
之后crash.shell-1.3.1.jar
,这是默认值所在的位置,因此我不得不做以下小技巧,使它能够使用我自己的脚本而不是默认脚本:
<!-- hack to make CRaSH pick up login.groovy from our jar instead of the default one -->
<finalName>0_${project.artifactId}-${project.version}</finalName>
您可以尝试将命令放在src/main/resources/commands/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.