Su repositorio maven en GitHub

Los desarrolladores pueden cargar su biblioteca en GitHub, para lo cual tiene un complemento especial site-maven-plugin . Veamos un ejemplo de su uso:

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

Veamos lo que está escrito aquí.

La creación de un repositorio local temporal está resaltada en azul. Técnicamente es solo una carpeta, pero necesitamos que Maven lo trate como un repositorio separado.

Resaltamos en rojo el lanzamiento del complemento maven-deploy-plugin , donde indicamos que la biblioteca compilada debe colocarse en este repositorio temporal.

Y finalmente, el complemento site-maven-plugin está resaltado en verde , lo que debería tomar todos los archivos del repositorio y enviarlos a GitHub. Se necesita alguna explicación aquí. Todos los parámetros se dividen en dos grupos: qué llenar y dónde llenar.

Lo que rellenamos:
  • outputDirectory - directorio donde obtener archivos para confirmar
  • incluye - establece la máscara de archivos para confirmar
Donde subimos:
  • repositoryOwner : el nombre del propietario del repositorio en GitHub
  • repositoryName - nombre del repositorio
  • branch - establece la rama del repositorio en GitHub a la que se va a comprometer
  • mensaje : el mensaje que se agregará al confirmar

También debe especificar el nombre de usuario y la contraseña para su repositorio en Maven setting.xml :

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

Para conectar (usar) una biblioteca desde un repositorio de GitHub a otro proyecto, debe especificar este repositorio en su 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>

Después de eso, Maven entenderá de dónde obtener la biblioteca.

  • [nombre-proyecto] es el nombre del proyecto, en nuestro caso SuperLibrary
  • [nombre de usuario] es el inicio de sesión en GitHub, en el ejemplo es codegym-user

Empaquetar el ensamblaje en una imagen de Docker

Vivimos en una nueva época, cuando los proyectos como resultado del ensamblaje se pueden colocar en el repositorio de Maven, o tal vez en el almacenamiento de la ventana acoplable.

Para hacer amigos de Maven y Docker, necesitamos el complemento docker-maven-plugin . Nada complicado:

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

Resaltado en azul está el punto en el que agregamos el objetivo bulid a la fase de paquete de la compilación. Se puede llamar con el comando mvn docker:build .

La etiqueta dockerDirectory especifica la carpeta donde se encuentra el Dockerfile. Y el nombre de la imagen se establece mediante la etiqueta imageName .

Si el proyecto está empaquetado en un archivo jar, el archivo docker se verá así:

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

Si está empaquetando una aplicación web, es posible que deba agregar Tomcat:

FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run