maven 2 - pom - crear directorio cuando sea necesario en maven
maven tutorial (3)
Estoy usando maven-exec-plugin para generar fuentes Java de Thrift. Invoca el compilador Thrift externo y usa -o para especificar el directorio de salida, "target / generated-sources / thrift".
El problema es que ni maven-exec-plugin ni Thrift compiler crean automáticamente el directorio de salida, tengo que crearlo manualmente. ¿Existe una forma decente / portátil de usar crear directorios faltantes cuando sea necesario? No quiero definir un comando mkdir en pom.xml, ya que mi proyecto debe ser independiente del sistema.
Puede definir una tarea ant para hacer el trabajo. Coloque la declaración del plugin
en el pom.xml de su proyecto. Esto mantendrá su proyecto independiente del sistema:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>createThriftDir</id>
<phase>process-resources</phase>
<configuration>
<tasks>
<delete dir="${thrift.dir}"/>
<mkdir dir="${thrift.dir}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Si desea preparar dicha estructura de carpetas en algún lugar de su proyecto y luego copiarla en el lugar que desee, use el complemento maven-resource para hacer eso:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-folder</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<filtering>false</filtering>
<directory>${project.basedir}/src/main/resources/folders</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
En lugar del plugin exec, use el plugin antrun
para crear primero el directorio y luego invocar el compilador de ahorro.
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<mkdir dir="target/generated-sources/thrift"/>
<exec executable="${thrift.executable}">
<arg value="--gen"/>
<arg value="java:beans"/>
<arg value="-o"/>
<arg value="target/generated-sources/thrift"/>
<arg value="src/main/resources/MyThriftMessages.thrift"/>
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
También es posible que desee echar un vistazo al maven-thrift-plugin .