JavaRush /Kurslar /All lectures for UZ purposes /Foydali Maven-plaginlar

Foydali Maven-plaginlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

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
Qayerga yuklaymiz:
  • 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
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION