CodeGym /Java Course /Module 3 a ɛto so abien /有用的 Maven 插件

有用的 Maven 插件

Module 3 a ɛto so abien
等級 2 , 課堂 5
開放

你在 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
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION