我有一个聚合Maven POM foobar
,它有几个模块,包括foobar-api
和foobar-web
。 foobar-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
的模块?
答案 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部署都会制动。