跳过聚合Maven POM中某些模块的部署

时间:2016-12-15 00:51:26

标签: maven tomcat deployment

我有一个聚合Maven POM foobar,它有几个模块,包括foobar-apifoobar-webfoobar-web POM实际上创建了一个WAR文件,并使用tomcat7-maven-plugin使用tomcat7:deploy目标部署到Tomcat。

如果我将tomcat7:deploy目标绑定到deploy阶段,我相信我可以在mvn clean deploy项目上执行foobar-web并将WAR自动部署到Tomcat 。但是,如果我要在foobar聚合POM上执行此操作,是否会抱怨“部署失败:未在分配管理元素中的POM中指定存储库元素...”?

如何关闭多模块Maven项目中某些模块的部署,以便在非Web项目上对聚合POM执行mvn deploy不会失败?

作为替代方案,即使我没有将tomcat7:deploy目标绑定到deploy阶段,如何在聚合POM上调用tomcat7:deploy目标并防止出现错误那些没有定义tomcat7-maven-plugin的模块?

1 个答案:

答案 0 :(得分:0)

您可能会混淆deploy phase的maven deploy和目标tomcat7-maven-plugin

Maven deploy是maven构建生命周期的阶段,旨在将结果工件复制到远程存储库。 更多信息:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

tomcat7:默认情况下,deploy会绑定到包阶段,因此如果您不设置此设置,则只能deploy to tomacat运行mvn clean package

如果您希望保留tomcat7:deploy绑定到deploy maven阶段,可以添加模块

<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>

但是这些模块的所有maven部署都会制动。