JavaRush /Kurslar /All lectures for UZ purposes /Maven-loyiha yig'ilishi vaqtida fayllarni boshqarish

Maven-loyiha yig'ilishi vaqtida fayllarni boshqarish

All lectures for UZ purposes
Daraja, Dars
Mavjud

2.1 maven-resources-plugin resurslarni nusxalash plagin

Agar web-ilova yig'ayotgan bo'lsang, unda u juda ko'p turli resurslarga ega bo'ladi. Bu jar-kutubxonalar, jsp-servletlar, sozlash fayllari. Va albatta, bu turli xil statik fayllar kabi html, css, js, shuningdek turli rasmlar.

Odatiy holatda Maven loyiha yig'ishida barcha fayllarni src/main/resources papkadan target papkaga koʻchiradi. Agar bu xatti-harakatlarni oʻzgartirmoqchi boʻlsang, bu holda maven-resources-plugin plagini yordam beradi.

Plagin kodining namunasi:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals>
            <configuration> <outputDirectory> ${basedir}/target/resources </outputDirectory> <resources>
                    <resource> resurs 1 ni nusxalash ko'rsatmalari </resource> <resource> resurs 2 ni nusxalash ko'rsatmalari </resource> <resource> resurs N ni nusxalash ko'rsatmalari </resource>
                </resources> </configuration>
        </execution>
    </executions>
</plugin>

Bu plagin validate fazasi vaqtida chaqiriladi. <outputDirectory> teg yordamida plagin resurslarni nusxalaydigan papkani belgilash mumkin, bu <resources> sektsiyasida ko'rsatilgan bo'ladi. Va bu yerda plagin o'z kuchini namoyon qilishi mumkin.

2.2 maven-resources-plugin orqali resurslarni filtratsiyalash

Plagin resurslari nafaqat fayllar ko'rinishida, balki to'g'ridan-to'g'ri papkalar sifatida ham berilishi mumkin. Bundan tashqari, papkaga maska qo'shish mumkin, bu resursga qaysi fayllar kiritilishini belgilaydi.

Namuna:


            <resource>
                <directory>src/main/resources/images</directory>
                <includes>
                     <include>**/*.png</include>
                </includes>
            </resource>

Ikki yulduzcha maska sifatida istalgan miqdordagi papkalar degan ma'noni anglatadi. Yuqoridagi namuna bo'yicha resurs sifatida src/main/resources/images (va uning ichki papkalari) papkasida mavjud barcha png-fayllar olinadi.

Agar qandaydir fayllarni chiqarib tashlashni istasangiz, siz exclude tegidan foydalanishingiz mumkin. Namuna:

<resource>
    <directory>src/main/resources/images</directory>
    <includes> <include>**/*.png</include> </includes>
    <excludes> <exclude>old/*.png</exclude> </excludes>
</resource>

Teglar ketma-ket qo'llaniladi: avval resursga include fayllari qo'shiladi, so'ngra ushbu ro'yxatdagi exclude fayllari chiqarib tashlanadi.

Lekin bu hali hammasi emas. Plagin fayllar ichiga qarashni ham biladi (agar ular matnli bo'lsa, albatta). Masalan, application.properties fayliga zaruriy versiyani qo'shish. Plagin fayl tarkibini qayta ishlashi uchun <filtering>true</filtering> parametrini belgilash kerak.

Namuna:

<resource>
    <directory>src/main/resources/properties</directory>
    <filtering>true</filtering>
    <includes> <include>**/*. properties </include> </includes>
</resource>

Bu plaginni batafsilroq ko'rish uchun quyidagi havoladan foydalaning: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 maven-source-plugin manba kodlarini qo'shish plagin

Yana bir foydali plagin – maven-source-plugin java-fayllaringiz manba kodlarini yig'ishga qo'shishga imkon beradi. Nega?

Buning sababi shundaki, web-ilovalardan tashqari, Maven orqali juda ko'p kutubxonalar yig'iladi. Ko'pgina Java-loyihalari open-source tushunchasiga rioya qiladi va o'z manbalari bilan Java hamjamiyatida tarqatiladi.

Nega alohida plagin kerak? Nega manbalarni oddiygina nusxalay olmaymiz?

Birinchidan, har qanday murakkab loyihada manbalar bir nechta joyda saqlanishi mumkin.

Ikkinchidan, ko'pincha xml-spetsifikatsiyalar asosiida manbalarni yaratish ishlatiladi, bunday manbalar ham yig'ilishga qo'shilishi kerak.

Va uchinchidan, ba'zi maxfiy fayllarni yig'ilishingizga qo'shmaslikka qaror qilishingiz mumkin.

maven-source-plugin plaginidan foydalanish uchun namuna:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.4 maven-dependency-plugin orqali bog'lanishlarni nusxalash plagin

Shuningdek, loyihani yig'ishda bog'lanishlarni (kutubxonalarni) aqlli nusxalash kerak bo'lishi mumkin. Buning uchun maven-dependency-plugin plagini ishlatiladi.

Namuna:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <outputDirectory> ${project.build.directory}/lib/ </outputDirectory>
    </configuration>
    <executions>
        <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution>
    </executions>
</plugin>

Bu misolda plaginning standart xatti-harakati - kutubxonalarni ${project.build.directory}/lib katalogiga ko'chirish aytilgan.

Sahifalash bo'limida plaginning package yig'ish bosqichida chaqirilishi koʻrsatilgan – goal – copy-dependences.

Umuman olganda, bu plaginning juda katta maqsadlar to'plami bor, eng mashhurlari quyidagilar:

1 dependency:analyze bog'lanishlarning tahlili (foydalanilgan, foydalanilmagan, ko'rsatilgan, ko'rsatilmagan)
2 dependency:analyze-duplicate takrorlangan bog'lanishlarni aniqlash
3 dependency:resolve barcha bog'lanishlarni aniqlash (belgilash)
4 dependency:resolve-plugin barcha plaginlarni aniqlash (belgilash)
5 dependency:tree bog'lanishlar daraxtini ekranga chiqarish

Shuningdek, configuration bo'limida qo'shimcha parametrlarni belgilashingiz mumkin:

1 outputDirectory Bog'lanishlar ko'chiriladigan katalog
2 overWriteReleases Nusxalash kerakligini belgilash uchun flag
3 overWriteSnapshots Nusxalash kerakligini belgilash uchun SNAPSHOT ishtirokidagi bog'lanishlarni belgilash flagi
4 overWriteIfNewer Yangi versiyalarning mavjudligi bilan kutubxonalarni nusxalash kerakligini belgilash flagi

Namuna:


<configuration>
    <outputDirectory>
         ${project.build.directory}/lib/
    </outputDirectory>
    <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer>
 </configuration>

Odatiy holda <overWriteReleases> va <overWriteSnapshots> – false, <overWriteIfNewer> – true.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION