Dit maven-lager på GitHub

Udviklere kan uploade deres bibliotek til GitHub, som det har et særligt site-maven-plugin plugin til . Lad os se på et eksempel på dets brug:

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

Lad os se, hvad der står her.

Oprettelsen af ​​et midlertidigt lokalt depot er fremhævet med blåt. Teknisk set er det bare en mappe, men vi har brug for, at Maven behandler den som et separat depot.

Vi fremhævede med rødt lanceringen af ​​maven-deploy-plugin plugin , hvor vi angav, at det kompilerede bibliotek skulle placeres i dette midlertidige lager.

Og endelig er site-maven-plugin-pluginet fremhævet med grønt , som skal tage alle filerne fra depotet og commitere dem til GitHub. Der er brug for en forklaring her. Alle parametre er opdelt i to grupper: hvad der skal udfyldes og hvor der skal udfyldes.

Hvad vi udfylder:
  • outputDirectory - mappe, hvor man kan hente filer til commit
  • inkluderer - indstiller masken for filer, der skal begås
Hvor uploader vi:
  • repositoryOwner - navnet på lagerejeren på GitHub
  • repositoryName - depotnavn
  • branch - indstiller arkivgrenen på GitHub, som den skal forpligte sig til
  • besked - den besked, der vil blive tilføjet ved commit

Du skal også angive login og adgangskode til dit lager i Maven setting.xml :

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

For at forbinde (bruge) et bibliotek fra et GitHub-lager til et andet projekt, skal du angive dette lager i din 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>

Derefter vil Maven forstå, hvor man kan få biblioteket fra.

  • [navn-projekt] er navnet på projektet, i vores tilfælde SuperLibrary
  • [brugernavn] er login på GitHub, i eksemplet er det codegym-bruger

Pakning af samlingen i et Docker-billede

Vi lever i en ny tid, hvor projekter som følge af montagen kan placeres i Maven-depotet, eller måske i docker-lageret.

For at få Maven og Docker venner, har vi brug for plugin'et docker-maven-plugin . Intet kompliceret:

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

Fremhævet med blåt er det punkt, hvor vi føjede målbygningen til pakkefasen af ​​build. Det kan kaldes med kommandoen mvn docker:build .

DockerDirectory- tagget angiver den mappe, hvor Dockerfilen er placeret. Og navnet på billedet indstilles ved hjælp af imageName- tagget .

Hvis projektet er pakket i en jar-fil, vil docker-filen se sådan ud:

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

Hvis du pakker en webapplikation, skal du muligvis tilføje Tomcat:

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