如何根据正在执行的目标激活配置文件

时间:2013-04-12 06:02:20

标签: google-app-engine maven maven-3

当我从命令行执行某些目标时,我想“自动”激活一个配置文件。

E.g。我现在在做什么:

mvn appengine:devserver -Pdevelopment

mvn appengine:update -Pproduction

基本上我想在运行devserver目标时自动激活开发配置文件。 我在运行更新目标时要激活的生产配置文件也是如此(除非使用-P选项明确覆盖)。

这可能吗?

2 个答案:

答案 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:updateappengine:devserver是“或/或”(我相信它们)你正在转移路径,应该使用配置文件,真的,并且仍然最终会至少有两件事情您的命令行,即阶段和所需的配置文件。如果有一个典型案例和一个例外情况,您可以表示默认配置文件激活(activeByDefault)并明确选择另一个配置文件(-P):

mvn deploy // choose default profiles
mvn deploy -Pproduction // ignore default profiles

如果要同时执行这两项操作(例如,在集成测试阶段devserver和部署期间update),可以通过与{executions绑定的插件phase来配置生命周期。 {1}}随后。你只需要在命令行上有一件事,即阶段。