我们有一个具有几个模块的应用程序,这些模块生成可部署的工件。我们将“父”层次结构与“模块”层次结构分开,方法是“父poms”只指定依赖项,而“聚合器poms”只有模块列表。我们有一个主聚合器pom,它列出了我们所有的模块,包括父poms和“工件”poms。
大多数“工件”poms产生了我们最终想要部署到OSGi服务器(karaf)的东西。我们希望能够运行构建所有内容的构建,并将每个可部署模块部署到Karaf。我们可以使用"maven-exec-plugin“指定部署。在可以构建可部署工件的所有模块的父级pom中,我们指定了包含maven-exec-plugin定义的配置文件。
我们使用"mvn干净安装-Pprofilename“运行构建。这几乎可以工作,但是它抱怨“父poms”上的警告,因为它们没有任何可部署的东西。
我还没有尝试过这一点,但是我的理论是在父pom中的配置文件定义中添加一个“激活”部分,它指定了像"canDeployToKaraf“这样的属性。然后,我认为我们只会在产生能够部署到Karaf的工件的poms中定义这个属性。
对于聚合程序pom试图构建的每个模块,配置文件激活是考虑的,还是对整个构建都是激活的?如果是前者,那么这一策略似乎有可能奏效。如果是后者,那就行不通了。
这个能行吗?有更好的方法吗?
增编
刚才有人向我指出,尝试在命令行上手动指定配置文件,然后尝试“不激活”某些poms的配置文件是没有意义的。在命令行中指定配置文件“激活”配置文件。
我真正需要做的是弄清楚如何在父pom中配置"maven-exec-plugin“,以便它在子poms中的行为是合适的。在可以部署到Karaf的子poms中,但是在不产生可部署工件的子poms中,它什么也不做。
有人能找到办法吗?
发布于 2013-12-05 13:44:58
我认为这可能是对个人资料的误用,但我不会太过分:)
因此,与其在父级中处理插件的实际执行,不如使用“插件管理”元素来管理来自父级的exec插件的配置。然后,我会将插件delcaration添加到每个pom中,这些pom实际上有一些要部署的东西。
如果您担心这不是很好,因为我的解决方案为所有需要它的子程序创建了插件元素,请考虑这一点--这是您想要“重用”的exec插件的配置。而且,我个人认为它的可读性要高得多;我对pom可读性的试金石是,您可以在构建时读取一个pom并知道它做了什么--如果继承它是插件执行的话,就不那么容易了。
发布于 2015-05-28 06:03:27
您需要使用<pluginManagement>
部分来配置要在整个项目中使用的插件。在<pluginManagement>
部分中有一个插件列表只会对它们进行配置,而不会激活它们。现在,您可以通过在模块的<plugins>
部分中列出插件来激活该模块中的插件。您只需要列出groupId
和artifactId
。没有从<pluginManagement>
部分继承的版本,也没有配置。
通过这种方式,您可以集中配置插件,同时给每个模块选择激活哪个插件的自由。
https://stackoverflow.com/questions/20411303
复制