属性为变量的Maven配置文件

属性为变量的Maven配置文件,maven,variables,profile,Maven,Variables,Profile,我正在研究MAVEN配置文件,我有一个关于设置变量属性的问题。目前,我正在使用以下配置: <profile> <id>Action type D restriction</id> <activation> <property> <name>actionType</name> <value>D</value> </property>

我正在研究MAVEN配置文件,我有一个关于设置变量属性的问题。目前,我正在使用以下配置:

<profile>
  <id>Action type D restriction</id>
  <activation>
    <property>
      <name>actionType</name>
      <value>D</value>
    </property>
  </activation>
  <properties>
    <restriction.actionType>D</restriction.actionType>
  </properties>
</profile>

<profile>
  <id>Action type W restriction</id>
  <activation>
    <property>
      <name>actionType</name>
      <value>W</value>
    </property>
  </activation>
  <properties>
    <restriction.actionType>W</restriction.actionType>
  </properties>
</profile>

动作类型D限制
动作类型
D
D
动作类型W限制
动作类型
W
W
我的问题是,;是否可以使用一个配置文件和一个变量来完成相同的工作,大致如下:

<profile>
  <id>Action type restriction</id>
  <activation>
    <property>
      <name>actionType</name>
      <value>[D,W]</value>
    </property>
  </activation>
  <properties>
    <restriction.actionType>${project.profiles.profile.activation.value}</restriction.actionType>
  </properties>
</profile>

动作类型限制
动作类型
[D,W]
${project.profiles.profile.activation.value}

或者类似的东西。

也许你想要这样的东西

<profiles>
    <profile>
        <id>Action type restriction</id>
        <activation>
            <property>
                <name>actionType</name>
            </property>
        </activation>
        <properties>
            <restriction.actionType>${actionType}</restriction.actionType>
        </properties>
    </profile>
</profiles>

动作类型限制
动作类型
${actionType}

谢谢Tunaki。这就成功了。现在,我的设置如下:

<project>
...
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <ActionType/>
</properties>
...
<profiles>
    <profile>
        <id>Action-type profile</id>
        <activation>
            <property>
                <name>actionType</name>
                <value>[D,W]</value>
            </property>
        </activation>
    </profile>
</profiles>
...
<build>
    <pluginManagement>
      <plugins>
        <plugin>
            <groupId>properties.plugin</groupId>
            <artifactId>Lazaruss-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>

            <configuration>
                <actionType>${actionType}</actionType>
            </configuration>
            ...
        </plugin>
      </plugins>
    </pluginManagement>
</build>
它将我的类中的变量设置为W:)


注意,我的类中的变量也被命名为“actionType”

为什么要首先使用概要文件?与其传递
-DactionType=D
,不如传递
-Drestriction.actionType=D
。好的,是的,但我也希望编译器在actionType的值不是“D”或“W”时抛出一个错误。您可以使用maven enforcer插件来实现这一点。
mvn groupId:artefactId:version:goal -DactionType=W