我知道无法“链接”个人资料声明。 可以在命令行中使用系统属性(如mvn -Dvar = value)执行我想要(但不完全)的操作。 然后使用它:
<activation>
<property>
<name>var</name>
<value>value</value>
</property>
</activation>
或使用-P profile1,profile2
同时激活多个配置文件实际上我有4个配置文件,我想创建第五个配置文件,其中包含所有aspectj部分(插件,依赖项,...),只有在激活配置文件1,2或3时才应激活它们。就像我没有冗余的插件和依赖声明。
<profile>
<id>profile1</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
...
</build>
</profile>
<profile>
<id>profile2</id>
<build>
...
</build>
</profile>
<profile>
<id>profile3</id>
<build>
...
</build>
</profile>
<profile>
<id>profile4</id>
<build>
<plugins>
<plugin>
...
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>aop</id>
<build>
<plugins>
<plugin>
...
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
...
</dependency>
<dependency>
...
</dependency>
</dependencies>
</profile>
问题是配置文件1是默认配置文件,甚至应该可以在没有命令行参数的情况下执行它。我尝试定义一个值,但它不起作用,因为激活属性仅适用于系统属性。
我错了吗?还有其他办法吗?
由于
答案 0 :(得分:2)
Maven对您没有帮助,您可以在个人资料之间没有依赖关系或继承,另请参阅my recent answer to a related question。
您可以明确打开或关闭配置文件,但无法定义它们之间的任何关系。 Maven不是蚂蚁,这通常是一件好事,但这是我认为它应该更像蚂蚁的情况之一。
来自Introduction to Build Profiles:
可以触发/激活配置文件 在几个方面:
- 显式
- 通过Maven设置
- 基于环境变量
- 操作系统设置
- 出现或丢失文件
这些都不能帮助定义配置文件之间的任何关系(因为在构建项目时评估配置文件,所以无法使用项目属性)。所以你唯一的选择是
-P
语法DefaultProfileSelector
建立自己的替代品