создать каталог, когда это необходимо в Maven - PullRequest
36 голосов
/ 03 ноября 2010

Я использую maven-exec-plugin для генерации Java-источников Thrift.Он вызывает внешний компилятор Thrift и использует -o для указания выходного каталога "target / генерируемый-источники / thrift".

Проблема не в том, что ни maven-exec-plugin, ни Thrift-компилятор не создают автоматически выходной каталог, мне приходится создавать его вручную.Есть ли приличный / переносимый способ создания недостающих каталогов при необходимости?Я не хочу определять команду mkdir в pom.xml, так как мой проект должен быть независимым от системы.

Ответы [ 3 ]

30 голосов
/ 03 ноября 2010

Вместо плагина exec используйте плагин antrun, чтобы сначала создать каталог, а затем вызвать 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 .

18 голосов
/ 03 ноября 2010

Вы можете определить задачу муравья для выполнения этой работы.Поместите объявление 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>
4 голосов
/ 18 ноября 2016

Если вы хотите подготовить такую ​​структуру папок где-нибудь в вашем проекте, а затем скопировать в нужное место, используйте для этого плагин maven-resource:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...