目录过滤Maven

时间:2013-10-10 11:54:22

标签: maven

我想根据个人资料过滤目录及其内容。这是我的pom.xml:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <filtering>true</filtering>
            <targetPath>properties</targetPath>
        </resource>
    </resources>
    <filters>
        <filter>src/main/resources/${env}/ucm.properties</filter>
    </filters>
</build>

<profiles>
    <profile>
        <id>int</id>
        <properties>
            <env>int</env>
        </properties>
    </profile>
    <profile>
        <id>uat</id>
        <properties>
            <env>uat</env>
        </properties>
    </profile>
    <profile>
        <id>stag</id>
        <properties>
            <env>stag</env>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

这是我的项目结构:

enter image description here

但是当它正在构建jar时,它会复制其中的所有文件夹(int,uat,stag,prod)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要在资源声明中添加部分。像那样:

    ...   
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <targetPath>properties</targetPath>
        <includes>
          <include>${env}/*</include> <!-- including only the associated profile dir -->
          <include>env.properties</include>
        </includes>
    </resource>
    ...

我不知道${env}属性是否会在那里工作,否则${project.activeProfiles[0].id}可能会起作用

有关详细信息,请参阅http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html