2016-03-18 3 views
0

Я хочу создать файл .zip вместо файла .jar при запуске mvn clean package. Файл .zip должен иметь структуру каталогов следующим образом -Как сделать обычную упаковку в Maven?

/ 
|- bin 
|- conf 
| |- All Property Files 
|- lib 
    |- All JAR Files (packaged jar and its dependency jar OR a single fat jar) 

Я искал много, но единственное, что я в конечном итоге получаю изменение структуры каталогов основной директории проекта, а не упакованного содержимого. Я знаю различные типы упаковки, такие как JAR, WAR, EAR и т. Д., Но не уверен, что можно сделать файл .zip.

Возможно ли сделать .zip вместо JAR-файла? Если да, то как и может ли его структура каталогов манипулировать?

Пожалуйста, ответьте или прокомментируйте, если я не выполнил нормы StackOverflow или пропущенных деталей, которые я должен был упомянуть.


Обновление: Обнаружили answer о том, как создать .zip файлы вместо. Но он не содержит информации об изменении структуры каталогов.


Update: решаемые сам. См. Ответ ниже.

ответ

0

Найден answer о том, как создать .zip. Кажется, что настройка с файлом descriptor.xml даст мне желаемый результат. Ниже приведен мой файл descriptor.xml.

<assembly> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>${project.build.directory}</directory> 
      <outputDirectory>lib</outputDirectory> 
      <includes> 
      <include>*.jar</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <directory>${project.build.directory}/lib</directory> 
      <outputDirectory>lib</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/src/main/resources/config</directory> 
      <outputDirectory>config</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/src/main/resources/bin</directory> 
      <outputDirectory>bin</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 
2

Выделенный Maven плагин для пользовательских упаковки является Maven Assembly plugin. Это возможно с помощью этого плагина, чтобы изменить структуру упаковки и типа к:

  • почтовый
  • смолы
  • tar.gz (или TGZ)
  • tar.bz2 (или)
  • архив tbz2
  • банку
  • реж
  • войны
  • обычай (см ArchiveManager)

There is the documentation содержащий образец конфигурации плагина.

Согласно документации, Вам необходимо:

  • Установите формат (ZIP, TGZ, ...)
  • Активировать плагин для текущего профиля
  • Определить конкретный пакет структуры в выделенном файле bin.xml сборщика, найденном по умолчанию в папке src/assembly
  • И, очевидно, вызовите фазу пакета mvn (автоматически во время установки ...), так что происходит волшебство :)
+0

Хорошая практика сохранения файла дескриптора в src/assembly или я могу сохранить его в любом месте, потому что храню его в папке проекта. –

+1

Папка ** src/assembly ** по умолчанию не является исходной папкой, поэтому она не будет частью окончательного упакованного проекта (не доставлена). Местоположение и имя файла должны быть указаны во время настройки плагина внутри вашего POM. ' org.apache.maven.plugins Maven сборки-плагин <Конфигурация> SRC/сборки/bin.xml my_super_project - $ {pom.version} ... ' –