我们有一个应用程序,其中包含多个生成可部署工件的模块。我们通过仅指定依赖项的“父 pom”和仅具有模块列表的“聚合器 pom”将“父”层次结构与“模块”层次结构分开。我们有一个主要的聚合器 pom,它列出了我们所有的模块,包括父 pom 和“工件” pom。
大多数“工件” pom 都会产生我们最终想要部署到 OSGi 服务器 (karaf) 的东西。我们希望能够运行构建所有内容并将每个可部署模块部署到 Karaf 的构建。我们可以使用“maven-exec-plugin”指定部署。在所有可以构建可部署工件的模块的父 pom 中,我们指定一个包含 maven-exec-plugin 定义的配置文件。
我们使用“mvn clean install -Pprofilename”运行构建。这接近工作,但它抱怨“父pom”上的警告,因为它们没有任何要部署的东西。
我还没有尝试过,但我推测可能可行的方法是在父 pom 中的配置文件定义中添加一个“激活”部分,该部分指定一个类似“canDeployToKaraf”的属性。然后我认为我们只会在生成可以部署到 Karaf 的工件的 pom 中定义这个属性。
是否会为聚合器 pom 尝试构建的每个模块考虑配置文件激活,还是会为整个构建激活或不激活?如果是前者,那么这种策略似乎有可能奏效。如果是后者,那就不行了。
这行得通吗?有一个更好的方法吗?
附录:
刚刚向我指出,尝试在命令行上手动指定配置文件,然后尝试“不激活”某些 pom 的配置文件是没有意义的。在命令行上指定配置文件“激活”配置文件。
我真正需要做的是弄清楚如何在父 pom 中配置“maven-exec-plugin”,以便它在子 pom 中的行为是合适的。在需要部署到 Karaf 的子 pom 中,但在不产生可部署工件的子 pom 中,它什么也不做。
有没有人看到这样做的方法?