Maven配置文件指南 - 极悦
首页 课程 师资 教程 报名

Maven配置文件指南

  • 2022-04-20 11:09:47
  • 1837次 极悦

1.概述

Maven配置文件可用于创建自定义构建配置,例如针对测试粒度级别或特定部署环境。

在本教程中,我们将学习如何使用 Maven 配置文件。

2. 一个基本的例子

通常,当我们运行mvn package 时,也会执行Maven单元测试。但是如果我们想快速打包工件并运行它来查看它是否有效呢?

首先,我们将创建一个将maven.test.skip属性设置为true 的无测试配置文件:

<profile>
    <id>no-tests</id>
    <properties>
        <maven.test.skip>true</maven.test.skip>
    </properties>
</profile>

接下来,我们将通过运行mvn package -Pno-tests命令来执行配置文件。现在已创建工件并跳过测试。在这种情况下,mvn package -Dmaven.test.skip命令会更容易。

然而,这只是对 Maven 配置文件的介绍。让我们看一些更复杂的设置。

3. 声明配置文件

在上一节中,我们看到了如何创建一个配置文件。我们可以通过为它们提供唯一的 ID 来配置任意数量的配置文件。

假设我们想创建一个只运行我们的集成测试的配置文件,另一个用于一组突变测试。

我们将首先在pom.xml文件中为每个文件指定一个 id :

<profiles>
    <profile>
        <id>integration-tests</id>
    </profile>
    <profile>
        <id>mutation-tests</id>
    </profile>
</profiles>

在每个配置文件元素中,我们可以配置许多元素,例如依赖项、插件、资源、最终名称。

因此,对于上面的示例,我们可以分别为integration-tests和mutation-tests添加插件及其依赖项。

将测试分成配置文件可以使默认构建更快,因为它只关注单元测试。

简介范围:

现在,我们只是将这些配置文件放在我们的pom.xml文件中,该文件仅为我们的项目声明它们。

但是,在 Maven 3 中,我们实际上可以将配置文件添加到三个位置中的任何一个:

项目特定的配置文件进入项目的pom.xml 文件

用户特定的配置文件进入用户的settings.xml文件

全局配置文件进入全局settings.xml文件

请注意,Maven 2 确实支持第四个位置,但在 Maven 3 中已删除。

我们尽可能在pom.xml中配置配置文件。原因是我们希望在我们的开发机器和构建机器上都使用配置文件。使用settings.xml更加困难且容易出错,因为我们必须自己在构建环境中分发它。

4. 激活配置文件

创建一个或多个配置文件后,我们可以开始使用它们,或者换句话说,激活它们。

(1)查看哪些配置文件处于活动状态

让我们使用help:active-profiles目标来查看哪些配置文件在我们的默认构建中处于活动状态:

mvn help:active-profiles

实际上,由于我们还没有激活任何东西,我们得到:

The following profiles are active:

我们马上就会激活它们。但很快,另一种查看激活内容的方法是将maven-help-plugin包含在我们的pom.xml 中,并将 active-profiles目标与 编译 阶段联系起来:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-help-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <id>show-profiles</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>active-profiles</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

现在,让我们开始使用它们吧!我们将研究几种不同的方式。

(2)使用-P

实际上,我们在一开始就已经看到了一种方法,那就是我们可以使用-P参数激活配置文件。

因此,让我们从启用集成测试配置文件开始:

mvn package -P integration-tests

如果我们使用maven-help-plugin或mvn help:active-profiles -P integration-tests命令验证活动配置文件,我们将得到以下结果:

The following profiles are active:
 - integration-tests

如果我们想同时激活多个配置文件,我们使用逗号分隔的配置文件列表:

mvn package -P integration-tests,mutation-tests

(3)默认激活

如果我们总是想执行一个配置文件,我们可以默认激活一个:

<profile>
    <id>integration-tests</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

然后,我们可以在不指定配置文件的情况下运行mvn package,我们可以验证集成测试配置文件是否处于活动状态。

但是,如果我们运行 Maven 命令并启用另一个配置文件,则会跳过activeByDefault配置文件。因此,当我们运行mvn package -P mutation-tests时,只有mutation-tests配置文件处于活动状态。

当我们以其他方式激活时,也会跳过activeByDefault配置文件,我们将在下一节中看到。

(4)基于属性

我们可以在命令行上激活配置文件。但是,有时如果它们自动激活会更方便。例如,我们可以基于-D系统属性:

<profile>
    <id>active-on-property-environment</id>
    <activation>
        <property>
            <name>environment</name>
        </property>
    </activation>
</profile>

我们现在使用mvn package -Denvironment命令激活配置文件。

如果属性不存在,也可以激活配置文件:

<property>
    <name>!environment</name>
</property>

或者,如果属性具有特定值,我们可以激活配置文件:

<property>
    <name>environment</name>
    <value>test</value>
</property>

我们现在可以使用mvn package -Denvironment=test 运行配置文件。

最后,如果属性的值不是指定值,我们可以激活配置文件:

<property>
    <name>environment</name>
    <value>!test</value>
</property>

(5)基于JDK版本

另一种选择是启用基于机器上运行的 JDK 的配置文件。在这种情况下,如果 JDK 版本以 11 开头,我们希望启用配置文件:

<profile>
    <id>active-on-jdk-11</id>
    <activation>
        <jdk>11</jdk>
    </activation>
</profile>

我们还可以使用 JDK 版本的范围,如Maven版本范围语法中所述。

(6)基于操作系统

或者,我们可以根据一些操作系统信息激活配置文件。

如果我们不确定,我们可以先使用mvn enforcer:display-info命令,它会在我的机器上提供以下输出:

Maven Version: 3.5.4
JDK Version: 11.0.2 normalized as: 11.0.2
OS Info: Arch: amd64 Family: windows Name: windows 10 Version: 10.0

之后,我们可以配置仅在 Windows 10 上激活的配置文件:

<profile>
    <id>active-on-windows-10</id>
    <activation>
        <os>
            <name>windows 10</name>
            <family>Windows</family>
            <arch>amd64</arch>
            <version>10.0</version>
        </os>
    </activation>
</profile>

(7)基于文件

如果文件存在或丢失,另一种选择是运行配置文件。

因此,让我们创建一个仅在testreport.html尚不存在时执行的测试配置文件:

<activation>
    <file>
        <missing>target/testreport.html</missing>
    </file>
</activation>

5.停用个人资料

我们已经看到了许多激活配置文件的方法,但有时我们也需要禁用一种。

要禁用配置文件,我们可以使用“!” 或者 '-'。

因此,要禁用active-on-jdk-11配置文件,我们执行mvn compile -P -active-on-jdk-11命令。

以上就是关于“Maven配置文件指南”介绍,大家如果对此比较感兴趣,想了解更多相关知识,不妨来关注一下极悦的Maven教程,里面的教程内容细致全面,通俗易懂,很适合没有基础的小伙伴学习,希望对大家能够有所帮助。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交