ここで役立つ Q&A をいくつか見つけましたが、問題は解決しません。pom ファイルで次のプラグインを使用しています。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>hbase-site.xml</exclude>
<exclude>log4j.properties</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>myfinalname</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest><mainClass>com.company.MainClass</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
ご覧のとおり、(src/main/resources にある) プロパティ ファイルを除外し、 Class-Path: も追加します。マニフェストに。しかし、hbase を初期化するときに、jar ファイルと同じフォルダーにある hbase-site.xml が見つかりません。
除外を削除するとすべて問題ありませんが、ファイルが結果のjarファイル内に含まれないようにして、ユーザーが編集できるようにする必要があります。
これは機能するはずなので、これが HBase の問題なのかどうか疑問に思っています。HBase が別のローダーを使用している可能性がありますか?
実行中のjarファイルと同じディレクトリにあるファイルからHBaseに構成をロードさせるにはどうすればよいですか?
編集:
実行可能 jar を作成し、それを で実行するとjava -jar
、hbase-site.xml を jar と同じフォルダーに配置すると、hbase を初期化するときに構成が読み取られません。