maven2 と Java jar プロジェクトに少し問題があります。
これが私のプロジェクトファイルシステムです:
MyApp
-- /src/main/java
-- my.package
-- Main.java
-- /src/main/resources
-- application.properties
Pom.xml は、標準の Maven プラグインを使用してカスタマイズされたパッケージ フェーズを持つように構成されます。
<!-- copy resources from /src/main/resource to target -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- create an executable jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>my.package.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- copy dependencies jars to target/lib folder -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
この構成を使用して mvn パッケージを呼び出すと、すべて正常に機能します。新しい jar がターゲット フォルダー内に作成され、リソースと依存関係がコピーされます。ファイル application.properties は new File("application.properties") を介して参照され、JRE によって検出されます。ターゲットフォルダーから手動でjarを実行すると機能します!
今私の問題: exec-maven-plugin を追加して、Eclipse 内でプロジェクトを直接実行したいと考えています。pom.xml 内の新しいプラグインは次のとおりです。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<mainClass>my.package.Main</mainClass>
</configuration>
</plugin>
このようにして、クラスが実行され、すべての依存関係が満たされますが、リソース (特に application.properties) が見つかりません。これは、プログラムの作業ディレクトリが MyApp/target の代わりに MyApp であるためです。構成を使用しても無駄です。
どうすればこの問題を解決できますか?? 前もって感謝します