2016-12-06 17 views
1

JavaプロジェクトがGradleを使用しています。 distZipというタスクでアプリケーションを配布するときに、コンフィグレーションフォルダconfを含めたいと思います。Java/Gradleのプロパティファイルからの相対パスでファイルが見つかりません

これは私の現在のプロジェクト構造からの抜粋です。

src  
|-- dist 
    |-- conf 
     |-- application.properties 
     |-- keystore.jks 
     |-- truststore.jks 

confフォルダが正常に配布されました。

私のmain()では、プロパティが正しく動作するnew File("src/dist/conf/application.properties")をロードします。

application.propertiesは、2つのプロパティが含まれています

keystore.location = ./keystore.jks 
truststore.location = ./truststore.jks 

のIntelliJからアプリケーションを起動するとき、それはfinde動作しますが、配布を開始するときsrc/dist/confが存在するだけでconfていないので、それはkeystore.jkstruststore.jksを見つけることができません。

これらのファイルが検出されるようにするにはどうすればよいですか?

+0

これらのファイルをGradleまたはJavaで検索しませんか? –

+0

Java自体はそれらを見つけることができません。 –

+0

絶対パスを使用しようとしましたか?テストのためだけに –

答えて

1

src/dist/confフォルダには、Java gradleプラグイン(およびIntelliJ)のリソースフォルダはありません。これは、アプリケーションプラグイン(distZipタスク)によって選択されます。 IntelliJは、実行ディレクトリをプロジェクトのルートパスに設定します。したがって、src/dist/conf/application.propertiesを読むことができます。

のsrc /メイン/リソースから のconf/distのフォルダからのファイルを移動

、彼らはprocessResourcesタスクによって発見され、このフォルダは、リソースフォルダとしてのIntelliJによって認識されるべきです。クラスパスにリソースノードがrootとして存在するため、絶対クラスパスを使用してファイルにアクセスできます。 (ストレートフォワードサンプル:new File(YourClass.class.getResource("/dist/application.properties").getFile())

私は、彼らはクラスパスの一部ではないので、それは、のconf/distのフォルダ内のファイルを読むためにずっと努力が必要だろうと思います。

関連する問題