在maven中需要时创建目录

时间:2010-11-03 10:16:41

标签: maven-2 directory

我正在使用maven-exec-plugin来生成Thrift的java源代码。它调用外部Thrift编译器并使用-o指定输出目录“target / generated-sources / thrift”。

问题既不是maven-exec-plugin也不是Thrift编译器自动创建输出目录,我必须手动创建它。 是否有适当/可移植的方式使用在需要时创建丢失的目录?我不想在pom.xml中定义mkdir命令,因为我的项目需要独立于系统。

3 个答案:

答案 0 :(得分:30)

使用antrun插件代替exec插件,首先创建目录,然后调用thrift编译器。

<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>

您可能还想查看maven-thrift-plugin

答案 1 :(得分:18)

您可以定义一个ant任务来完成这项工作。将plugin声明放入项目的pom.xml中。这将使您的项目系统无关:

        <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>

答案 2 :(得分:4)

如果您想在项目中的某个位置准备此类文件夹结构,然后复制到您想要的位置,请使用maven-resource插件执行此操作:

{{1}}