У меня есть файл базовых свойств для моего приложения, который я хочу расширить на отдельные версии для каждой машины, на которой я разверну. Различия фиксируются в отдельном наборе файлов свойств, названных для целевой машины.
В настоящее время я делаю это с помощью плагина antrun и копии фильтра ant.
<copy toDir="${project.basedir}/src/main/dist/props/" overwrite="true" failonerror="true" verbose="true" >
<filterset>
<filtersfile file="${project.basedir}/src/main/constructed/env.properties/${machine}.properties" />
</filterset>
<fileset dir="${project.basedir}/src/main/constructed/">
<include name="base.properties"/>
</fileset>
<globmapper from="*" to="${machine}.*" />
</copy>
Хотя это легко чтобы скопировать и вставить это на столько машин, сколько мне нужно, должен быть лучший способ. Делая то же самое в ant, я параметризовал logi c (в данном случае только $ {machine}) и использовал antcall. Но либо maven не любит несколько целей в блоке конфигурации, либо у меня неправильный синтаксис.
пример того, что я бы сделал в мире чистого муравья
<target name="copies">
<antcall target="common" inheritAll="false">
<param name="machine" value="m1" />
<antcall target="common" inheritAll="false">
<param name="machine" value="m2" />
<!-- etc... -->
</target>
<target name="common">
<copy toDir="${project.basedir}/src/main/dist/props/" overwrite="true" failonerror="true" verbose="true" >
<filterset>
<filtersfile file="${project.basedir}/src/main/constructed/env.properties/${machine}.properties" />
</filterset>
<fileset dir="${project.basedir}/src/main/constructed/">
<include name="base.properties"/>
</fileset>
<globmapper from="*" to="${machine}.*" />
</copy>
</target>
Я бы хотел бы абстрагировать общую конфигурацию копирования для упрощения в некотором роде. для каждого файла в $ {project.basedir} /src/main/constructed/env.properties/ я хочу файл в $ {project.basedir} / src / main / dist / props /, созданный путем слияния файла env.prop в файл base.prop.