Mavenを使用して実行可能なjarファイルを作成しています。つまり、「Java-jarfile.jar」を使用して実行します。
ユーザー定義のプロパティ(キー/値を含むファイルのみ)に依存したいのですが、開発フェーズでは、「user.properties」ファイルをmaven/src/main/resources /フォルダーに配置していました。
私のプロパティファイルは次のものでロードされます:
final Properties p = new Properties();
final InputStream resource = IOParametres.class.getResourceAsStream("/user.properties");
p.load(resource);
今、私はそのファイルをJARの外に保持し、次のようなものを作成したいと思います。
- execution_folder
|_ file.jar
|_ config
|_ user.properties
Maven-jar-plugin、maven-surefire-plugin、maven-resources-pluginなどのmavenプラグインで多くのことを試しましたが、機能しません...
よろしくお願いします!
Maven構成のみを使用して必要なものを見つけました。
まず、configフォルダーをクラスパスに追加します。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifestEntries>
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
以前と同じ方法でリソースをロードします。
final InputStream resource = IOParametres.class.getResourceAsStream("/user.properties");
p.load(resource);
また、サンプルリソースファイルをリポジトリに保持し、ビルドから削除する場合は、次のようにします。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>user.properties</exclude>
<exclude>conf/hibernate.cfg.xml</exclude>
</excludes>
</resource>
</resources>
</build>
Jarファイルの横に、必要なすべてのリソースファイルを保持するconfigフォルダーを追加します。
結果は次のとおりです。
助けてくれてありがとう、そしていつか誰かに役立つことを願っています!
コメントで述べたように、user.properties
ファイルを単にjarの横にあるテキストファイルとして使用したいようです。その場合、それを使用するよりもかなり単純です-実行時にチェックすると、jarファイルを含むディレクトリが現在のディレクトリになります。つまり、必要なのは次のことだけです。
properties.load(new FileInputStream("config/user.properties"));
プロジェクトのクラスパスに入れようとせずに。
また、他に何かする必要がある場合は、プロパティをリソースディレクトリからターゲットにコピーするだけで、手作業で行う手間を省くことができます。これは、maven-antrun-pluginによって実現できます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<mkdir dir="${project.build.directory}" />
<copy file="${basedir}/src/main/resources/user.properties" tofile="${project.build.directory}/config/user.properties" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>