GitHub'daki maven deponuz

Geliştiriciler kitaplıklarını, özel bir site-maven-plugin eklentisine sahip olduğu GitHub'a yükleyebilirler . Bir kullanım örneğine bakalım:

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

Bakalım burada ne yazıyor.

Geçici bir yerel deponun oluşturulması mavi renkle vurgulanmıştır. Teknik olarak bu sadece bir klasör, ancak Maven'in onu ayrı bir havuz olarak ele almasına ihtiyacımız var.

Derlenmiş kitaplığın bu geçici depoya yerleştirilmesi gerektiğini belirttiğimiz maven-deploy-plugin eklentisinin lansmanını kırmızıyla vurguladık .

Ve son olarak, site-maven-plugin eklentisi , depodaki tüm dosyaları alması ve GitHub'a işlemesi gereken yeşil renkle vurgulanmıştır . Burada biraz açıklama gerekiyor. Tüm parametreler iki gruba ayrılır: neyin doldurulacağı ve nerede doldurulacağı.

Ne dolduruyoruz:
  • outputDirectory - taahhüt için dosyaların alınacağı dizin
  • içerir - kaydedilecek dosyaların maskesini ayarlar
Nereye yüklüyoruz:
  • repositoryOwner - GitHub'daki depo sahibinin adı
  • depoAdı - havuz adı
  • şube - taahhüt edilecek GitHub'daki depo şubesini ayarlar
  • mesaj - taahhütte bulunurken eklenecek mesaj

Maven settings.xml dosyasında deponuz için kullanıcı adını ve parolayı da belirtmeniz gerekir :

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

GitHub deposundaki bir kitaplığı başka bir projeye bağlamak (kullanmak) için bu depoyu pom.xml dosyanızda belirtmeniz gerekir :

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

Bundan sonra Maven, kütüphaneyi nereden alacağını anlayacaktır.

  • [name-project] projenin adıdır, bizim durumumuzda SuperLibrary
  • [kullanıcı adı], GitHub'daki oturum açma adıdır, örnekte codegym-user

Derlemeyi bir Docker görüntüsüne paketleme

Montaj sonucunda projelerin Maven deposuna veya belki liman işçisi deposuna yerleştirilebileceği yeni bir zamanda yaşıyoruz.

Maven ve Docker'ı arkadaş edinmek için docker-maven-plugin eklentisine ihtiyacımız var . Karmaşık bir şey yok:

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

Mavi renkle vurgulanan nokta, yapının paket aşamasına hedef bulid'i eklediğimiz noktadır. mvn docker:build komutu ile çağrılabilir .

dockerDirectory etiketi, Dockerfile dosyasının bulunduğu klasörü belirtir. Ve görüntünün adı, imageName etiketi kullanılarak ayarlanır .

Proje bir jar dosyasında paketlenmişse, liman işçisi dosyası şuna benzer:

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

Bir web uygulamasını paketliyorsanız Tomcat'i eklemeniz gerekebilir:

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