2010-05-26 4 views
12

Я знаю, что это, вероятно, нахмурило любителей maven, но весь «целевой» каталог является пустой тратой пространства в контексте нашей программы и ее развертывания. у нас есть другие процессы сборки, ответственные за создание фактического развертывания, и теперь я вручную удаляю целевой каталог после каждой сборки maven, так что его содержимое не мешает поиску файлов и т. д.удалите каталог «target» после сборки

есть способ удалить этот каталог автоматически в конце сборки/установки maven?

спасибо, стр.

ответ

14

Используйте Maven-плагин Гладко, как здесь http://maven.apache.org/plugins/maven-clean-plugin/examples/delete_additional_files.html

<project> 


[...] 
    <build> 
<plugins> 
    <plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 
    </build> 
    [...] 
</project> 
+0

Это приведет к очистке в начале сборки, а не к концу. – khmarbaise

+1

@khmarbaise - я изменил фазу для установки, и она работает даже в конце. Но я звоню в mvn install. Чтобы пакет mvn работал, мне нужно использовать фазу для maven-clean-plugin как пакета, и он делает это в конце. – JoseK

+0

Просто будьте осторожны, вы не удаляете перед развертыванием или установкой фазы, проект станет бесполезным. – sal

5

Вы должны просто добавить чистую цель вашей цели Maven в конце.

mvn install clean 

Проблема с очисткой плагина в том, что если вы хотите запустить чистый в конце сборки зависит цель которых вы назвали в самом начале. Например, вы вызвали пакет mvn, который должен иметь фазовый пост-пакет, который не существует, или если вы вызываете mvn install, у вас должна быть фаза после установки, которая также не существует.

+0

@khmarbaise - clean-plugin работает с установкой/упаковкой фазы даже на конец. вам не нужна post-install/post-package. но он должен соответствовать названной исходной фазе. – JoseK

3

Самый простой способ - просто добавить «чистый» в конец нормальной команды сборки. например. mvn clean install clean.

2

если вы хотите J усть удалитьнекоторых каталогов в целевой папке, вы должны создать некоторую конструкцию, как это.
это, например, удаляет только все содержимое папки:

  • мишень/распаковки
  • генераторной внешнего apklibs

excludeDefaultDirectories позволяет п ВЗ удалить полную папку.
Я использовал его для очистки целевой папки до анализа линта.

 <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>Deleting all unnecessary files before lint analysis</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <excludeDefaultDirectories>true</excludeDefaultDirectories> 
       <filesets> 
        <fileset> 
         <directory>target/unpack</directory> 
         <followSymlinks>false</followSymlinks> 
         <excludes> 
          <exclude>*</exclude> 
         </excludes> 
        </fileset> 
        <fileset> 
         <directory>gen-external-apklibs</directory> 
         <followSymlinks>false</followSymlinks> 
         <excludes> 
          <exclude>*</exclude> 
         </excludes> 
        </fileset> 
       </filesets> 
       <verbose>true</verbose> 
      </configuration> 
     </plugin> 
Смежные вопросы