4

我有使用 maven 构建的 java 项目,其中有几个以相同方式构建的子模块:有可执行 jar、lib 目录中的依赖 jar、一些资源等。

模块之间的配置仅在主类中有所不同。因此,我想创建某种预配置的构建(或宏,或其他),以不将构建插件的相同配置复制到不同的 pom.xml 模块,而是以主类作为参数重用相同的配置。

我怎样才能做到这一点?

(构建配置: http: //pastebin.com/9Fm5rFK7

4

1 回答 1

2

您可以使用 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 的属性。

希望这可以帮助。

于 2013-06-19T00:22:12.210 回答