tpd*_*pdi 35 resources copy maven maven-surefire-plugin
Maven的Surefire(测试)插件将mvn test-compile
文件复制src/test/resources
到target/test-classes
.它编译.java
的src/test/java
,并复制编译的.class
文件target/test-classes
.
但它不会复制资源src/test/java
,并且能够将测试资源放在.java
与其资源类相同的目录中比在并行层次结构中更方便src/test/resources
.
是否有可能让Maven从中复制资源src/test/java
?
ass*_*ias 39
bmargulies给出了答案,但让我填写一些细节.
<testresources>
可以添加到<build>
项目的POM 的节点,如下所示:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
</testResources>
Run Code Online (Sandbox Code Playgroud)
这会复制所有内容src/test/java
- 包括.java
我们不想要的源代码.
它也(如bmargulies仅暗示的那样)覆盖并替换<testResources>
所有其他POM继承的标准父POM中的默认设置(除非该继承被更改).标准的父副本src/test/resources
,所以通过覆盖它,我们不会像往常一样复制,这是我们不想要的.(特别是,我这样做的全部理由是使用单元,它希望unitils.properties
复制文件 - 而且(对我来说)无论如何都是如此src/test/resources
.
所以我们重新添加src/test/resources
:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
Run Code Online (Sandbox Code Playgroud)
它按列出的顺序复制,以便对于存在于/src/test/java
(和子目录)和/src/test/resources
(和子目录)中的文件,src/test/resources
版本是最终的版本test-classes
.
现在,我们只需要不复制.java
文件:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
Run Code Online (Sandbox Code Playgroud)
bma*_*ies 19
资源复制全部由maven-resource-plugin完成,如果您阅读了doc,您将看到如何从src/test/java添加资源复制.
有关测试资源目标,请参阅http://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html,该目标包含在默认生命周期中.
然后查看http://maven.apache.org/pom.html,并寻找<testResources>
.
归档时间: |
|
查看次数: |
48158 次 |
最近记录: |