Repositori maven anda di GitHub

Pembangun boleh memuat naik pustaka mereka ke GitHub, yang mana ia mempunyai pemalam site-maven-plugin khas . Mari kita lihat contoh penggunaannya:

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

Mari lihat apa yang ditulis di sini.

Penciptaan repositori tempatan sementara diserlahkan dengan warna biru. Secara teknikal ia hanya folder, tetapi kami memerlukan Maven untuk menganggapnya sebagai repositori yang berasingan.

Kami menyerlahkan dalam warna merah pelancaran pemalam maven-deploy-plugin , di mana kami menyatakan bahawa perpustakaan yang disusun harus diletakkan dalam repositori sementara ini.

Dan akhirnya, pemalam site-maven-plugin diserlahkan dalam warna hijau , yang sepatutnya mengambil semua fail dari repositori dan menyerahkannya kepada GitHub. Beberapa penjelasan diperlukan di sini. Semua parameter dibahagikan kepada dua kumpulan: apa yang perlu diisi dan di mana untuk diisi.

Apa yang kami isi:
  • outputDirectory - direktori di mana untuk mendapatkan fail untuk komit
  • termasuk - menetapkan topeng fail untuk dilakukan
Di mana kami memuat naik:
  • repositoryOwner - nama pemilik repositori di GitHub
  • repositoryName - nama repositori
  • cawangan - menetapkan cawangan repositori pada GitHub yang perlu dilakukan
  • mesej - mesej yang akan ditambah apabila melakukan

Anda juga perlu menentukan log masuk dan kata laluan untuk repositori anda dalam setting Maven.xml :

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

Untuk menyambung (menggunakan) perpustakaan daripada repositori GitHub ke projek lain, anda perlu menentukan repositori ini dalam pom.xml anda :

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

Selepas itu, Maven akan faham dari mana hendak mendapatkan perpustakaan.

  • [nama-projek] ialah nama projek, dalam kes kami SuperLibrary
  • [nama pengguna] ialah log masuk pada GitHub, dalam contoh ia adalah codegym-user

Membungkus perhimpunan ke dalam imej Docker

Kita hidup dalam masa baharu, apabila projek hasil daripada pemasangan boleh diletakkan dalam repositori Maven, atau mungkin dalam storan buruh pelabuhan.

Untuk membuat rakan Maven dan Docker, kami memerlukan pemalam docker-maven-plugin . Tiada yang rumit:

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

Diserlahkan dengan warna biru ialah titik di mana kami menambahkan bulid matlamat pada fasa pakej binaan. Ia boleh dipanggil dengan mvn docker:build arahan .

Tag dockerDirectory menentukan folder tempat Fail Docker berada. Dan nama imej ditetapkan menggunakan tag imageName .

Jika projek itu dibungkus dalam fail jar, maka fail docker akan kelihatan seperti ini:

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

Jika anda membungkus aplikasi web, maka anda mungkin perlu menambah Tomcat:

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