java基礎-day45-Maven

image.png

一、引言


1.1 項目管理問題

寫項目時,我們需要引用各種 jar 包,尤其是比較大的工程,引用的 jar 包往往有幾十個乃至上百個, 每用到一種 jar 包,都需要手動引入工程目錄,而且經常遇到各種讓人抓狂的 jar 包沖突,版本沖突。

寫完項目我們后面還需要把代碼與各種配置文件、資源整合到一起,定型打包,如果是 web項目,還需要發布到服務器

1.1.1 繁瑣

要為每個項目手動導入所需的jar,需要搜集全部jar

1.1.2 復雜

項目中的jar如果需要版本升級,就需要再重新搜集jar

1.1.3 冗余

相同的jar在不同的項目中保存了多份

1.2 項目管理方案

Java項目需要一個統一的便捷的管理工具:Maven

Maven的好處
Maven 的一個核心特性就是依賴管理。當我們涉及到多模塊的項目(包含成百個模塊或者子項目),管理依賴就變成一項困難的任務。Maven 展示出了它對處理這種情形的高度控制。
傳統的 WEB 項目中,我們必須將工程所依賴的 jar 包復制到工程中,導致了工程的變得很大。maven 工程中不直接將 jar 包導入到工程中,而是通過在 pom.xml 文件中添加所需 jar 包的坐標,這樣就很好的避免了 jar 直接引入進來,在需要用到 jar 包的時候,只要查找 pom.xml 文件,再通過 pom.xml 文件中的坐標,到一個專門用于”存放 jar 包的倉庫”(maven 倉庫)中根據坐標從而找到這些 jar 包,再把這些 jar 包拿去運行。

Maven常應用于大型項目,可以提高開發效率,也就是Maven的分模塊開發,例如:
傳統項目 按層分: dao service web
互聯網項目 按業務分: 用戶管理 訂單管理 支付管理 ...

二、介紹


Maven這個單詞來自于意第緒語(猶太語),意為知識的積累.

Maven是一個基于項目對象模型(POM)的概念的純java開發的開源的項目管理工具。主要用來管理java項目,進行依賴管理(jar包依賴管理)和項目構建(項目編譯、打包、測試、部署)。此外還能分模塊開發,提高開發效率。

項目的一鍵構建
我們的項目,往往都要經歷編譯、測試、運行、打包、安裝 ,部署等一系列過程。

什么是構建?
指的是項目從編譯、測試、運行、打包、安裝 ,部署整個過程都交給 maven 進行管理,這個
過程稱為構建。

一鍵構建
指的是整個構建過程,使用 maven 一個命令可以輕松完成整個工作。

三、Maven安裝


3.1 下載Maven

下載Maven

http://us.mirrors.quenda.co/apache/maven/maven-3/3.5.4/binaries/
image.png

3.2 Maven安裝

3.2.1 解壓

注意: Maven 下載后,將 Maven 解壓到一個沒有中文沒有空格的路徑下,比如 D:\maven 下面

解壓后,有如下目錄:

`bin:含有mvn運行的腳本`
`boot:含有plexus-classworlds類加載器框架,Maven 使用該框架加載自己的類庫。`
`conf:含有settings.xml配置文件`
`lib:含有Maven運行時所需要的java類庫`
3.2.2 環境變量

maven依賴java環境,所以要確保java環境已配置好

使用maven必須配置JDK。

在環境變量 path 配置 MAVEN 安裝目錄的bin目錄(和之前jdk的配置類似)

`MAVEN_HOME = maven的安裝目錄`
`PATH = maven的安裝目錄下的bin目錄`
3.2.3 測試

查看maven版本信息

mvn -v

四、Maven配置


4.1 本地倉庫

maven的conf目錄中有 settings.xml ,是maven的配置文件,做如下配置:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0                http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <!-- 選擇一個磁盤目錄,作為本地倉庫 -->
  <localRepository>D:\Program Files\maven\myrepository</localRepository>

4.2 JDK配置

<profiles> 標簽中 增加 一個 <profile> 標簽,限定maven項目默認的jdk版本.

內容如下:

<profiles>
    <!-- 在已有的profiles標簽中添加profile標簽 -->
    <profile>    
        <id>myjdk</id>    
        <activation>    
            <activeByDefault>true</activeByDefault>    
            <jdk>1.8</jdk>    
        </activation>    
        <properties>    
            <maven.compiler.source>1.8</maven.compiler.source>    
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> 
        </properties>    
    </profile>
</profiles>
<!-- 讓增加的 profile生效 -->
<activeProfiles>
    <activeProfile>myjdk</activeProfile>
</activeProfiles>

五、倉庫


5.1 概念

  • 存儲依賴的地方,體現形式就是本地的一個目錄。

  • 倉庫中不僅存放依賴,而且管理著每個依賴的唯一標識(坐標),Java項目憑坐標獲取依賴。

5.2 倉庫分類

maven 中倉庫的類型:

本地倉庫 :用來存儲從遠程倉庫或中央倉庫下載的插件和 jar 包,項目使用一些插件或 jar 包,
優先從本地倉庫查找
默認本地倉庫位置在 {user.dir}/.m2/repository,{user.dir}表示windows 用戶目錄。
注意:可在 MAVE_HOME/conf/settings.xml 文件中配置本地倉庫位置。

遠程倉庫:如果本地需要插件或者 jar 包,本地倉庫沒有,默認去遠程倉庫下載。
遠程倉庫可以在互聯網內也可以在局域網內。

中央倉庫 :在 maven 軟件中內置一個遠程倉庫地址 http://repo1.maven.org/maven2 ,它是中央倉庫,服務于整個互聯網,它是由 Maven 團隊自己維護,里面存儲了非常全的 jar 包,它包含了世界上大部分流行的開源項目構件。

倉庫分類
image.png

當需要依賴時,會從倉庫中取查找,優先順序為:

本地倉庫 > 私服(如果配置了的話) > 公共倉庫(如果配置了的話) > 中央倉庫

5.3 本地倉庫

即在settings.xml 中配置的目錄。

使用過了的依賴都會自動存儲在本地倉庫中,后續可以復用。

5.4 遠程倉庫

5.4.1 中央倉庫
  • Maven 中央倉庫是由 Maven 社區提供的倉庫,不用任何配置,maven中內置了中央倉庫的地址。

    其中包含了絕大多數流行的開源Java構件。

  • https://mvnrepository.com/ 可以搜索需要的依賴的相關信息(倉庫搜索服務)

    http://repo.maven.apache.org/maven2/ 中央倉庫地址

5.4.2 公共倉庫【重點
<!--setting.xml中添加如下配置-->
<mirrors>
    <mirror>
        <id>aliyun</id>  
        <!-- 中心倉庫的 mirror(鏡像) -->
        <mirrorOf>central</mirrorOf>    
        <name>Nexus aliyun</name>
        <!-- aliyun倉庫地址 以后所有要指向中心倉庫的請求,都會指向aliyun倉庫-->
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
</mirrors>
5.4.3 私服【了解】

公司范圍內共享的倉庫,不對外開放。

可以通過 Nexus來創建、管理一個私服。

六、Idea-Maven


6.1 在Idea中關聯Maven

在idea中關聯本地安裝的maven,后續就可以通過idea使用maven來管理項目

Maven 工程的目錄結構

作為一個 maven 工程,它的 src目錄和 pom.xml 是必備的。
進入 src目錄后,我們發現它里面的目錄結構如下:

src/main/java —— 存放項目的.java 文件
src/main/resources —— 存放項目資源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有單元測試.java 文件,如 JUnit 測試類
src/test/resources —— 測試資源文件
target —— 項目輸出位置,編譯后的class 文件會輸出到此目錄
pom.xml——maven 項目核心配置文件

注意:如果是普通的 java 項目,那么就沒有webapp 目錄。

在全局設置中,關聯Maven
image.png

6.2 創建Maven項目

6.2.1 新建項目

新建項目,要選擇 Maven 選項

如下選項
image.png
6.2.2 指定項目名
設置項目名
image.png
6.2.3 項目位置
項目位置如下
image.png
6.2.4 項目結構
  • src/main/java 存放源代碼,建包,放項目中代碼(service,dao,User,....)

  • src/main/resources 書寫配置文件,項目中的配置文件(jdbc.properties)

  • src/test/java 書寫測試代碼,項目中測試案例代碼

  • src/test/resources 書寫測試案例相關配置文件

  • 目根/pom.xml (project object model) maven項目核心文件,其中定義項目構建方式,聲明依賴等

  • 注意:項目中的建包,建類,執行,都和普通項目無差異

項目結構如下:
image.png
6.2.5 pom.xml文件

pom 基本配置
pom.xml 是 Maven 項目的核心配置文件,位于每個工程的根目錄,基本配置如下

<project > :文件的根節點 .
<modelversion > : pom.xml 使用的對象模型版本
<groupId > :項目名稱,一般寫項目的域名
<artifactId > :模塊名稱,子項目名或模塊名稱
<version > :產品的版本號 .
<packaging > :打包類型,一般有 jar、war、pom 等
<name > :項目的顯示名,常用于 Maven 生成的文檔。
<description > :項目描述,常用于 Maven 生成的文檔
<dependencies> :項目依賴構件配置,配置項目依賴構件的坐標
<build> :項目構建配置,配置編譯、運行插件等。
例如:配置tomcat7插件和jdk1.8
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8888</port>
        </configuration>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <target>1.8</target>
            <source>1.8</source>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
    </plugins>
  </build>
在 pom.xml 文件中鎖定 jar 包版本配置

<!-- 統一管理jar包版本 -->
<properties>
    <mybatis.version>3.4.5</mybatis.version>
</properties>

<!-- 鎖定jar包版本(可省略) -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 項目依賴jar包 -->
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>
</dependencies>
6.2.6 項目類型

根據項目類型,在pom.xml中做出對應配置,添加配置:<packaging>war/jar</packaging>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.qf</groupId>
    <artifactId>test01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 打包方式,如果是java項目則用 jar,
         如果是web項目則用war -->
    <!--<packaging>war</packaging>-->
    <packaging>jar</packaging>
</project>

6.3 導入依賴jar

建好項目后,需要導入需要的jar,要通過坐標

  • 每個構件都有自己的坐標 = groupId + artifactId + version = 項目標識 + 項目名 + 版本號

  • 在maven項目中只需要配置坐標,maven便會自動加載對應依賴。刪除坐標則會移除依賴

6.3.1 查找依賴

依賴查找服務:https://mvnrepository.com/ ,獲得依賴的坐標,在maven項目中導入。

查找依賴坐標
image.png
image.png
6.3.2 導入依賴

在項目的pom文件中,增加依賴

在項目的pom.xml文件添加依賴
image.png
6.3.3 同步依賴

引入坐標后,同步依賴,確認導入。

窗口右下角彈窗,刷新依賴,使新加的配置被maven加載
image.png

6.4 創建web項目

6.4.1 打包方式

pom.xml中設置 <packaging>war</packaging>

web項目打包方式為:war
image.png
6.4.2 web依賴

導入 JSPServletJSTL依賴,使項目具有web編譯環境

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
    ...
    <packaging>war</packaging>

    <!-- 導入JSP 和 Servlet 和 JSTL 依賴 -->
    <dependencies>
        <dependency>
            <!-- jstl 支持 -->
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <!-- servlet編譯環境 -->
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <!-- jsp編譯環境 -->
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
6.4.3 webapp目錄

按照maven規范,新建web項目特有目錄

新建如下目錄和文件
image.png
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 這是一個空白的web.xml文件模板 -->
</web-app>
6.4.4 定義Servlet和Jsp
照常定義即可
image.png

6.5 部署web項目

6.5.1 新增Tomcat
新增Tomcat
image.png
image.png
image.png
6.5.2 部署web項目
部署web項目
image.png
image.png
image.png
6.5.3 啟動Tomcat
啟動Tomcat
image.png
image.png

6.6 依賴生命周期

6.6.1 概念

Jar包生效的時間段,即Jar的生命周期

依賴范圍
在 pom.xml 文件中添加坐標時需要指定依賴范圍(scope標簽),依賴范圍包括:

compile:編譯范圍,指 A在編譯時依賴 B,此范圍為默認依賴范圍。編譯范圍的依賴會用在
編譯、測試、運行,由于運行時需要所以編譯范圍的依賴會被打包。

provided:provided 依賴只有在當 JDK 或者一個容器已提供該依賴之后才使用, provided 依
賴在編譯和測試時需要,在運行時不需要,比如:servlet api 被 tomcat 容器提供。

runtime:runtime 依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如:jdbc
的驅動包。由于運行時需要所以 runtime 范圍的依賴會被打包。

test:test 范圍依賴 在編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用,
比如:junit。由于運行時不需要所以test范圍依賴不會被打包。

system:system 范圍依賴與 provided 類似,但是你必須顯式的提供一個對于本地系統中 JAR
文件的路徑,需要指定 systemPath 磁盤路徑,system依賴不推薦使用。

6.6.2 使用方式

項目中導入的依賴可以做生命周期的管理

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
    <!-- 生命周期 -->
    <scope>compile</scope>
</dependency>
<dependency>
    <!-- servlet編譯環境 -->
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <!-- 生命周期 -->
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <!-- 生命周期 -->
    <scope>test</scope>
</dependency>
6.6.3 生命周期詳解
標識 周期
compile 缺省值,適用于所有階段(測試運行,編譯,運行,打包)
provided 類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet-api.jar;適用于(測試運行,編譯)階段
runtime 只在運行時使用,如 mysql的驅動jar,適用于(運行,測試運行)階段
test 只在測試時使用,適用于(編譯,測試運行)階段,如 junit.jar
system Maven不會在倉庫中查找對應依賴,在本地磁盤目錄中查找;適用于(編譯,測試運行,運行)階段

七、Maven指令


7.1 命令行

通過Idea打開 cmd,然后執行Maven指令

Maven的常用命令

clean 清理編譯的文件(清理target文件夾)

compile 編譯了主目錄的文件(只編譯項目中src\main目錄下的代碼)

test 編譯并運行了測試目錄的文件(編譯運行src\test目錄下的代碼)

package 打包(將war包,該war的命名規范取決于pom.xml文件中的命名)

install 就是把項目發布到本地倉庫

deploy 上傳到私服

tomcat:run 一鍵啟動

打開 cmd,并定位到項目目錄
image.png
執行maven指令
image.png

7.2 Maven面板

Idea中有Maven面板,其中可以快速執行Maven指令

maven面板
image.png

八、私服


8.1 概念

  • 私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。

  • 有了私服之后,當 Maven 需要下載依賴時,直接請求私服,私服上存在則下載到本地倉庫;否則,私服請求外部的遠程倉庫,將構件下載到私服,再提供給本地倉庫下載。

  • 私服可以解決在企業做開發時每次需要的jar包都要在中心倉庫下載,且每次下載完只能被自己使用,不能被其他開發人員使用

  • 所謂私服就是一個服務器,但是不是本地層面的,是公司層面的,公司中所有的開發人員都在使用同一個私服

8.2 架構

無私服 有私服
image.png
image.png

我們可以使用專門的 Maven 倉庫管理軟件來搭建私服,比如:Apache ArchivaArtifactorySonatype Nexus。這里我們使用 Sonatype Nexus

8.3 Nexus安裝【了解】

8.3.1 下載
8.3.2 安裝

下載nexus-2.x-bundle.zip,解壓即可

nexus安裝目錄
image.png

8.4 啟動【了解】

  • 解壓后在bin目錄中執行:
    • nexus install 在系統中安裝nexus服務
    • nexus uninstall 卸載nexus服務
    • nexus start 啟動服務
    • nexus stop 停止服務

8.5 Nexus登錄【了解】

訪問私服:http://localhost:8081/nexus/

登錄Nexus才可以使用Nexus管理功能
image.png

8.6 倉庫列表【了解】

倉庫類型 描述
group 包含多個倉庫,通過group庫的地址可以從包含的多個倉庫中查找構件
hosted 私服 服務器本地的倉庫,其中存儲諸多構件
proxy 代理倉庫,其會關聯一個遠程倉庫, 比如中央倉庫,aliyun倉庫,向該倉庫查找構件時,如果沒有會從其關聯的倉庫中下載
倉庫名 描述
Releases 存放項目的穩定發布版本,一個模塊做完后如果需要共享給他人,可以上傳到私服的該庫
Snapshots 對應不穩定的發布版本
3rd party 存放中央倉庫沒有的 ,如ojdbc.jar,可以上傳到私服的該庫中
倉庫列表
image.png

8.7 Maven配置私服 【重點

在maven中配置私服,使得maven可以從私服上獲取構件

8.7.1 倉庫組

而此時就有問題,私服中有很多倉庫,每個倉庫都有自己的url,則項目中配置哪個倉庫呢 ?

私服中有一個倉庫組,組中包含多個倉庫,可以指定倉庫組的url,即可從多個倉庫中獲取構件

倉庫組 注意:proxy的倉庫排序在最后
image.png
8.7.2 Maven關聯私服

配置settings.xml,設置私服地址、認證等信息

<servers>
    <server> 
        <id>nexus-public</id> <!-- nexus的認證id -->
        <username>admin</username> <!--nexus中的用戶名密碼-->
        <password>admin123</password> 
    </server>
</servers>
<profiles>
    <profile> 
        <id>nexus</id> 
        <repositories> 
            <repository> 
                <id>nexus-public</id> <!--nexus認證id 【此處的repository的id要和 <server>的id保持一致】-->
                <!--name隨便-->
                <name>Nexus Release Snapshot Repository</name> 
                <!--地址是nexus中倉庫組對應的地址-->
                <url>http://localhost:8081/nexus/content/groups/public/</url>
                <releases><enabled>true</enabled></releases> 
                <snapshots><enabled>true</enabled></snapshots> 
            </repository>
        </repositories> 
        <pluginRepositories> <!--插件倉庫地址,各節點的含義和上面是一樣的-->
            <pluginRepository> 
                <id>nexus-public</id> <!--nexus認證id 【此處的repository的id要和 <server>的id保持一致】-->
                <!--地址是nexus中倉庫組對應的地址-->
                <url>http://localhost:8081/nexus/content/groups/public/</url>
                <releases><enabled>true</enabled></releases> 
                <snapshots><enabled>true</enabled></snapshots> 
            </pluginRepository> 
        </pluginRepositories> 
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>yourjdk</activeProfile>
    <!-- 使私服配置生效 -->
    <activeProfile>nexus</activeProfile>
</activeProfiles>

至此,Maven項目中需要依賴時,Maven會從私服中下載

8.8 Maven項目部署到私服

  • 執行 :mvn deploy 即可將項目部署到私服對應的倉庫中,此時項目中的打包方式多為jar

  • 但需要提前在項目的pom.xml中配置部署私服倉庫位置,如下:

    ...
    <dependencies>
        .....
    </dependencies>
    
    <!-- 在項目的pom.xml中 配置私服的倉庫地址,可以將項目打jar包部署到私服 -->
    <distributionManagement>
        <repository>
            <id>nexus-public</id> <!-- nexus認證id -->
            <url>http://localhost:8081/nexus/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>nexus-public</id> <!-- nexus認證id -->
            <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>
</project>

注意:如上的 repository的 id 依然是要和settings.xml中配置的server中的id 一致,才能通過私服的認證

九、Maven分模塊開發


Maven 分模塊開發

1.先創建父工程,pom.xml文件中,打包方式為pom
2.右鍵父工程創建子工程,dao工程和service工程打包方式為jar,web工程打包方式為war
3.每完成一個模塊后需要install,如果在IDEA中install時報錯(JDK版本過低),需要在父工程的pom.xml文件中配置如下代碼:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <groupId>org.apache.maven.plugins</groupId>
            <configuration>
                <!--<encoding-->
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、Maven私服搭建 1.Maven常用命令: (1)install: 本地安裝, 包含編譯,打包,安裝到本地倉...
    開源oo柒閱讀 410評論 0 0
  • 簡介 概述 Maven 是一個項目管理和整合工具 Maven 為開發者提供了一套完整的構建生命周期框架 Maven...
    閩越布衣閱讀 4,326評論 6 39
  • 本文主要講解maven入門基礎部分,關于更深層次的知識請閱讀我的另一篇文章:項目管理Maven篇(2)- Sona...
    君哥聊編程閱讀 2,752評論 1 3
  • 前段時間給公司說了自己想倒騰下服務端技術,上個版本簡單些了三個接口。這個版本沒想到幸福來得這么快,直接叫我上手服務...
    紙簡書生閱讀 572評論 0 3
  • 1. 定義 Maven 是一個項目管理工具,它包含了一個項目對象模型 (POM:Project Object Mo...
    魔笛使者閱讀 1,223評論 0 0