2017-02-20 10 views
-1

私は3つのモジュールを持つjavaプロジェクトを持っています。メインJARからのファイルパスを指定する方法(依存関係ではない)JAR

[ ] Utils 
    ----->code 
    ----->pom.xml 
[ ] Module B 
    ----->Resources\config.xml 
    ----->code 
    ----->pom.xml 
[ ] Module C 
    ----->Resources\config.xml 
    ----->code 
    ----->pom.xml 

utilsのモジュールは、utilsのはModuleBとModuleCの両方が使用する「ReadConfig」機能を有するモジュールAおよびモジュールBの両方の依存です。モジュールBとモジュールCは、リソースフォルダに異なる設定を持っています。

モジュールBとモジュールCは、理想的には依存関係を持つスタンドアロンのjarとして実行し、ターゲットディレクトリ(jarがあるディレクトリと同じディレクトリ)からconfig.xmlを読み込みます。このコードは、Utilsのモジュールである

public static final String JAR_PATH = Constants.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
public static final String CONFIG_PATH = JAR_PATH.substring(0, JAR_PATH.lastIndexOf('/')) + "/config.xml"; 

は現在、私はを通じて、設定ファイルの場所を取得します。

私はプロジェクトを実行すると、IntelliJ(およびnetbeans)で、JAR_PATHがUtilsターゲットディレクトリです。私はこれがモジュールAまたはモジュールBのターゲットディレクトリのいずれかを指し示すようにします。

私の質問は以下のとおりです。

  1. このシナリオでは、ベストプラクティスは何ですか。 2つのモジュールが異なる設定ファイルを使用する場所。
  2. モジュールを実行しているときに、intellij/netbeansをモジュールA/Bをスタンドアロン(依存関係を持つjar)にする方法(mvnアセンブリを行う場合:単一で、依存関係のあるjarファイルを生成します。 IntelliJの)
+0

あなたは何を求めているのかはっきりしていませんし、一度に1つ質問してください。 –

答えて

0

あなたがあなたのjarアプリのファイルを実行した場所からディレクトリからいくつかのファイルを読むために必要がある場合は、 そしてちょうど使用します(それはあなたがあなたのアプリケーションを実行し、そこからディレクトリへの相対パスとして解決されます)

File f = new File("someDirInDirWhereMyJarIsRunFrom/myConfig.xml"); 
FileInputStream fis = new FileInputStream(f); 
// read the "fis" 

これはあなたのアプリフォルダの構造が次のようになっているとします:

+ YourAppFolder 
    |---> yourApp.jar 
    |---+ someDirInDirWhereMyJarIsRunFrom 
     |--->myConfig.xml 
+0

ありがとう!これは私がやったことです。 – t0m9er

関連する問題