你在 GitHub 上的 Maven 倉庫
開發人員可以將他們的庫上傳到 GitHub,為此它有一個特殊的site-maven-plugin 插件。讓我們看一下它的使用示例:
<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>
讓我們看看這裡寫了什麼。
臨時本地存儲庫的創建以藍色突出顯示。從技術上講,它只是一個文件夾,但我們需要 Maven 將其視為一個單獨的存儲庫。
我們用紅色突出顯示了 maven-deploy-plugin 插件的啟動,我們指出編譯後的庫應該放在這個臨時存儲庫中。
最後,site-maven-plugin 插件以綠色突出顯示,它應該從存儲庫中獲取所有文件並將它們提交到 GitHub。這裡需要一些解釋。所有參數分為兩組:填充什麼和在哪裡填充。
我們填寫的內容:- outputDirectory - 獲取提交文件的目錄
- includes - 設置要提交的文件的掩碼
- repositoryOwner - GitHub 上的存儲庫所有者的名稱
- repositoryName - 存儲庫名稱
- branch - 在 GitHub 上設置要提交的存儲庫分支
- message - 提交時將添加的消息
您還需要在 Maven setting.xml中為您的存儲庫指定登錄名和密碼:
<settings>
<servers>
<server>
<id>github</id>
<username>[username]</username>
<password>[password]</password>
</server>
</servers>
</settings>
要將 GitHub 存儲庫中的庫連接(使用)到另一個項目,您需要在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>
之後,Maven 將了解從哪裡獲取庫。
- [name-project]是項目的名稱,在我們的例子中是 SuperLibrary
- [username]是 GitHub 上的登錄名,示例中是 codegym-user
將程序集打包到 Docker 鏡像中
我們生活在一個新時代,組裝後的項目可以放在 Maven 存儲庫中,或者可能放在 docker 存儲中。
為了讓 Maven 和 Docker 成為朋友,我們需要docker-maven-plugin 插件。沒什麼複雜的:
<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>
以藍色突出顯示的是我們將目標構建添加到構建的打包階段的位置。可以使用mvn docker:build命令調用它。
dockerDirectory標籤指定 Dockerfile 所在的文件夾。圖像的名稱是使用imageName標籤設置的。
如果項目被打包在一個 jar 文件中,那麼 docker 文件將如下所示:
FROM java:11
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
如果您正在打包 Web 應用程序,那麼您可能需要添加 Tomcat:
FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run
GO TO FULL VERSION