我使用maven几个子模块是建立完全相同的方式Java项目建设:有可执行的JAR文件,在lib目录下的依赖罐子,一些资源等如何在maven中创建可重用的构建配置?
模块之间的配置不同,只有在主类。所以,我想创建一些预配置的构建(或宏,或其他),以便不将相同配置的构建插件复制到不同的pom.xml模块,而是重复使用与main-class相同的配置作为参数。
我该如何做到这一点?
(建筑结构:http://pastebin.com/9Fm5rFK7)
我使用maven几个子模块是建立完全相同的方式Java项目建设:有可执行的JAR文件,在lib目录下的依赖罐子,一些资源等如何在maven中创建可重用的构建配置?
模块之间的配置不同,只有在主类。所以,我想创建一些预配置的构建(或宏,或其他),以便不将相同配置的构建插件复制到不同的pom.xml模块,而是重复使用与main-class相同的配置作为参数。
我该如何做到这一点?
(建筑结构:http://pastebin.com/9Fm5rFK7)
你可以使用Maven properties参数它们,覆盖它们之后是inherited。在你的情况下,你可以引入mainClass属性,并在父模块的插件配置中使用它,例如<mainClass>${mainClass}</mainClass>
。这个属性可以在子模块中被覆盖。编辑:
对于父pom,我指的是插件管理部分(对不清楚)。我在这里创建了一个构建配置的示例: https://gist.github.com/ceilfors/5827916
我认为这是您可以在子模块中获得的最小值。由于罐子包装类型,因此maven-jar-plugin
是可选的。请参阅lifecycle bindings,您可以看到该插件将在package
阶段被调用。
此外,当您的项目变得更加复杂时,您可以探索如何merge插件配置。我在这里创建了另一个示例:https://gist.github.com/ceilfors/5828039。请注意,未使用mainClass的属性。
希望这会有所帮助。
[Maven - Inheritance](http://maven.apache.org/pom.html#Inheritance)是这样的吗? – atomman
我使用继承(对于依赖性和基本构建配置(如源代码级别)),但我无法将其用于构建配置:maven试图将其用于“父项目”(为此无法应用此规则),并且未能建立。 – Daniil
您能否提供一些来自您的pom.xml文件的摘录,或者是您的项目结构草图?另一个选择是[创建一个自定义的Maven插件](http://maven.apache.org/guides/plugin/guide-java-plugin-development.html) – noahlz