Как остановить Apache maven <outputDirectory>для перезаписи папки - PullRequest
4 голосов
/ 25 октября 2011

У меня есть следующая иерархия каталогов:

generated 

   |    
   | -->java

В каталоге Java есть следующий пакет: com.model

, который содержит модели Java, которые я копирую / вставляюгде-то до того, как я скомпилирую приложение.

Проблема в том, что я использую буфер протокола и говорю maven выводить сгенерированные файлы в тот же предыдущий каталог НО через новый пакет:

Результат: буфер протоколагенерирует новый пакет и удаляет старый пакет.
Я понятия не имею, почему он делает это, хотя имена пакетов разные?

Вот та часть pom, которую я использую для генерации java из буфера протокола:

        <plugin>
            <groupId>com.google.protobuf.tools</groupId>
            <artifactId>maven-protoc-plugin</artifactId>
            <configuration>
                <protocExecutable>C:\protoc.exe</protocExecutable>
                <protoSourceRoot>./src/proto</protoSourceRoot>
                <outputDirectory>./src/generated/java</outputDirectory>

            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

если вы посмотрите на код для плагина, то увидите, что код был жестко закодирован для очистки каталога:

https://github.com/dtrott/maven-protoc-plugin/blob/master/src/main/java/com/google/protobuf/maven/AbstractProtocMojo.java#L154

// Quick fix to fix issues with two mvn installs in a row (ie no clean)
cleanDirectory(outputDirectory);

Есть 2 способа решенияthis .. либо установите выходной каталог во временный каталог, а затем используйте плагин maven copy или плагин maven build, чтобы скопировать файлы в каталог по вашему выбору, или измените плагин maven, чтобы удалить эту строку (или, что еще лучше, сделайте егонастраивается).

Томми

1 голос
/ 25 октября 2011

Я решил мою проблему следующим образом:

<plugin>
              <artifactId>maven-antrun-plugin</artifactId>
              <executions>
                  <execution>
                      <phase>generate-resources</phase>
                      <goals>
                          <goal>run</goal>
                      </goals>
                      <configuration>
                          <tasks>
                              <delete dir="./destination"/>
                              <copy todir="./destination">
                                    <fileset dir="./source"/>
                              </copy>
                              <delete dir="./source"/>
                          </tasks>
                      </configuration>
                  </execution>
              </executions>
        </plugin>

Однако я получаю эту ошибку "Возникла исключительная ситуация Ant BuildException: может быть установлен только один из tofile и todir"

...