Maven ビルド実行前にファイルコピー

過去にこんな投稿をしていた。。。
Maven ファイルのコピー - Oboe吹きプログラマの黙示録
そして、gradle 使用では、、、
gradle の copy タスク活用 - Oboe吹きプログラマの黙示録

Maven の方、、ビルド前、package や install タスクの前に実行したいということで、見直す!
過去の投稿=Apache Maven AntRun Plugin の方法では、
  mvn antrun:run
が実行であり、
パッケージの実行前に起動するなら package の前に、
  mvn antrun:run package
インストールの実行前に起動するなら install の前に、
  mvn antrun:run install
と実行しなければならない。
Eclipse 実行プラグインで、ものぐさの設定するなら、
f:id:posturan:20211121161158j:plain
こんな感じであろう。

そして、Maven AntRun Plugin もバージョンが上がっており、
(サンプル)
(例)javaソースの場所、aa.bb.cc パッケージに置いた XMLを、
   同じパッケージ階層でビルドに含めるためのコピー

<build>

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-antrun-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
         <target>
            <echo message="#### copy files ####"/>
            <property name="fromDir" value="src/main/java/aa/bb/cc"/>
            <property name="toDir"   value="target/classes/aa/bb/cc"/>
            <copy file="${fromDir}/SampleMapper.xml" tofile="${toDir}/SampleMapper.xml"/>
         </target>
      </configuration>
   </plugin>

</build>

ファイルを1つ1つ指定ではなく、フィルタで、、、

<build>

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-antrun-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
         <target>
            <echo message="#### copy files ####"/>
            <copy todir="target/classes/aa/bb/cc">
               <fileset dir="src/main/java/aa/bb/cc" includes="*.xml"/>
            </copy>
         </target>
      </configuration>
   </plugin>

</build>

Apache Maven AntRun Plugin – Introduction

でも、Apache Maven AntRun Plugin は、antrun:run を動かす必要があるので、
この方法は、敬遠されるであろう。

Maven resources plugin の方法、
Apache Maven Resources Plugin – Introduction
こちらの方法の方が、Maven タスクでよけいな指定をしないで済む

<build>

   <resources>
      <resource>
         <directory>src/main/java</directory>
         <includes>
             <include>**/*.xml</include>
         </includes>
      </resource>
      <resource>
         <directory>src/main/resources</directory>
         <includes>
             <include>**/*.xml</include>
             <include>**/*.properties</include>
         </includes>
     </resource>
   </resources>

</build>

元々、src/main/resources 直下に置くものも改めて、全部指定が必要なので注意!!
よく忘れる!