我想根据个人资料过滤目录及其内容。这是我的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>
这是我的项目结构:
但是当它正在构建jar时,它会复制其中的所有文件夹(int,uat,stag,prod)。
我该如何解决这个问题?
答案 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