当我从命令行执行某些目标时,我想“自动”激活一个配置文件。
E.g。我现在在做什么:
mvn appengine:devserver -Pdevelopment
mvn appengine:update -Pproduction
基本上我想在运行devserver目标时自动激活开发配置文件。 我在运行更新目标时要激活的生产配置文件也是如此(除非使用-P选项明确覆盖)。
这可能吗?
答案 0 :(得分:5)
Maven Model告诉我们the profile包含各种元素,包括build。如下例所示: -
<profile>
<id></id>
...
<build>
<plugins>
<plugin></plugin>
...
</plugins>
</build>
</profile>
如上所述,profile
控制plugin
。然后你的问题的答案是否定的。我们无法让plugin
激活profile
。
我希望这可能有所帮助。
答案 1 :(得分:2)
我同意之前的结论,即你不能这样做。我之前看到的推理可能会略微落后。
通过在命令行上定义目标(在此问题的特定情况下)而不是插件位于配置文件中来激活插件。
可能是插件默认配置(plugin.configuration
),您尝试以这种方式覆盖,而不是特定执行的配置(plugin.executions.execution.configuration
)。我很好。但是泡菜是为了激活配置文件。
如果您在命令行中拥有的只是目标(例如appengine:update
),那么无法就会activate a profile。
当你阅读关于profile activation的讨论时(因为我过去顽固地做了很多),你会发现许多人在配置文件激活方面仍然需要很多。根据目标的执行来激活配置文件甚至不是我所遇到的愿望 - 只是说:不要抱有希望。
您可能也想知道您尝试做的事情是否合适。你真的需要实现目标吗?或者你还能以某种方式从Maven lifecycle中受益?
Maven生命周期实际上是一条(直线)完成路径,遍历各个阶段。如果您想根据特定条件转移此路径,则可以使用配置文件。如果appengine:update
和appengine:devserver
是“或/或”(我相信它们)你正在转移路径,应该使用配置文件,真的,并且仍然最终会至少有两件事情您的命令行,即阶段和所需的配置文件。如果有一个典型案例和一个例外情况,您可以表示默认配置文件激活(activeByDefault
)并明确选择另一个配置文件(-P
):
mvn deploy // choose default profiles
mvn deploy -Pproduction // ignore default profiles
如果要同时执行这两项操作(例如,在集成测试阶段devserver
和部署期间update
),可以通过与{executions
绑定的插件phase
来配置生命周期。 {1}}随后。你只需要在命令行上有一件事,即阶段。