src/main/resources
(通常のMavenリソースディレクトリ)にはいくつかのリソースがあります。 JARを作成すると、src/main/resources
以下のすべてのリソースファイルがJARのルートにコピーされます。
FileInputStream
を使用してファイルを開こうとしていますが、これはsrc/main/resources
にあり、JARファイルとしてパッケージ化せずにプロジェクトを実行すると効果的です。しかし、私がJARファイルからプロジェクトを実行しているときに、私のリソースがもうsrc/main/resources
になく、代わりに${project.basedir}
になっているので、多くはFileNotFoundException
になります。
私はそれらをJARファイルのsrc/main/resources
に配置したいと考えています。出来ますか?
私のビルド構成は以下の通りである:
<build>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<plugins>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>EmployProject.TestAlgo</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>TestAlgo</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
編集
それが不可能な場合は、どのような、私のコードでは、私は自分のリソースファイルにアクセスするために使用する必要がありますか?
使用Mavenのシェードプラグイン – Arun
うんうーん、なぜ私はそれを使用する必要がありますがJAR内 リソースは、このように私が変更、ファイルではありませんか?どのようなメリットがあり、どのように私の問題を解決するのですか? –
私のリソースファイルはJARに含まれています。問題はそれらが私のプロジェクトのルートに置かれ、コード内でgetClass()。getResource(fileName)を使ってアクセスしようとすると、ファイルが見つからないためにnullが返されるということです。 –