Spring boot额外的Crash Command

时间:2015-07-02 10:15:44

标签: java spring-boot spring-boot-actuator crash-shell

根据Spring boot documentation,当使用基于Crash的远程shell时,可以定义附加命令。

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

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

在我看来,自定义命令(至少是java命令)不应该位于资源中,而应该位于src / main / java中。

在资源中定义自定义路径时工作正常,但如何在src / main / java中定义自定义路径?暂时没有办法做到这一点!

2 个答案:

答案 0 :(得分:1)

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

  1. 配置编译器插件以忽略该特定文件夹
  2.     <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. 像目标目录中的任何常规资源一样复制文件
    2.     <resource>
              <directory>src/main/java/crash/commands</directory>
              <targetPath>crash/commands</targetPath>
              <filtering>false</filtering>
          </resource>
      

      次要更新&amp;声明:

      您可能已经知道,在登录/注销时会执行一些关闭。至少对于v1.3.1,这是我从spring-boot盲目继承的,它将选择它在类路径中找到的第一个login.groovy。我的项目工件与所有其他依赖项一起打包在RPM中。由于它的名称以r开头,它位于默认值所在的crash.shell-1.3.1.jar之后,因此我必须执行以下小程序,以使其获取我自己的脚本而不是默认脚本: / p>

      <!-- hack to make CRaSH pick up login.groovy from our jar instead of the default one -->
      <finalName>0_${project.artifactId}-${project.version}</finalName>
      

答案 1 :(得分:-1)

您可以尝试将命令放在src/main/resources/commands/