2

Spring boot documentationによると、Crash に基づくリモート シェルを使用する場合、追加のコマンドを定義することが可能です。

これらのコマンドのデフォルトの場所は、classpath*:/commands/ ,classpath*:/crash/commands/ です。

プロパティを使用してデフォルトの場所をオーバーライドできますが、提供されている例では、カスタム コマンドはリソースにあります。

私の意見では、カスタム コマンド (少なくとも Java コマンド) はリソースではなく、src/main/java に配置する必要があります。

リソースでカスタム パスを定義する場合は問題なく動作しますが、src/main/java でカスタム パスを定義するにはどうすればよいですか? 今のところそれを行う方法が見つかりませんでした!

4

2 に答える 2

1

それらが の下にある場合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>

マイナーアップデート & 免責事項:

すでにご存知かもしれませんが、ログイン/ログアウト時に実行されるクロージャがいくつかあります。少なくとも、私が盲目的に spring-boot から継承している v1.3.1login.groovyでは、クラスパスで最初に見つかったものを選択します。私のプロジェクトのアーティファクトは、他のすべての依存関係とともに RPM にパッケージ化されています。その名前は で始まるため、デフォルトが存在する場所のrcrash.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>
于 2015-08-04T11:59:30.237 に答える
-1

コマンドを次の場所に置くことができますsrc/main/resources/commands/

于 2015-07-14T09:47:05.397 に答える