装配好的jar不会在同一个文件夹中找到hbase-site.xml

时间:2013-03-27 14:41:36

标签: java maven hbase

我已经在这里找到了一些有用的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正在使用不同的Loader?

如何让HBase从与执行jar文件位于同一目录中的文件加载配置?

修改

我创建了可执行jar,当我用java -jar运行它时,还将hbase-site.xml放入jar所在的同一文件夹中,初始化hbase时,它不会读取我的配置< / p>

1 个答案:

答案 0 :(得分:0)

我找到了以下解决方法。使用以下脚本启动jar

java -cp .:/path/to/myapp.jar com.company.MainClass

使其读取位于同一文件夹中的hbase-site.xml。 (这是基于此问题提供的答案:How to include hbase-site.xml in the classpath)但我更喜欢使用默认

java -jar myapp.jar

命令。如果您知道如何实现这一点(使maven组装的jar包括路径中的文件夹),请告诉我。与此同时,我将坚持这种解决方法。