Maven:如何在控制台上打印当前配置文件?
Maven: How to print the current profile on the console?
我正在尝试打印当前处于活动状态的配置文件运行 Maven 项目的构建。
我正在使用 maven-antrun-plugin
以在控制台上打印消息,并结合引用当前配置文件的 属性。
我尝试了以下属性:
${project.activeProfiles[0].id}
${project.profiles[0].id}
但在这两种情况下,它都会按写入的方式打印 "string",而不解析变量。
这是我的测试:
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>current active profile: ${project.activeProfiles[0].id}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
但这是我得到的结果:
main:
[echo] current active profile: ${project.activeProfiles[0].id}
如有任何建议,我们将不胜感激。
谢谢。
maven-help-plugin offers what you need. It has an active-profiles 目标。
您可以将它添加到您的 pom 中,甚至可以从命令行调用它(将它包含在您的 maven 构建调用中)。 如何判断构建过程中哪些配置文件有效?Maven profile introduction page 的 部分将向您展示如何操作。简而言之:
mvn help:active-profiles
因为这对你不起作用(见评论)这里是另一个解决方案:
我认为活动配置文件(可以有多个!)不会传播为 available variables - 但属性是。
所以在个人资料部分设置一个自定义 属性 并使用它,例如
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<myProfile>default</myProfile>
</properties>
</profile>
<profile>
<id>debug</id>
<activation>
<property>
<name>debug</name>
</property>
</activation>
<properties>
<myProfile>debug</myProfile>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>current active profile: ${myProfile}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
您可以在 pom 中添加 maven-help-plugin 以始终显示活动配置文件
<build>
<plugins>
<!-- display active profile in compile phase -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>show-profiles</id>
<phase>compile</phase>
<goals>
<goal>active-profiles</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
我正在尝试打印当前处于活动状态的配置文件运行 Maven 项目的构建。
我正在使用 maven-antrun-plugin
以在控制台上打印消息,并结合引用当前配置文件的 属性。
我尝试了以下属性:
${project.activeProfiles[0].id}
${project.profiles[0].id}
但在这两种情况下,它都会按写入的方式打印 "string",而不解析变量。
这是我的测试:
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>current active profile: ${project.activeProfiles[0].id}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
但这是我得到的结果:
main:
[echo] current active profile: ${project.activeProfiles[0].id}
如有任何建议,我们将不胜感激。
谢谢。
maven-help-plugin offers what you need. It has an active-profiles 目标。
您可以将它添加到您的 pom 中,甚至可以从命令行调用它(将它包含在您的 maven 构建调用中)。 如何判断构建过程中哪些配置文件有效?Maven profile introduction page 的 部分将向您展示如何操作。简而言之:
mvn help:active-profiles
因为这对你不起作用(见评论)这里是另一个解决方案:
我认为活动配置文件(可以有多个!)不会传播为 available variables - 但属性是。
所以在个人资料部分设置一个自定义 属性 并使用它,例如
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<myProfile>default</myProfile>
</properties>
</profile>
<profile>
<id>debug</id>
<activation>
<property>
<name>debug</name>
</property>
</activation>
<properties>
<myProfile>debug</myProfile>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>current active profile: ${myProfile}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
您可以在 pom 中添加 maven-help-plugin 以始终显示活动配置文件
<build>
<plugins>
<!-- display active profile in compile phase -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>show-profiles</id>
<phase>compile</phase>
<goals>
<goal>active-profiles</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>