1

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

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

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

当前配置

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

1 回答 1

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>"
于 2012-11-21T15:57:34.647 回答