我的项目中有一个properties
目录:
properties
- project_dev.properties
- project_test.properties
- project_prod.properties
- project_other.properties
它为不同的环境定义了一些不同的值。并且还有一个template
目录,里面包含了一些带有占位符的配置文件模板。
我想要做的是循环所有文件properties
,并将每个文件组合到template
目录中以生成最终的配置文件,这些文件根据文件名位于不同的目录下。
所以它将是:
target
- configurations
- dev
- ... some files
- test
- ... some files
- prod
- ... some files
- other
- ... some files
我现在正在做的是使用, 并为每个文件maven-resources-plugin
定义几个s ,并对名称进行硬编码。execution
看起来像:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<!--- for dev ---->
<execution>
<id>dev-filter</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${basedir}/target/conf/dev</outputDirectory>
<useDefaultDelimiters>false</useDefaultDelimiters>
<resources>
<resource>
<directory>${basedir}/conf/template</directory>
<filtering>true</filtering>
<includes>
<include>channel/*</include>
<include>rule-config/*</include>
<include>server/*.properties</include>
</includes>
</resource>
</resources>
<delimiters>
<delimiter>${*}</delimiter>
</delimiters>
<filters>
<filter>${basedir}/properties/project_dev.properties</filter>
</filters>
</configuration>
</execution>
<!--- for prod ---->
<execution>
<id>prod-filter</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${basedir}/target/conf/prod</outputDirectory>
<useDefaultDelimiters>false</useDefaultDelimiters>
<resources>
<resource>
<directory>${basedir}/conf/template</directory>
<filtering>true</filtering>
<includes>
<include>channel/*</include>
<include>rule-config/*</include>
<include>server/*.properties</include>
</includes>
</resource>
</resources>
<delimiters>
<delimiter>${*}</delimiter>
</delimiters>
<filters>
<filter>${basedir}/properties/project_prod.properties</filter>
</filters>
</configuration>
</execution>
<!--- for test --->
...
您可以看到我正在execution
为每个文件复制块,因此会有许多重复的代码,但差异很小。
我想知道有什么解决方案可以让事情变得更简单吗?我试图找到一种方法来循环文件properties
并filter
为每个文件执行任务,但不知道该怎么做。