0

コードでプロパティファイルにアクセスしています

    ClassName.class.getClassloader().getResourceAsStream("config/config.properties"));

    this.getClass.getClassloader().getResourceAsStream("config/config.properties");

プロパティ ファイルがリソース ディレクトリにある場合、すべて正常に動作し、問題なく maven exec プラグインを使用してプログラムを実行できます。電話するしかない

    mvn exec:java -Dexec.mainClass="MyMainClass"

しかし、このアプローチは大きな欠点です。プロパティファイルが含まれています

「config/config.properties」ファイルが「src」内になくても、jar に含まれていなくても、maven exec プラグインで使用できるように、maven 構成を変更するにはどうすればよいですか?

注:明確にするために、アプリケーションが本番環境で実行されるときに必要な構成ファイルがどこにあるのかわかりません。私はそれがクラスパスにあることを知っています。これが私が使用する必要がある理由でありgetResourceAsStream()、jarファイルに含めないようにする必要があります。

4

1 に答える 1

1

これを使用getClassloader().getResourceAsStream()すると、クラスパスで利用可能なファイルにアクセスしようとしています。ただし、クラスパスにないファイルを参照しています。したがって、オプションが必要です:

  • config-folder をクラスパスに追加します。に を追加することでそれを行うことができます<resource>pom.xml、その効果は を持っているのとまったく同じsrc/main/resources/config/config.propertiesです。
  • クラスパス ファイルからではなく、既知の場所にあるファイルからプロパティを読み取ってください。これは私の好ましい解決策です。この解決策については、他のリンクを参照したいと思います。あなたの場合、それを引数として追加し、public static void main(String[]). new File("config/config.properties")または、実行ルートに対して相対的に計算されるため、から読み取ることができます。
于 2014-09-17T16:44:46.700 に答える