原文: https://javatutorial.net/how-to-use-maven-profiles

简而言之, Maven 配置文件是一组覆盖默认值的配置值。 通过使用它,您可以为不同的环境(生产/开发)创建自定义版本。

如何使用 Maven 配置文件 - 图1

在继续学习本教程的内容之前,假定您已经安装了 Maven。 如果您不这样做,请按照本教程 的逐步指南进行操作。

要在 Maven 中指定配置文件,您需要使用pom.xml文件中的activeProfiles或配置文件元素。pom.xml运行时时被修改。

有 3 种构建配置文件类型。

  1. 每个项目

    1. pom.xml文件中定义
  2. 每位使用者

    1. 在 Maven 设置 xml 文件(%USER_HOME%/.m2/settings.xml)中定义
  3. 全球

    1. 在 Maven 全局设置 xml 文件(%M2_HOME%/conf/settings.xml)中定义

如何提示 Maven Build 配置文件? 有两种方法:

  1. 终端–本教程涵盖
  2. Maven 设置–本教程涵盖
  3. 环境变量–在本教程中涵盖
  4. 操作系统设置
  5. 存在或缺少文件

显式激活配置文件

创建您的 Maven 项目(如果尚未创建),然后创建第一个简单的配置文件test1

这是我添加的pom.xml代码

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>mavenprofilesdemo</groupId>
  5. <artifactId>mavenprofilesdemo</artifactId>
  6. <packaging>jar</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>Maven Quick Start Archetype</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>3.8.1</version>
  15. <scope>test</scope>
  16. </dependency>
  17. </dependencies>
  18. <profiles>
  19. <profile>
  20. <id>test1</id>
  21. <build>
  22. <plugins>
  23. <plugin>
  24. <groupId>org.apache.maven.plugins</groupId>
  25. <artifactId>maven-compiler-plugin</artifactId>
  26. <configuration>
  27. <fork>true</fork>
  28. <compilerVersion>1.5</compilerVersion>
  29. </configuration>
  30. </plugin>
  31. </plugins>
  32. </build>
  33. </profile>
  34. </profiles>
  35. </project>

<profiles> -> <profile> -> id;那是我们指定如何引用配置文件的地方。 不要错过该行,这很重要,因为它不仅是必填项,而且如果您省略它,则将无法访问您的个人资料。

我们在pom.xml文件中所做的是,我们已覆盖了编译器插件设置。 我们已将编译器的版本设置为 1.5,并将fork设置为true

请记住,在这种情况下,我们仅创建了 1 个配置文件,但是我们也可以在<profiles>标签内添加更多<profile>标签。

覆盖所需的插件之后,该运行我们的配置文件了。 您可以通过在命令行中输入mvn test -P <id>来运行它

在我们的例子中,我们需要编写mvn test -Ptest1,因为我们创建的个人资料给我们提供了值为test1的 ID。

现在转到项目的文件夹位置,然后输入mvn test -P <您的配置文件 ID>。如果我在上面的示例中运行此命令,则得到的结果是:

  1. [INFO] Scanning for projects...
  2. [INFO]
  3. [INFO] ----------------< mavenprofilesdemo:mavenprofilesdemo >-----------------
  4. [INFO] Building Maven Quick Start Archetype 0.0.1-SNAPSHOT
  5. [INFO] --------------------------------[ jar ]---------------------------------
  6. [INFO]
  7. [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavenprofilesdemo ---
  8. [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
  9. [INFO] skip non existing resourceDirectory D:\Eclipse Projects\mavenprofilesdemo\src\main\resources
  10. [INFO]
  11. [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mavenprofilesdemo ---
  12. [INFO] Nothing to compile - all classes are up to date
  13. [INFO]
  14. [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mavenprofilesdemo ---
  15. [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
  16. [INFO] skip non existing resourceDirectory D:\Eclipse Projects\mavenprofilesdemo\src\test\resources
  17. [INFO]
  18. [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mavenprofilesdemo ---
  19. [INFO] Nothing to compile - all classes are up to date
  20. [INFO]
  21. [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mavenprofilesdemo ---
  22. [INFO] Surefire report directory: D:\Eclipse Projects\mavenprofilesdemo\target\surefire-reports
  23. -------------------------------------------------------
  24. T E S T S
  25. -------------------------------------------------------
  26. Running mavenprofilesdemo.mavenprofilesdemo.AppTest
  27. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
  28. Results :
  29. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
  30. [INFO] ------------------------------------------------------------------------
  31. [INFO] BUILD SUCCESS
  32. [INFO] ------------------------------------------------------------------------
  33. [INFO] Total time: 1.072 s
  34. [INFO] Finished at: 2019-08-18T09:15:55+01:00
  35. [INFO] ------------------------------------------------------------------------

使用 Maven 设置激活配置文件

转到您的用户主目录,然后打开.m2文件夹。 如果那里没有settings.xml文件,请创建一个。

然后将我们创建的配置文件添加为活动配置文件。 使用以下代码:

  1. <settings xmlns = "http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <mirrors>
  6. <mirror>
  7. <id>maven.dev.snaponglobal.com</id>
  8. <name>Internal Artifactory Maven repository</name>
  9. <url>http://repo1.maven.org/maven2/</url>
  10. <mirrorOf>*</mirrorOf>
  11. </mirror>
  12. </mirrors>
  13. <activeProfiles>
  14. <activeProfile>test</activeProfile>
  15. </activeProfiles>
  16. </settings>

现在,转到包含pom.xml文件的文件夹并执行mvn test

使用环境变量激活配置文件

删除settings.xml文件并在name标签中添加env值。 像这样:

  1. <profile>
  2. <id>test</id>
  3. <activation>
  4. <property>
  5. <name>env</name>
  6. <value>test1</value>
  7. </property>
  8. </activation>
  9. </profile>

您必须创建一个称为env的环境变量,并将其值设置为test1

转到包含pom.xml的文件夹,然后键入mvn test

如果您希望将自定义库包含到 maven 本地存储库中,可以遵循本文