我很难找到一种解决方案来构建我的EAR的不同版本(使用maven-ear-plugin)。
我想要的是能够生产EAR或进行生产的EAR,其中测试EAR具有不同的ejb-jar.xml部署描述符以及src / test文件夹中的一些其他类。
到目前为止,我发现的唯一方法是引入一个配置文件“ blubb”,在该配置文件中我覆盖了jar-plugin配置,以包括来自src / test / resources的ejb-jar.xml以及一些Java文件,并添加一个自定义后缀到我的工件ID(或设置分类器)。然后在我的部署pom中引入相同的配置文件,在此我依靠拥有后缀的工件来构建修改后的EAR。
我从各种来源读到,根据配置文件来生产同一项目的不同罐子是EVIL(即不是Maven方式)。(例如,在Maven最佳实践中,生成具有不同/已过滤类的多个jar?或http://blog.sonatype.com/people/2010/01/how-to-create-two-jars-from-one-project-and -为什么您应该/)
所以我的问题是,我该怎么做呢?如果我用测试专用代码构建一个附加模块,以便有条件地将其包含在配置文件中的部署中,则我的问题是,我的ejb-jar.xml必须驻留在该jar文件的META-INF目录中,因为我的附加文件“测试”模块将包含在另一个jar中,因此ejb-jar.xml将不会应用于我的原始jar中的ejb。
有什么建议,如何解决这个问题(使用修改后的部署描述符和其他类生成特殊的测试耳朵)?
小费和见解受到高度赞赏:-)
我找到了使用maven-dependency-plugin实现目标的方法。
基本的问题是,不应复制任何代码,但应按需构建具有附加/替换内容的相同模块。
我这样做的方法是制作第二个模块,并在声明中将要修改的模块作为唯一的依赖项。然后,在构建周期中,我添加了目标为“ unpack-dependencies”的maven-dependency-plugin,并选择在“ prepare-package”时将原始依赖项解压缩到target / classes文件夹中。
这样,我得到了第二个模块,其中包含第一个模块的内容,然后可以对调整后的模块的主要来源进行一些修改。
总的来说,这仍然是所有东西,但是很漂亮,在我看来,Maven曾有过一段时光,但现在该是一个更好的构建工具的时候了;-)
顺便说一句,如果有人知道一个更优雅的解决方案,我还是会开放的。我的问题经常是,在任何情况下我都不想复制我的配置甚至代码。看来Maven确实很难做到这一点...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句