Configuration:
Description:
假设我们有如下配置文件的配置:
<profiles>
<profile>
<id>profile-1</id>
<activation>
<jdk>1.6</jdk>
<property>
<name>name</name>
<value>Hubert</value>
</property>
</activation>
</profile>
<profile>
<id>profile-2</id>
<activation>
<jdk>1.6</jdk>
<property>
<name>name</name>
<value>Wiktoria</value>
</property>
</activation>
</profile>
</profiles>我们有两个侧面:配置文件-1和配置文件-2。
当满足两项要求时,配置文件-1应处于活动状态:
- jdk is version 1.6
- property _name_ has value _Hubert_ 问题:
让我们检查一下这个配置:
mvn -Dname=Hubert帮助:活动配置文件
因此,我得到了两个活动配置文件: profile-1和profile-2。
嗯..。
配置文件配置文件-2不应该是活动的,因为属性名的值不同于预期的Wiktoria。
有人能解释一下为什么会这样吗?这是正常的行为吗?
谢谢。
发布于 2013-12-18 13:44:33
这里的问题是,带有触发器条件的激活列表与OR连接。他们确实有一张去提供多个激活触发器的票,但还是开着的。这意味着它与您的sdk规则相匹配,该规则是真的,因此是活动的。
<profile>
<id>profile-1</id>
<activation> <!-- true || true = true -->
<jdk>1.6</jdk> <!-- true -->
<property> <!-- true -->
<name>name</name>
<value>Hubert</value>
</property>
</activation>
</profile>
<profile>
<id>profile-2</id>
<activation> <!-- true || false = true -->
<jdk>1.6</jdk> <!-- true -->
<property> <!-- false -->
<name>name</name>
<value>Wiktoria</value>
</property>
</activation>
</profile>发布于 2013-12-18 14:42:10
注意:,这只是对查斯莫正确答案的补充。
有一本来自sonatype的书描述了Maven。在奏鸣曲书籍(第5.3.1节)部分,我们可以找到:
当满足所有激活条件时,将激活配置文件。
这不是真的。事实上,有一个条件可以激活配置文件,这当然等于或逻辑条件。此行为在Maven博士中描述:
当满足了一个或多个指定的条件时,激活就会发生。当遇到第一个正结果时,处理停止,配置文件被标记为活动。
这对我来说既不重要,也不十分有用。但在撰写这篇文章时,maven就是这样工作的。
有一张用于和连接的票证MNG-4565。这是标记为Bug,但根据Maven doc,它不是,所以这张票已经打开了近4年。最有用的部分是对这张票的最后评论,这张票是由写的。他的评论指向了这个消息来源:和-激活-配置文件选择器。这会将默认的maven或条件更改为和条件。测试过了。很管用。当然,如果你决定使用这个,你还有一件事要记住。
https://stackoverflow.com/questions/20659666
复制相似问题