Maven:如何在控制台上打印当前配置文件?

时间:2016-12-13 09:10:30

标签: maven maven-antrun-plugin maven-profiles

我正在尝试打印正在运行Maven项目构建的当前配置文件。

我使用maven-antrun-plugin在控制台上打印消息,并结合引用当前配置文件的属性。

我尝试过以下属性:

${project.activeProfiles[0].id}

${project.profiles[0].id}

但是在这两种情况下都会打印"字符串"因为它是在不解析变量的情况下编写的。

这是我的测试:

<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}

任何建议都将受到赞赏。

感谢。

2 个答案:

答案 0 :(得分:6)

maven-help-plugin提供您所需要的功能。它有一个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>

答案 1 :(得分:0)

您可以在pom中添加maven-help-plugin以始终显示活动配置文件

import java.util.*;
public class Main {
public static void main(String args[]) {
    double moduloNumber = (Math.pow(10,9)+7);
    Scanner sc= new Scanner(System.in);
    System.out.print("Enter the Number of Test Cases (1 <= T <= 20): ");
    int T=sc.nextInt();

    for(int ctr=0;ctr<T;ctr++)
    {
        System.out.print("\nEnter the Number of Soldiers (1 <= N <= 200000): ");
        int N=sc.nextInt();
        long [] x= new long[N];
        long [] b= new long[N];
        for(int i=0;i<N;i++)
        {
            System.out.print("Enter the Position of Soldier " + (i+1) + " (1 <= X[i] <= 1000000000): ");
            x[i]=sc.nextLong();

        }
        for(int i=0;i<N;i++)
        {
            System.out.print("Enter the Number of Bombs with Soldier " + (i+1) + " (1 <= B[i] <= 10000): ");
            b[i]=sc.nextInt();

        }
        int cost=0;
        double v;
        for(int i=0;i<N-1;i++)
        {
            for(int j=i+1;j<N;j++)
            {
                v=(x[i]-x[j]);
                v=Math.abs(v)%(moduloNumber);
                cost+= v*Math.max(b[i],b[j]);
            }
        }
        System.out.println(cost);

    }
}
}

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