Как скопировать файлы в maven с помощью команды ant run DRY - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть файл базовых свойств для моего приложения, который я хочу расширить на отдельные версии для каждой машины, на которой я разверну. Различия фиксируются в отдельном наборе файлов свойств, названных для целевой машины.

В настоящее время я делаю это с помощью плагина 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.

...