繁体   English   中英

Spring Boot附加崩溃命令

[英]Spring boot additional Crash Command

根据Spring启动文档 ,使用基于Crash的远程Shell时可以定义其他命令。

这些命令的默认位置是classpath *:/ commands / ,classpath *:/ crash / commands /

可以使用属性来覆盖默认位置,但是在提供的示例中,custom命令位于资源中。

我认为,自定义命令(至少是Java命令)不应位于资源中,而应位于src / main / java中。

在资源中定义自定义路径时,它工作正常,但是如何在src / main / java中定义自定义路径? 暂时找不到方法!

如果它们在src/main/java ,它们将自动编译,这不是您所需要的。 我的解决方案是将该目录模拟资源文件夹,简而言之就是:

  1. 配置编译器插件以忽略该特定文件夹
    <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>
  1. 像在目标目录中的任何常规资源一样复制文件
    <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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM