我有一个可配置的属性line.ending,我在项目构建的组装阶段使用它来指定我的应用程序属性文件的行尾类型。为此,我创建了两个配置文件LF_DOS和LF_UNIX,这样当我启动时:
mvn install
或者
mvn install -P LF_DOS
line.ending等于'dos',当我启动时:
mvn install -P LF_UNIX
line.ending等于 'unix'。
我第一次尝试这样做很简单:
<profile>
<id>LF_UNIX</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<line.ending>unix</line.ending>
</properties>
</profile>
<profile>
<id>LF_DOS</id>
<activation>
<property>
<name>!line.ending</name>
</property>
</activation>
<properties>
<line.ending>dos</line.ending>
</properties>
</profile>
不幸的是,无论是否设置了 LF_UNIX ,这总是给了我line.ending=dos 。奇怪......但是,让我更困惑的是,我只是通过更改配置文件声明顺序来解决问题,如下所示:
<profile>
<id>LF_DOS</id>
<activation>
<property>
<name>!line.ending</name>
</property>
</activation>
<properties>
<line.ending>dos</line.ending>
</properties>
</profile>
<profile>
<id>LF_UNIX</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<line.ending>unix</line.ending>
</properties>
</profile>
这完全符合我的要求。
我的问题是:这是一个错误吗?或者是否需要了解 maven 配置文件,一种使配置文件订单声明在这种情况下特别重要的限制?