如何使mvn appengine:deploy命令行项目参数优先级高于pom.xml配置?
解决App Engine Maven插件命令行参数优先覆盖pom.xml配置的问题
我来帮你搞定这个问题——你之前的命令没生效,核心原因是用错了命令行参数的名称,导致App Engine Maven插件没有识别到你想覆盖pom.xml里的project配置。
正确的部署命令
把你的命令改成下面这样,就能让命令行指定的项目优先生效:
mvn appengine:deploy -Dappengine.project=projectname1
为什么原来的命令不工作?
对于com.google.cloud.tools:appengine-maven-plugin这类Maven插件,要覆盖pom.xml里的配置参数,需要遵循-D<插件前缀>.<参数名>的格式。这里插件的前缀是appengine,你要覆盖的参数是project,所以正确的系统属性名是appengine.project。
你之前用的-Dproject是个通用参数,插件根本不会把它当成覆盖自身project配置的指令,所以自然还是用了pom里写死的projectname2。
额外验证小技巧
如果你想确认插件的参数对应关系,可以运行这条命令查看详细的参数说明:
mvn appengine:help -Ddetail=true
里面会明确列出每个配置项对应的系统属性,以后遇到类似问题就能自己查啦。
适配Jenkins的动态部署
在Jenkins里,你可以先设置一个字符串构建参数(比如叫TARGET_PROJECT),然后在Maven构建步骤里用这个参数动态指定部署目标:
mvn appengine:deploy -Dappengine.project=${TARGET_PROJECT}
这样Jenkins就能完全自主选择部署的项目,再也不受pom.xml里固定配置的限制了。
内容的提问来源于stack exchange,提问作者Saifer
相关产品推荐
相关产品推荐

