Java - 如何从Java类引用资源文件

时间:2012-11-21 13:29:10

标签: java spring classpath

我想在Java测试类中引用资源文件,它是一个密钥库文件。此属性通常从属性文件加载,该文件指向本地或远程运行的JDK。

当Maven在构建过程中执行构建时,它首先构建在构建服务器上。我希望能够将密钥库文件放在类路径上,这样我就不必在构建服务器上放置一个硬依赖(我将密钥库放在构建服务器上)

当我在本地连接单元测试时,它可以正常使用此配置,但是当我在构建服务器上执行构建时,此路径会失败。任何人都能解释为什么会失败吗?我能做些什么来解决?我想我知道为什么,但澄清会很棒。

当前配置

<bean id="httpClient"
    class="myapp.HTTPClient">
    <property name="trustStoreLocation" value="..\\mywebapp\\target\\test-classes\\truststore" />
    <property name="trustStorePass" value="mypass" />
</bean>

1 个答案:

答案 0 :(得分:0)

对于资源文件,我更喜欢遵循Maven的标准目录结构。请阅读(http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)以获取更多参考。在src / test / resources和src / main / resources中放置类似(.cfg或.jks或.properties)的文件会在构建时自动在类路径中提供。此外,它使您能够隔离测试和主要资源文件。

例如,我的pom.xml看起来像这样:

<build>
    <finalName>${project.artifactId}</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/config</directory>
        </resource>
         <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
    <testResources>
        <testResource>
            <directory>src/main/config</directory>
        </testResource>
         <testResource>
            <directory>src/main/resources</directory>
        </testResource>
    </testResources>

    <!-- Other pom.xml stuff -->

</build>

现在,验证文件是否已正确复制的简单方法是将jar列表并检查所需的文件。

mvn build

然后做:

jar -tf target/<your project jar>.jar | grep "<file name you want to verify>"