当我从命令行执行某些目标时,我想“自动”激活配置文件。
例如我现在在做什么:
mvn appengine:devserver -Pdevelopment
mvn appengine:update -Pproduction
基本上我想在运行 devserver 目标时自动激活开发配置文件。我在运行更新目标时想要激活的生产配置文件也是如此(除非使用 -P 选项显式覆盖)。
这可能吗?
当我从命令行执行某些目标时,我想“自动”激活配置文件。
例如我现在在做什么:
mvn appengine:devserver -Pdevelopment
mvn appengine:update -Pproduction
基本上我想在运行 devserver 目标时自动激活开发配置文件。我在运行更新目标时想要激活的生产配置文件也是如此(除非使用 -P 选项显式覆盖)。
这可能吗?
我同意前面的结论,你不能这样做。之前看到的推理可能有点落后。
通过在命令行上定义目标(在这个问题的特定情况下)来激活插件,而不是通过配置文件中的插件来激活。
您尝试以这种方式覆盖的可能是插件默认配置 ( plugin.configuration
),而不是特定执行的配置 ( plugin.executions.execution.configuration
)。我很好。但是泡菜是为了激活配置文件。
如果您在命令行上的所有内容都是目标(例如appengine:update
),那么就无法激活profile。
当您阅读有关配置文件激活的讨论时(正如我过去经常做的那样),您会发现很多人在配置文件激活方面仍有很多需要。根据执行的目标激活配置文件甚至不是我遇到的愿望——只是说:不要抱太大希望。
您可能还想知道您正在尝试做的事情是否真的合适。你真的需要运行目标,或者你还能以某种方式从Maven 生命周期中受益吗?
Maven 生命周期实际上是一条(直接的)完成路径,遍历各个阶段。如果您想根据某些条件转移此路径,则配置文件是要走的路。如果appengine:update
并且appengine:devserver
是“非此即彼”(我相信他们是),那么您正在转移路径,应该使用配置文件,真的,并且最终仍然会在您的命令行上至少有两件事,即阶段和所需的配置文件。如果有一个典型情况和一个例外情况,您可以分别表示默认配置文件激活 ( activeByDefault
) 和显式选择另一个配置文件 ( -P
):
mvn deploy // choose default profiles
mvn deploy -Pproduction // ignore default profiles
如果您想同时执行这两项操作(例如devserver
,在集成测试阶段和部署期间),可以通过与后续绑定的update
插件将生命周期配置为执行此操作。您只需在命令行中添加一件事,即阶段。executions
phase