Maven maqsadli katalogining zip arxivini yaratish

Men "maqsadli" katalogimning zip arxivini yaratmoqchiman (${project.build.directory). maven-assembly-plugin-dan foydalanish menga shunday oddiy vazifani bajarish uchun ortiqcha ish kabi ko'rinadi (va biroz murakkab - nega bunday vazifa uchun boshqa faylni, yig'ish deskriptorini ishlatishim kerak) Men oddiyroq ko'rinadigan narsani topa olmayapman maven-zip-plugin http://repo1.maven.org/maven2 ombori.

Har qanday kiritish?


person Yaneeve    schedule 25.03.2010    source manba
comment
jeejava.com/zip-file-using-maven-assembly-plugin/   -  person user3470953    schedule 02.09.2019


Javoblar (2)


Agar bin oldindan belgilangan montaj identifikatori Ehtiyojlaringizga mos kelsa, sizda uchta variant mavjud:

  1. Maven-assembly-plugin-dan foydalanish - Maven-zip-plugini hech qachon chiqmadi, chunki montaj plagini zip plaginini bajaradigan hamma narsani qila oladi va yana ko'p narsalarni qarang: MNG-2243.
  2. Maven-antrun-plugin-dan foydalanish (va zip-ni biriktirish uchun build-helper-plugin bo'lishi mumkin) - Misol mavjud bu yerda (va bu oxiridagi montaj plaginiga qaraganda batafsilroq ko‘rinadi).
  3. O'zingizning plaginingizni yozish - nima uchun sizda montaj plaginiga ega bo'lsangiz, buni qilasiz.

Shaxsan men maven-assembly-plaginini quyidagi zip.xml identifikatori bilan ishlatardim:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>bin</id>
  <baseDirectory>/</baseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${project.build.directory}</directory>
    </fileSet>
  </fileSets>
</assembly>

Va sizning POM-da:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptors>
      <descriptor>src/main/assembly/zip.xml</descriptor>
    </descriptors>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- append to the packaging phase. -->
      <goals>
        <goal>single</goal> <!-- goals == mojos -->
      </goals>
    </execution>
  </executions>
</plugin>
person Pascal Thivent    schedule 25.03.2010
comment
Ishlamaydi - o'rnatilgan axlat qutisi ishlatiladi. Va men maxsus o'rnatilgan bo'lmaganlarga qanday ishora qilishni tushunolmayapman. - person Ondra Žižka; 11.07.2013
comment
Antrun plaginini yig'ish plaginidan foydalanishning bir afzalligi bor, chunki u zip ichida fayl o'lchamlarini boshqacha saqlaydi. Agar siz zipni "ZipInputStream" bilan o'qiyotgan bo'lsangiz va "getSize()" dan foydalansangiz, antrun tomonidan yaratilgan ziplar bilan kirish o'lchamini olasiz, montaj bilan yaratilgan ziplar uchun u -1 ni qaytaradi. - person Nick Wilson; 16.09.2016

Yaratilgan .zip faylga "maxsus" ehtiyojingiz bo'lmasa, siz oldindan belgilangan Maven Assembly deskriptorlaridan birini ishlatishingiz mumkin. Oldindan belgilangan yig'ish deskriptorlari o'zingizning yig'ish deskriptoringizni taqdim qilmasdan, maxsus yig'ilishlarni tez va oson yaratishni osonlashtiradi. Siz bin oldindan belgilangan identifikatordan foydalanmoqchi edingiz deylik. Keyin POM-ning build bo'limining plugins bo'limiga quyidagilarni qo'shishingiz mumkin.

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>bin</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

Albatta, Maven bilan har doimgidek, agar siz standart konfiguratsiyadan tashqari biror narsa qilishni istasangiz, o'zingizning konfiguratsiyangizni yaratishingiz kerak bo'ladi va bu holda, bu o'zingizning montaj deskriptoringizni anglatadi.

Oldindan belgilangan deskriptorlar roʻyxati bu yerda hujjatlashtirilgan.

person RTBarnard    schedule 25.03.2010
comment
Yomon variantlar emas. Ammo mening jarayonim oxirida maqsadli katalog oddiygina exe faylini va boshqa exe fayllari bo'lgan katalogni o'z ichiga oladi - al linstallers. Men shunchaki ularning barchasini birlashtirmoqchiman - person Yaneeve; 25.03.2010
comment
Sizning muammoingiz shundaki, standart identifikatorlar sizga kerak bo'lgandan ko'proq narsani to'playdi, masalan, ishchi papkalar mazmuni va hokazo? Maqsad ostida siz qadoqlashni istagan ma'lum bir jild bormi (masalan, ${project.build.directory}/installers), lekin siz boshqa kataloglar o'tkazib yuborilishini xohlaysizmi? Yoki boshqa maqsadingiz bormi? - person RTBarnard; 25.03.2010
comment
Men ${project.build.directory} katalogidan barcha keraksiz fayllar va kataloglarni o'chirib tashladim va shunchaki uning mazmunini to'liq ziplashni xohlayman. Agar sizda Paskaldan ko'ra yaxshiroq taklif bo'lmasa, men u ko'rsatganidek, ortiqcha yig'ish faylini yaratishim va uning echimini tanlashim kerak deb o'ylayman ... - person Yaneeve; 25.03.2010