Twoje repozytorium maven na GitHub

Deweloperzy mogą przesłać swoją bibliotekę do GitHub, dla której ma specjalną wtyczkę site-maven-plugin . Spójrzmy na przykład jego użycia:

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

Zobaczmy, co jest tutaj napisane.

Tworzenie tymczasowego repozytorium lokalnego jest podświetlone na niebiesko. Technicznie jest to tylko folder, ale potrzebujemy Mavena, aby traktował go jako osobne repozytorium.

Na czerwono zaznaczyliśmy uruchomienie wtyczki maven-deploy-plugin , gdzie zaznaczyliśmy, że skompilowana biblioteka powinna zostać umieszczona w tym tymczasowym repozytorium.

I wreszcie wtyczka site-maven-plugin jest podświetlona na zielono , która powinna pobrać wszystkie pliki z repozytorium i przesłać je do GitHub. Potrzebne jest tu pewne wyjaśnienie. Wszystkie parametry są podzielone na dwie grupy: co wypełnić i gdzie wypełnić.

Co wypełniamy:
  • outputDirectory - katalog skąd pobrać pliki do zatwierdzenia
  • zawiera - ustawia maskę plików do zatwierdzenia
Gdzie ładujemy:
  • repositoryOwner — nazwa właściciela repozytorium w serwisie GitHub
  • repositoryName - nazwa repozytorium
  • branch — ustawia gałąź repozytorium na GitHub, do której ma zostać zatwierdzona
  • wiadomość - wiadomość, która zostanie dodana podczas zatwierdzania

Musisz także podać login i hasło do swojego repozytorium w Maven setting.xml :

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

Aby połączyć (użyć) bibliotekę z repozytorium GitHub z innym projektem, musisz określić to repozytorium w pliku 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>

Po tym Maven zrozumie, skąd wziąć bibliotekę.

  • [nazwa-projektu] to nazwa projektu, w naszym przypadku SuperLibrary
  • [nazwa użytkownika] to login na GitHub, w przykładzie jest to codegym-user

Pakowanie zestawu do obrazu platformy Docker

Żyjemy w nowych czasach, kiedy projekty w wyniku asemblera można umieścić w repozytorium Maven, a może w docker storage.

Aby zaprzyjaźnić się z Mavenem i Dockerem, potrzebujemy wtyczki docker-maven-plugin . Nic skomplikowanego:

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

Podświetlony na niebiesko punkt, w którym dodaliśmy kompilację celu do fazy pakietu kompilacji. Można go wywołać za pomocą polecenia mvn docker:build .

Znacznik dockerDirectory określa folder, w którym znajduje się plik Dockerfile. A nazwa obrazu jest ustawiana za pomocą tagu imageName .

Jeśli projekt jest spakowany w pliku jar, plik dokera będzie wyglądał mniej więcej tak:

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

Jeśli pakujesz aplikację internetową, może być konieczne dodanie Tomcata:

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