从pom.xml中引用环境变量

2023/05/24

1. 概述

在这个快速教程中,我们将了解如何从Maven的pom.xml中读取环境变量以自定义构建过程。

2. 环境变量

要从pom.xml引用环境变量,我们可以使用${env.VARIABLE_NAME}语法

例如,让我们在构建过程中使用它来外部化Java版本

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${env.JAVA_VERSION}</source>
                <target>${env.JAVA_VERSION}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

我们应该记住通过环境变量传递Java版本信息,如果我们不这样做,那么我们将无法构建项目。

要针对这样的构建文件运行Maven目标或阶段,我们应该首先导出环境变量,例如:

$ export JAVA_VERSION=9
$ mvn clean package

在Windows上,我们应该使用“set VAR=value”语法来导出环境变量。

为了在缺少JAVA_VERSION环境变量时提供默认值,我们可以使用Maven的Profile

<profiles>
    <profile>
        <id>default-java</id>
        <activation>
            <property>
                <name>!env.JAVA_VERSION</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

如上所示,我们正在创建一个Profile并仅在缺少JAVA_VERSION环境变量时才使其处于激活状态(!env.JAVA_VERSION部分),如果发生这种情况,那么这个新的插件定义将覆盖现有的插件定义。

3. 总结

在这个简短的教程中,我们了解了如何通过将环境变量传递给pom.xml来自定义构建过程。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章