Kho lưu trữ maven của bạn trên GitHub

Các nhà phát triển có thể tải thư viện của họ lên GitHub, thư viện này có một plugin site-maven-plugin đặc biệt . Hãy xem xét một ví dụ về việc sử dụng nó:

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

Hãy xem những gì được viết ở đây.

Việc tạo một kho lưu trữ cục bộ tạm thời được đánh dấu bằng màu xanh lam. Về mặt kỹ thuật, nó chỉ là một thư mục, nhưng chúng tôi cần Maven coi nó như một kho lưu trữ riêng biệt.

Chúng tôi đánh dấu màu đỏ khi khởi chạy plugin maven-triển khai-plugin , nơi chúng tôi chỉ ra rằng thư viện đã biên dịch nên được đặt trong kho lưu trữ tạm thời này.

Và cuối cùng, plugin site-maven-plugin được đánh dấu bằng màu xanh lục , plugin này sẽ lấy tất cả các tệp từ kho lưu trữ và cam kết chúng với GitHub. Một số lời giải thích là cần thiết ở đây. Tất cả các tham số được chia thành hai nhóm: điền gì và điền vào đâu.

Những gì chúng tôi điền vào:
  • outputDirectory - thư mục nơi nhận tệp cho cam kết
  • bao gồm - đặt mặt nạ của tệp để cam kết
Chúng tôi tải lên ở đâu:
  • repositoryOwner - tên của chủ sở hữu kho lưu trữ trên GitHub
  • repositoryName - tên kho lưu trữ
  • nhánh - đặt nhánh kho lưu trữ trên GitHub để cam kết
  • tin nhắn - tin nhắn sẽ được thêm vào khi cam kết

Bạn cũng cần chỉ định thông tin đăng nhập và mật khẩu cho kho lưu trữ của mình trong Maven setting.xml :

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

Để kết nối (sử dụng) thư viện từ kho lưu trữ GitHub với dự án khác, bạn cần chỉ định kho lưu trữ này trong tệp pom.xml của mình :

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

Sau đó, Maven sẽ hiểu lấy thư viện từ đâu.

  • [tên-dự án] là tên của dự án, trong trường hợp của chúng tôi là SuperLibrary
  • [tên người dùng] là thông tin đăng nhập trên GitHub, trong ví dụ này là codegym-user

Đóng gói lắp ráp thành hình ảnh Docker

Chúng ta đang sống trong một thời đại mới, khi các dự án là kết quả của quá trình lắp ráp có thể được đặt trong kho lưu trữ Maven hoặc có thể trong bộ lưu trữ docker.

Để kết bạn với Maven và Docker, chúng ta cần plugin docker-maven-plugin . Không có gì phức tạp:

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

Được đánh dấu bằng màu xanh lam là điểm mà chúng tôi đã thêm mục tiêu bắt buộc vào giai đoạn đóng gói của quá trình xây dựng. Nó có thể được gọi bằng lệnh mvn docker:build .

Thẻ dockerDirectory chỉ định thư mục chứa Dockerfile. Và tên của hình ảnh được đặt bằng cách sử dụng thẻ imageName .

Nếu dự án được đóng gói trong một tệp jar, thì tệp docker sẽ trông giống như thế này:

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

Nếu bạn đang đóng gói một ứng dụng web, thì bạn có thể cần thêm Tomcat:

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