我在项目中有以下文件:
com/example/module/Messages.java
com/example/module/messages.properties
使用ShrinkWrap.create(WebArchive.class, "test.war").addPackages(true, "com.example.module")
只会将Messages.java
添加到生成的存档中。如何添加messages.properties
?
感谢。
修改
我现在正在使用addAsResource
,但它仅适用于test/resources
文件夹下的文件。如何使其与main/src
下的文件一起使用?是否有任何maven配置?
目标是不重复文件。现在我在main/src
下有一个文件,在test\resources
下有一个副本。
答案 0 :(得分:7)
我最后将此配置添加到我的POM中:
<build>
<testResources>
<testResource>
<directory>${basedir}/src/main/java/</directory>
<includes>
<include>**/*.properties</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
<testResource>
<directory>${basedir}/src/test/resources/</directory>
</testResource>
</testResources>
</build>
然后我添加了属性文件:
.addAsResource("com/example/module/messages.properties")
现在Maven将我的messages.properties
复制到目录target/test-classes
。因此,ShrinkWrap会在类路径中找到它。
答案 1 :(得分:2)
您可以使用addAsResource
方法添加文件。该方法在此处定义:https://github.com/shrinkwrap/shrinkwrap/blob/master/api/src/main/java/org/jboss/shrinkwrap/api/container/ResourceContainer.java#L86
答案 2 :(得分:1)
这种情况下的技巧是将资源添加为文件:
addAsResource(new File("src/main/foobar.properties"), "foobar.properties"))
。
否则它必须存在于类路径中 - 请参阅org.jboss.shrinkwrap.impl.base.container.ContainerBase.fileFromResource(String resourceName)
。