我有我的构建设置,以便通过命令行传递我的变量:
mvn clean install -DsomeVariable=data
在我的pom中我有:
<someTag>${someVariable}</someTag>
这样可以正常工作,但是我想确定是否在命令行中没有指定someVariable,然后默认它以便我的脚本可以继续。
这可以在Maven中完成吗?
答案 0 :(得分:13)
您可以在POM文件的properties
部分指定默认属性值:
<properties>
<someVariable>myVariable</someVariable>
</properties>
如果要确保在命令行上提供属性值 ALWAYS ,则可以使用maven-enforcer-plugin。
这是一个显示如何强制执行系统属性的链接 - &gt; http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html
我会在这里逐字复制XML,以防上述链接变坏。
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>enforce-property</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<property>basedir</property>
<message>You must have a basedir!</message>
<regex>\d</regex>
<regexMessage>You must have a digit in your baseDir!</regexMessage>
</requireProperty>
<requireProperty>
<property>project.version</property>
<message>"Project version must be specified."</message>
<regex>(\d|-SNAPSHOT)$</regex>
<regexMessage>"Project version must end in a number or -SNAPSHOT."</regexMessage>
</requireProperty>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
答案 1 :(得分:6)
您可以将默认值指定为
<properties>
<someTag>defaultValue</someTag>
</properties>
当您运行maven命令时,您可以像这样覆盖该值
mvn clean package -DsomeTag=newSpecificValue
答案 2 :(得分:2)
您可以改用配置文件,但每个配置文件都需要配置文件 变量
<profile>
<id>default-value-1</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>!someVariable</name>
</property>
</activation>
<properties>
<someVariable>DEFAULT-VALUE</someVariable>
</properties>
</profile>