我有一个聚合 Maven POM foobar
,它有几个模块,包括 foobar-api
和 foobar-web
。 foobar-web
POM 实际上创建了一个 WAR 文件,它使用 tomcat7-maven-plugin
通过 tomcat7:deploy
部署到 Tomcat目标。
如果我将 tomcat7:deploy
目标绑定(bind)到 deploy
阶段,我相信我可以在 上执行
项目并将 WAR 自动部署到 Tomcat。但是,如果我在 mvn clean deploy
>foobar-webfoobar
聚合 POM 上执行此操作,它会不会提示“部署失败:在 distributionManagement 元素内的 POM 中未指定存储库元素……”?
我如何关闭多模块 Maven 项目中某些模块的部署,以便在聚合 POM 上执行 mvn deploy
不会在非 Web 项目上失败?
作为替代方案,即使我没有将 tomcat7:deploy
目标绑定(bind)到 deploy
阶段,我如何调用 tomcat7:deploy
聚合 POM 的目标并防止那些没有定义 tomcat7-maven-plugin
的模块出现错误?
最佳答案
您可能混淆了 tomcat7-maven-plugin
的 maven deploy phase
和目标 deploy
。
Maven deploy
是 Maven 构建生命周期的阶段,旨在将结果 Artifact 复制到远程存储库。
更多信息:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
tomcat7:deploy 默认绑定(bind)到 package phase,所以如果你不改变这个设置,你只能通过运行 mvn clean package
deploy to tomacat
。
如果你想保持 tomcat7:deploy
绑定(bind)到 deploy
maven 阶段,你可以在你的模块中添加
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
但这阻碍了这些模块的所有 Maven 部署。
关于maven - 跳过聚合 Maven POM 中某些模块的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154678/