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