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>

来源:https://www.mkyong.com/maven/maven-profiles-example