我有一个由同一文件中设置的属性激活的Maven配置文件:
<properties>
<platform>vanilla</platform>
</properties>
<profile>
<id>spark-2.2</id>
<activation>
<property>
<name>platform</name>
<value>vanilla</value>
</property>
</activation>
<modules>
<module>dependency/preload</module>
</modules>
</profile>
但是,当我运行mvn install时,依赖项/预加载未出现在反应堆构建序列中,最终导致编译错误。为什么同一个文件中的属性无用,我该怎么办?
答案 0 :(得分:1)
请问有什么要起作用的吗?为什么要静态将其固定到相同的pom?
通常,当您有许多配置文件时,您可能希望拥有一个配置文件:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
但是当然不一定。然后,其他配置文件会被明确触发或稍后提供几种方式。
我已附上Introduction to Build Profiles
的以下部分可以通过多种方式触发/激活配置文件:
- 明确
- 通过Maven设置
- 基于环境变量
- 操作系统设置
- 文件存在或丢失
环境变量部分是我认为您正在尝试使用的部分。并使其更加混乱,以后称为系统属性。因此,这是一个系统属性。稍后在同一文档中,您将看到用法:
<activation>
<property>
<name>debug</name>
</property>
</activation>
将通过(例如)激活:
mvn install -Ddebug
例如,以下操作无效:
export debug=true
mvn install
那么为什么不将pom属性用作系统属性或任何属性。我认为是因为配置文件应该能够覆盖pom属性值,然后才可以将其视为默认值。
稍后再在同一文档中显示几行:
POM中的配置文件
...
POM中指定的配置文件可以修改以下POM元素:
...
(实际上在主POM中不可用,但在幕后使用)