我有使用maven的java项目构建,其中有几个子模块以相同的方式构建:有可执行jar,lib目录中的依赖jars,一些资源等。
模块之间的配置仅在主类中有所不同。因此,我想创建某种预配置的构建(或宏或其他),以便不将相同的构建插件配置复制到不同的pom.xml模块,而是将main-class作为参数重用相同的配置。
我怎样才能做到这一点?
(构建配置:http://pastebin.com/9Fm5rFK7)
答案 0 :(得分:2)
您可以使用maven properties对其进行参数化,在inherited之后覆盖它们。在您的情况下,您可以引入mainClass属性并在父模块的插件配置中使用它,例如<mainClass>${mainClass}</mainClass>
。然后可以在子模块中覆盖此属性。
编辑:
对于父pom,我指的是pluginManagement部分(抱歉不清楚)。我在这里用你的构建配置创建了一个例子:
https://gist.github.com/ceilfors/5827916
我认为这是你在儿童模块中获得的最低限度。由于jar包装类型,maven-jar-plugin
是可选的。请参阅lifecycle bindings,您可以看到该插件将在package
阶段被调用。
此外,当您的项目变得更加复杂时,您也可以探索如何merge插件配置。我在这里创建了另一个例子:https://gist.github.com/ceilfors/5828039。请注意,未使用mainClass的属性。
希望这有帮助。