Utili plugin Maven

All lectures for IT purposes
Livello 1, Lezione 314
Disponibile

Il tuo repository esperto su GitHub

Gli sviluppatori possono caricare la propria libreria su GitHub, per il quale dispone di uno speciale plug-in site-maven-plugin . Vediamo un esempio del suo utilizzo:

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

Vediamo cosa c'è scritto qui.

La creazione di un repository locale temporaneo è evidenziata in blu. Tecnicamente è solo una cartella, ma abbiamo bisogno che Maven la tratti come un repository separato.

Abbiamo evidenziato in rosso il lancio del plug-in maven-deploy-plugin , dove abbiamo indicato che la libreria compilata dovrebbe essere collocata in questo repository temporaneo.

E infine, il plug-in site-maven-plugin è evidenziato in verde , che dovrebbe prendere tutti i file dal repository e inviarli a GitHub. Qualche spiegazione è necessaria qui. Tutti i parametri sono divisi in due gruppi: cosa riempire e dove riempire.

Cosa compiliamo:
  • outputDirectory - directory dove ottenere i file per il commit
  • include - imposta la maschera dei file da salvare
Dove carichiamo:
  • repositoryOwner : il nome del proprietario del repository su GitHub
  • repositoryName - nome del repository
  • branch - imposta il ramo del repository su GitHub su cui eseguire il commit
  • messaggio - il messaggio che verrà aggiunto durante il commit

Devi anche specificare login e password per il tuo repository in Maven setting.xml :

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

Per connettere (usare) una libreria da un repository GitHub a un altro progetto, devi specificare questo repository nel tuo 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>

Successivamente, Maven capirà da dove ottenere la libreria.

  • [nome-progetto] è il nome del progetto, nel nostro caso SuperLibrary
  • [username] è il login su GitHub, nell'esempio è codegym-user

Comprimere l'assembly in un'immagine Docker

Viviamo in un nuovo tempo, quando i progetti come risultato dell'assembly possono essere inseriti nel repository Maven, o forse nello storage docker.

Per fare amicizia con Maven e Docker, abbiamo bisogno del plug-in docker-maven-plugin . Niente di complicato:

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

Evidenziato in blu è il punto in cui abbiamo aggiunto il goal bulid alla fase del pacchetto della build. Può essere chiamato con il comando mvn docker:build .

Il tag dockerDirectory specifica la cartella in cui si trova il Dockerfile. E il nome dell'immagine viene impostato utilizzando il tag imageName .

Se il progetto è impacchettato in un file jar, il file docker sarà simile a questo:

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

Se stai impacchettando un'applicazione web, potrebbe essere necessario aggiungere Tomcat:

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