Par*_*ife 37 java maven-2 maven
我有一个简单的java maven项目.执行时我的一个类需要从类路径加载xml配置文件.我不想在生成jar时打包这样的xml文件但是我想在conf子文件夹下的zip程序集中包含一个默认的xml文件,我也希望在单元测试中可以使用这个默认的xml来测试它.
在我看来,这个默认的xml有两个可能的位置:
src/main/resources/conf/default.xmlsrc/main/conf/default.xml两种解决方案都需要特殊的pom动作
在解决方案1中,我在构建期间将自动复制到目标文件夹,这意味着它在测试中可用,但我也在生产的jar中得到它,我不想要它.
在解决方案2中,我得到了我想要的jar(没有xml)但我手动必须将xml复制到目标文件夹以供测试.(我不想在测试类路径中添加src的子文件夹.我认为这是不好的做法).
问题:两者的最佳解决方案是什么?
- 如果正确为2,将其复制到目标文件夹的最佳方法是什么?
- 有没有比这两个更好,更常见的其他解决方案?
(我还阅读了应该在哪里放置Maven项目的应用程序配置文件?但我想从"约定优于配置"的角度来了解最"正确的解决方案",这个链接提供了一些配置类型的解决方案,但没有任何约定但也许没有一个,但我还是要问.所提供的解决方案还包括AntRun插件和appAssembler插件,我想知道我是否可以完成它们.)
Pas*_*ent 50
问题是这两者的最佳解决方案是什么?如果正确为2,那么将其复制到目标文件夹的最佳方法是什么?有没有比这两个更好,更常见的其他解决方案?
由于您希望将该文件复制到该target/classes文件夹,因此它以某种方式被视为资源(因此要么放在下面,src/main/resources要么声明src/main/conf为资源目录).如果您不想在最终的jar中使用它,请配置Maven JAR插件以将其排除:
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<excludes>
<exclude>**/conf/*</exclude>
</excludes>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
对于装配零件,装配描述符非常灵活,因此应该可以实现您想要的任何选择.我建议使用最简单的设置.
| 归档时间: |
|
| 查看次数: |
22880 次 |
| 最近记录: |