Ihr Maven-Repository auf GitHub

Entwickler können ihre Bibliothek auf GitHub hochladen, wo es ein spezielles Site-Maven-Plugin-Plugin gibt . Schauen wir uns ein Beispiel für seine Verwendung an:

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

Mal sehen, was hier geschrieben steht.

Die Erstellung eines temporären lokalen Repositorys wird blau hervorgehoben. Technisch gesehen ist es nur ein Ordner, aber wir benötigen Maven, um ihn als separates Repository zu behandeln.

Wir haben den Start des Plugins „maven-deploy-plugin“ rot hervorgehoben und dabei angegeben, dass die kompilierte Bibliothek in diesem temporären Repository abgelegt werden soll.

Und schließlich ist das Site-Maven-Plugin-Plugin grün hervorgehoben , das alle Dateien aus dem Repository übernehmen und an GitHub übergeben soll. Hier bedarf es einer Erklärung. Alle Parameter sind in zwei Gruppen unterteilt: Was soll gefüllt werden und wo soll gefüllt werden.

Was wir ausfüllen:
  • Ausgabeverzeichnis – Verzeichnis, in dem die Dateien zum Festschreiben abgerufen werden
  • Includes – legt die Maske der festzuschreibenden Dateien fest
Wo laden wir hoch:
  • RepositoryOwner – der Name des Repository-Eigentümers auf GitHub
  • RepositoryName – Repository-Name
  • branch – legt den Repository-Zweig auf GitHub fest, auf den festgeschrieben werden soll
  • Nachricht – die Nachricht, die beim Festschreiben hinzugefügt wird

Sie müssen außerdem den Benutzernamen und das Passwort für Ihr Repository in Maven Setting.xml angeben :

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

Um eine Bibliothek aus einem GitHub-Repository mit einem anderen Projekt zu verbinden (zu verwenden), müssen Sie dieses Repository in Ihrer pom.xml angeben :

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

Danach wird Maven verstehen, woher er die Bibliothek bekommt.

  • [Name-Projekt] ist der Name des Projekts, in unserem Fall SuperLibrary
  • [Benutzername] ist der Login auf GitHub, im Beispiel ist es codegym-user

Packen der Assembly in ein Docker-Image

Wir leben in einer neuen Zeit, in der Projekte als Ergebnis der Assembly im Maven-Repository oder vielleicht im Docker-Speicher abgelegt werden können.

Um Maven und Docker zu Freunden zu machen, benötigen wir das Docker-Maven-Plugin-Plugin . Nichts Kompliziertes:

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

Blau hervorgehoben ist der Punkt, an dem wir das Zielbulid zur Paketphase des Builds hinzugefügt haben. Es kann mit dem Befehl mvn docker:build aufgerufen werden .

Das Tag dockerDirectory gibt den Ordner an, in dem sich die Docker-Datei befindet. Und der Name des Bildes wird mit dem Tag imageName festgelegt .

Wenn das Projekt in einer JAR-Datei verpackt ist, sieht die Docker-Datei etwa so aus:

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

Wenn Sie eine Webanwendung verpacken, müssen Sie möglicherweise Tomcat hinzufügen:

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