GitHub'da o'z maven-repozitoringiz
Dasturchilar o'z kutubxonalarini GitHub'ga yuklashlari mumkin, buning uchun ularga maxsus plagin site-maven-plugin bor. Keling, uning ishlatilishi misolini ko'rib chiqamiz:
<project>
<properties>
<github.global.server>github</github.global.server> <github.maven-plugin>0.9</github.maven-plugin>
</properties>
<distributionManagement>
<repository> <id>internal.repo</id> <name>Temporary Staging Repository</name> <url>file://${project.build.directory}/mvn-repo</url> </repository>
</distributionManagement>
<build>
<plugins>
<plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.1</version> <configuration> <altDeploymentRepository> internal.repo::default::file://${project.build.directory}/mvn-repo </altDeploymentRepository> </configuration> </plugin>
<plugin> <groupId>com.github.github</groupId> <artifactId>site-maven-plugin</artifactId> <version>${github.maven-plugin}</version> <configuration> <message>Maven artifacts for ${project.version}</message> <noJekyll>true</noJekyll> <outputDirectory>${project.build.directory}/mvn-repo</outputDirectory> <branch>refs/heads/mvn-repo</branch> <includes>**/*</includes> <repositoryName>SuperLibrary</repositoryName> <repositoryOwner>javarushu-student</repositoryOwner> </configuration> <executions> <execution> <goals> <goal>site</goal> </goals> <phase>deploy</phase> </execution> </executions> </plugin>
</plugins>
</build>
</project>
Nimalar yozilganini tushunib olaylik.
Ko'k bilan vaqtinchalik lokal repozitoriy yaratish ko'rsatilgan. Texnik jihatdan bu oddiy papka, lekin Maven uni alohida repozitoriy sifatida ko'rishi kerak.
Qizil bilan maven-deploy-plugin plagini ishga tushirilishi ko'rsatilgan, bu yerda yig'ilgan kutubxona aynan ushbu vaqtinchalik repozitoriyda saqlanishi kerakligi ko'rsatilgan.
Va nihoyat, yashil bilan site-maven-plugin plagin ko'rsatilgan, bu plagin barcha fayllarni repozitoriydan olib, ularni GitHub'ga qo'shishi kerak. Bu yerda ba'zi tushuntirishlar kerak. Barcha parametrlari ikki guruhga bo'linadi: nima yuklaymiz va qayerga yuklaymiz.
Nima yuklaymiz:- outputDirectory — kommit uchun fayllarni olish uchun direktoriya
- includes — kommit uchun fayllar niqobini belgilaydi
- repositoryOwner — GitHub'dagi repozitoriy egasining nomi
- repositoryName — repozitoriy nomi
- branch — qaysi tarmoqqa kommit qilish kerakligini belgilaydi
- message — kommit qilinganida qo'shiladigan xabar
Shuningdek, o'zingizning repozitoriyingizga kirish uchun login va parolni Maven setting.xml faylida ko'rsatishingiz kerak:
<settings>
<servers>
<server>
<id>github</id>
<username>[username]</username>
<password>[password]</password>
</server>
</servers>
</settings>
GitHub-repozitoriydan kutubxonani boshqa loyihaga ulash (foydalanish) uchun, bu repozitoriyalarni pom.xml fayliga qo'shishingiz kerak:
<repositories>
<repository>
<id>[name-project]-mvn-repo</id>
<url>https://raw.github.com/[username]/[name-project]/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
Shundan so'ng Maven kutubxonani qayerdan olish kerakligini tushunadi.
- [name-project] — bu loyiha nomi, bizning holatda bu SuperLibrary
- [username] — bu GitHub'dagi login, misolda bu javarush-user
Yig'ilishni Docker obraziga qadoqlash
Biz yangi davrda yashayapmiz, loyihalar yig'ilish natijasida Maven-repozitoriyga yoki docker storage'ga joylashtirilishi mumkin.
Maven va Docker'ni bir-biri bilan ishlashini ta'minlash uchun bizga docker-maven-plugin plagini kerak bo'ladi. Hech qanday murakkablik yo'q:
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.10</version>
<configuration>
<dockerDirectory>${project.basedir}</dockerDirectory> <imageName>javarush/${project.artifactId}</imageName>
</configuration>
<executions>
<execution> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution>
</executions>
</plugin>
</plugins>
</build>
Sariq bilan package yig'ilish fazasiga goal build qo'shilishi ko'rsatilgan. Uni mvn docker:build komandasi yordamida ishlatish mumkin.
dockerDirectory belgisi Dockerfile joylashgan papkani belgilaydi. Obraz nomi esa imageName belgisi orqali ko'rsatiladi.
Agar loyiha jar-faylga qadoqlangan bo'lsa, docker-fayl taxminan quyidagicha ko'rinishga ega bo'ladi:
FROM java:11
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
Agar web-ilovani qadoqlayotgan bo'lsangiz, Tomcat qo'shishingiz kerak bo'lishi mumkin:
FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run
GO TO FULL VERSION