JavaRush /Kurslar /All lectures for UZ purposes /Maven-loyihasining rivojlangan yig'ish jarayoni

Maven-loyihasining rivojlangan yig'ish jarayoni

All lectures for UZ purposes
Daraja, Dars
Mavjud

1.1 Maven yig'ish uchun plaginlar ro'yxati

Maven yig'ish juda moslashuvchan tarzda sozlanishi mumkin. Maven ishlab chiquvchilari maxsus o'ttizdan ortiq plaginlar yaratgan, ulardan foydalanib turli yig'ishlarni juda moslashuvchan tarzda sozlash mumkin. Eng mashhurlari quyidagi jadvalda keltirilgan:

Plagin Tavsif
1 maven-compiler-plugin Java-kompilyatsiyani boshqaradi
2 maven-resources-plugin Resurslarni yig'ishga qo'shishni boshqaradi
3 maven-source-plugin Manba kodini yig'ishga qo'shishni boshqaradi
4 maven-dependency-plugin Kutubxona bog'liqliklarini nusxalash jarayonini boshqaradi
5 maven-jar-plugin Yakuniy jar-fayl yaratish uchun plagin
6 maven-war-plugin Yakuniy war-fayl yaratish uchun plagin
7 maven-surefire-plugin Testlarni ishga tushirishni boshqaradi
8 buildnumber-maven-plugin Yig'ish raqamini yaratadi

Har bir plagin o'ziga xos qiziqarli, lekin biz ularning barchasini ko'rib chiqishimiz kerak. Asosiy plagin - kompilyatsiyani boshqarish plaginidan boshlaymiz.

1.2 Kompilyatsiya plagin maven-compiler-plugin

Har bir loyihada deyarli foydalaniladigan va kompilyator versiyasini boshqarishga imkon beradigan eng mashhur plagin - kompilyator maven-compiler-plugin. U standart sozlamalarga ega, lekin deyarli har bir loyihada ular qayta sozlanishi kerak.

Eng oddiy versiyada plagin ichida Java-kodning versiyasi va Java-mashinasining versiyasini sozlash kerak:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.11</source>
        <target>1.13</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

Yuqoridagi misolda biz Java-kompilyatorining uchta parametrini sozlaymiz: source, target va encoding.

source parametri manba kodimiz uchun Java versiyasini belgilashimizga imkon beradi. target parametri - Java-mashinasining versiyasini, unga mos hollarda klasslarni kompilyatsiya qilish. Agar kod yoki Java-mashinaning versiyasi belgilanmagan bo'lsa, odatiy parametr 1.3 qo'llaniladi

Nihoyat, encoding parametri Java-fayllarining kodlashini ko'rsatish imkonini beradi. Biz UTF-8 ni ko'rsatdik. Hozir deyarli barcha manbalar UTF-8 kodlashda saqlanadi. Ammo agar bu parametr belgilanmagan bo'lsa, operatsion tizimning joriy kodlash tanlanadi. Windows uchun - bu Windows-1251 kodlash.

Ayrim hollarda, yig'ish amalga oshiriladigan kompyuterda bir nechta Java versiyalari o'rnatilgan hollari mavjud bo'lishi mumkin: turli modullar va/yoki turli loyihalar uchun yig'ish uchun. Bunday hollarda, JAVA_HOME o'zgaruvchisi faqat ularning biriga yo'lni ko'rsatishi mumkin.

Bunga qo'shimcha ravishda, turli Java-mashina amalga oshirishlari mavjud: OpenJDK, OracleJDK, Amazon JDK. Va projekt qancha katta bo'lsa, uning tuzilishi shuncha murakkab bo'ladi. Ammo siz tegi yordamida javac kompilyatoriga yo'lni aniq ko'rsatishingiz mumkin. Buni maxsus shu holat uchun qo'shishdi.

maven-compiler-plugin plaginida ikki maqsad (goals) mavjud:

  • compiler:compile – manbalar kompilyatsiyasi, odatda compile faza bilan bog'langan
  • compiler:testCompile – testlarni kompilyatsiya qilish, odatda test-compile faza bilan bog'langan.

Bundan tashqari, terminalda javac-kompilyatoriga uzatiladigan argumentlar ro'yxatini belgilashingiz mumkin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <compilerArgs>
            <arg>-verbose</arg> <arg>-Xlint:all,-options,-path<arg>
        </compilerArgs>
    </configuration>
</plugin>

1.3 Plagin yaratish jar-fayl maven-jar-plugin

Agar siz Maven yordamida o'z jar-kutubxonangizni yaratmoqchi bo'lsangiz, sizga maven-jar-plugin plagin kerak bo'ladi. Ushbu plagin juda ko'p foydali narsalarni qila oladi.

Bunday plaginning misoli:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <includes> <include>**/properties/*</include> </includes>
        <archive> <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> </archive>
    </configuration>
</plugin>

Avvalo, uning yordamida qaysi fayllar kutubxonaga kiritilishi va qaysi kiritilmasligini belgilashingiz mumkin. <include> teglarining <includes> bo'limida kutubxonaga qo'shilishi kerak bo'lgan kataloglar ro'yxatini belgilashingiz mumkin.

Ikkinchidan, har bir jar-kutubxona manifestga ega bo'lishi kerak (fayl MANIFEST.MF). Plagin uni kutubxonadagi kerakli joyga joylashtiradi, siz faqat uning qayerdan olinishi kerakligini belgilashingiz kerak. Buning uchun <manifestFile> tegi ishlatiladi.

Va nihoyat, plagin o'zi manifestni yaratishi mumkin. Buning uchun <manifestFile> tegi o'rniga <manifest> tagini qo'shishingiz kerak va unda kelajakdagi manifest uchun ma'lumotlarni ko'rsating. Misol:

<configuration>
    <archive>
        <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.javarush.MainApplication</mainClass>
        </manifest>
    </archive>
</configuration>

<addClasspath> tegi manifestga CLASSPATH qo'shish zarurligini belgilaydi.

<classpathPrefix> tegi har bir resurs oldiga prefiks (misolda lib) qo'shishni imkoniyat beradi. <classpathPrefix> dagi prefiksni belgilash, bog'liqliklarni alohida papkada joylashtirish imkonini beradi.

Ha, siz kutubxona ichida boshqa kutubxonalarni joylashtirishingiz mumkin. Sizni ko'plab kutilmagan holatlar kutmoqda, masalan, qayergadir properties-fayliga yo'l ko'rsatishingiz kerak bo'lganda, u jar-kutubxonada joylashgan bo'ladi, bu boshqa jar-kutubxonada joylashgan bo'ladi.

Va nihoyat, <mainClass> tegi asosiy ishga tushiriladigan klassni ko'rsatadi. “Nima bu asosiy ishga tushiriladigan klass?”, – deb so'raysiz. Gap shundaki, Java-mashina nafaqat Java-klass bilan, balki jar-fayl bilan ham ko'rsatilgan dasturni ishga tushirishi mumkin. Va aynan shu holat uchun asosiy boshlang'ich klass kerak bo'ladi.

1.4 Yig'ish raqamini yaratish plagin buildnumber-maven-plugin

Ko'pincha jar-kutubxonalar va war-fayllar loyihaning nomi va uning versiyasini, shuningdek, yig'ish versiyasini o'z ichiga oladi. Bungasiga qaraganda, bu bog'liqliklarni boshqarish uchun foydali bo'lgani uchun, test qilishni ham osonlashtiradi: kutubxonada qaysi versiyada xatolik tuzatilganligi yoki qaysi versiyada qo'shilganligi tushunarli bo'ladi.

Ko'pincha bu vazifa quyidagi tarzda hal qilinadi – maxsus application.properties fayl yaratiladi, unda barcha zarur ma'lumotlar saqlanadi va uni yig'ishga kiritishadi. Shuningdek, yig'ish scenariysini sozlash mumkin, shunda bu fayldagi ma'lumotlar MANIFEST.MF ga va hokazo ko'chiriladi.

Lekin eng qiziqarli narsa shundaki, Mavenning maxsus plagini mavjud, u bunday application.properties faylni yaratishi mumkin. Buning uchun bunday fayl yaratilib, u maxsus ma'lumot shablonlari bilan to'ldirilishi kerak. Misol:

# application.properties
app.name=${pom.name} app.version=${pom.version} app.build=${buildNumber}

Uchta parametrning qiymatlari yig'ish jarayonida joylashtiriladi.

pom.name va pom.version parametrlari bevosita pom.xml dan olinadi. Yig'ishning noyob raqamini yaratish uchun Mavenning maxsus plagini mavjud – buildnumber-maven-plugin. Quyidagi misolga qarang:

<packaging>war</packaging>
<version>1.0</version>
<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.2</version>
        <executions> <execution> <phase>validate</phase> <goals> <goal>create</goal> </goals> </execution> </executions>
        <configuration> <revisionOnScmFailure>true</revisionOnScmFailure> <format>{0}-{1,date,yyyyMMdd}</format> <items> <item>${project.version}</item> <item>timestamp</item> </items> </configuration>
    </plugin>
</plugins>

Yuqoridagi misolda uchta muhim narsa sodir bo'ladi. Birinchidan, versiyani belgilash uchun plagin keltirilgan. Ikkinchidan, u validate fazasida (eng birinchi faza) ishga tushishini va yig'ish raqamini yaratishini ko'rsatdi – ${buildNumber}.

Va uchinchidan, bu raqamning shakli bir nechta qismlardan yig'ilgan. Bu loyihaning versiyasi project.version va hozirgi vaqt shablon bilan berilgan. Shablon formati Java-klassi MessageFormat tomonidan belgilanadi.

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