簡體   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