我想在Java测试类中引用资源文件,它是一个密钥库文件。此属性通常从属性文件加载,该文件指向本地或远程运行的JDK。
当Maven在构建过程中执行构建时,它首先构建在构建服务器上。我希望能够将密钥库文件放在类路径上,这样我就不必在构建服务器上放置一个硬依赖(我将密钥库放在构建服务器上)
当我在本地连接单元测试时,它可以正常使用此配置,但是当我在构建服务器上执行构建时,此路径会失败。任何人都能解释为什么会失败吗?我能做些什么来解决?我想我知道为什么,但澄清会很棒。
当前配置
<bean id="httpClient"
class="myapp.HTTPClient">
<property name="trustStoreLocation" value="..\\mywebapp\\target\\test-classes\\truststore" />
<property name="trustStorePass" value="mypass" />
</bean>
答案 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>"