过滤

时间:2016-03-22 17:31:36

标签: spring maven

我试图获取maven中所有活动配置文件的列表,并将它们用作资源过滤中的变量。

特别是当我运行类似

的东西时
mvn package -Pprofile1,profile2

我想公开字符串" profile1,profile2"作为资源过滤中的变量。

例如,在我的pom.xml文件中,我有maven war插件配置如下,以允许对src / main / resources / META-INF目录中的所有内容进行资源过滤,并且我定义了一些配置文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
        </archive>
        <webResources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- Only include the META-INF directory -->
                <includes>
                    <include>META-INF/*</include>
                </includes>
                <!-- replace placeholder values -->
                <filtering>true</filtering>
                    </resource>
                </webResources>
    </configuration>
</plugin>
...
<profiles>
    <profile>
        <id>profile1</id>
        <properties>
            <environment>profile1</environment>
        </properties>
    </profile>
    <profile>
        <id>profile2</id>
        <properties>
            <environment>profile2</environment>
        </properties>
    </profile>

在META-INF目录下,我有一个context.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/platform">
    <Environment name="spring.profiles.active" value="${environment}" type="java.lang.String" />
</Context>

我尝试设置属性&#34; environment&#34;在每个配置文件下,但生成的context.xml文件仅使用最后一个&#34;环境&#34;变量(例如value = profile2)。

我也尝试过使用它:value=${project.activeProfiles}但是会​​返回某种对象列表。如果我可以迭代这个列表并从配置文件中提取id来构建字符串,那将是很棒的,但是我无法在maven资源插件中找到任何文档来执行此操作。

我最终要做的是通过context.xml文件将spring.profiles.active变量设置为环境变量,该变量与maven构建配置文件相同。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式列出有效的个人资料:

2 1: 0 1
2 3: 0
5 1: 0
5 2: 0 1 2
5 3: 1
8 2: 0