Pluginuri utile Maven

All lectures for RO purposes
Nivel, Lecţie
Disponibil

Depozitul tău maven pe GitHub

Dezvoltatorii își pot încărca biblioteca pe GitHub, pentru care are un plugin special pentru site-maven-plugin . Să ne uităm la un exemplu de utilizare:

<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>codegymu-student</repositoryOwner>
            	</configuration>
            	<executions>
                	<execution>
                    	<goals>
                            <goal>site</goal>
                    	</goals>
                        <phase>deploy</phase>
                	</execution>
            	</executions>
        	</plugin>
    	</plugins>
    </build>
 
</project>

Sa vedem ce scrie aici.

Crearea unui depozit local temporar este evidențiată cu albastru. Din punct de vedere tehnic, este doar un folder, dar avem nevoie de Maven să-l trateze ca un depozit separat.

Am evidențiat cu roșu lansarea pluginului maven-deploy-plugin , unde am indicat că biblioteca compilată ar trebui plasată în acest depozit temporar.

Și, în sfârșit, pluginul site-maven-plugin este evidențiat în verde , care ar trebui să ia toate fișierele din depozit și să le trimită în GitHub. Aici este nevoie de o explicație. Toți parametrii sunt împărțiți în două grupuri: ce să umpleți și unde să umpleți.

Ce completam:
  • outputDirectory - directorul de unde să obțineți fișierele pentru comitere
  • include - setează masca fișierelor pentru comite
Unde încărcăm:
  • repositoryOwner - numele proprietarului depozitului pe GitHub
  • repositoryName - numele depozitului
  • branch - setează ramura depozitului de pe GitHub la care să se angajeze
  • mesaj - mesajul care va fi adăugat la comitere

De asemenea, trebuie să specificați numele de autentificare și parola pentru depozitul dvs. în Maven setting.xml :

<settings>
  <servers>
    <server>
  	<id>github</id>
      <username>[username]</username>
      <password>[password]</password>
    </server>
  </servers>
</settings>

Pentru a conecta (utiliza) o bibliotecă dintr-un depozit GitHub la alt proiect, trebuie să specificați acest depozit în pom.xml :

<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>

După aceea, Maven va înțelege de unde să obțină biblioteca.

  • [name-project] este numele proiectului, în cazul nostru SuperLibrary
  • [nume utilizator] este autentificarea pe GitHub, în ​​exemplu este codegym-user

Ambalarea ansamblului într-o imagine Docker

Trăim într-un timp nou, când proiectele ca rezultat al asamblarii pot fi plasate în depozitul Maven sau poate în stocarea docker.

Pentru a ne face prieteni pe Maven și Docker, avem nevoie de pluginul docker-maven-plugin . Nimic complicat:

  <build>
    <plugins>
  	  <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
    	<version>0.4.10</version>
    	<configuration>
          <dockerDirectory>${project.basedir}</dockerDirectory>
      	  <imageName>codegym/${project.artifactId}</imageName>
    	</configuration>
    	<executions>
      	  <execution>
            <phase>package</phase>
        	<goals>
          	<goal>build</goal>
        	</goals>
      	  </execution>
    	</executions>
  	  </plugin>
    </plugins>
  </build>

Evidențiat cu albastru este punctul în care am adăugat bulidul obiectivului la faza de pachet a construcției. Poate fi apelat cu comanda mvn docker:build .

Eticheta dockerDirectory specifică folderul în care se află fișierul Docker. Și numele imaginii este setat folosind eticheta imageName .

Dacă proiectul este împachetat într-un fișier jar, atunci fișierul docker va arăta cam așa:

FROM java:11
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]

Dacă împachetați o aplicație web, atunci poate fi necesar să adăugați Tomcat:

FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION