如何根据正在执行的目标启动配置文件(How to activate profile based on

2019-08-22 04:24发布

当我在命令行中执行一定的目标,我想激活一个配置文件“自动”。

比如我现在做:

mvn appengine:devserver -Pdevelopment

mvn appengine:update -Pproduction

基本上,我想作为我运行devserver目标自动激活发展概况。 同样的,我想激活,当我运行了更新的目标(除非使用-P选项明确覆盖)型材生产。

这可能吗?

Answer 1:

在Maven的模型告诉我们,作为配置文件包括各种元素,包括与构建 。 如下面的例子: -

<profile>
    <id></id>
    ...
    <build>
        <plugins>
           <plugin></plugin>
           ...
        </plugins>
    </build>
</profile>

正如我们上面看到的, profile控制plugin 。 然后回答你的问题是没有。 我们不能让plugin启动profile

我希望这可以帮助。



Answer 2:

我同意前面的结论,你不能做到这一点。 我之前看到的推理可能会稍微落后。

该插件通过定义在命令行的目标(在该问题的特定情况下)活化,而不是由该插件在配置文件之中。

这可能是插件的默认配置( plugin.configuration你试图覆盖这种方式,而不是特定的执行(配置) plugin.executions.execution.configuration )。 这没意见。 但泡菜是获取配置文件启动。

如果你在你的命令行让所有的目标(如appengine:update )有没有办法 ,要去激活的轮廓 。

当你阅读的讨论轮廓激活 (如我固执地在过去做了很多),你会发现,有轮廓的激活方面仍然受到很多人的期望很多。 对目标执行依据是什么激活配置文件甚至没有,我还没有碰到一个愿望 - 只是说:不要让你的希望。

你也可能不知道你想做什么是否真的合适。 你真的需要运行的目标,或者可能你有点仍然受益于Maven的生命周期 ?


Maven的生命周期是一个真正的(直线)路径完成,通过遍历阶段。 如果你想转移基于一定的条件下,这种路径,配置文件是要走的路。 如果appengine:updateappengine:devserver是“要么/或”(我相信他们是)你转移的路径,应该使用配置文件,真是的,最终仍要与具有您的命令行,至少两件事,即,在相位和所希望的轮廓。 如果有一个典型的例子,一个特殊的情况下,你可以表达,通过默认配置文件激活( activeByDefault ),并明确选择其他配置文件( -P分别对应)。

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

如果你想(例如两者都做devserver在集成测试阶段,并update部署期间)的生命周期可以配置为通过插件来实现executions被绑定到一个phase之后。 你只会对你的命令行一两件事,即相位。



文章来源: How to activate profile based on goal being executed