天天看點

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

目錄

一、關于maven 

1.1 什麼是maven

1.2 為什麼要使用maven工具建構項目?

1.3 maven會如何進行jar的管理呢?(了解)

1.4 總結

1.5 maven倉庫

二、建立一個新項目并添加maven支援

1.1 建立普通的spring項目

1.2 maven安裝

1.3 普通spring項目加入maven支援

三、在idea使用maven

3.1 包查找和安裝

3.2 添加maven配置檔案

3.2.1 填寫groupId

3.2.2 指定java版本

3.2.3 添加maven檔案配置

附錄一、檢視idea maven的配置

後面的内容将用到maven,為了友善以後的,我加入了maven的支援,maven相關的知識我也會簡單講一下,idea使用maven相對比較簡單的。

一、關于maven 

1.1 什麼是maven

maven是Apache下的一個純java開發的一個開源項目,它是一款能夠抽象建構過程,并且提供依賴管理,中央倉庫,自動下載下傳建構等功能的項目建構工具。

1.2 為什麼要使用maven工具建構項目?

假如我們在開發兩個Java項目,暫時稱之為A,B,這兩個項目中對于一些特殊功能會有互相依賴的情況下,該如何做兩者之間較好的關聯呢?是打算在A,B兩邊共用一套代碼進行關聯嗎?( 這樣的做法會非常難以進行後期的維護 )

如果我們将共用的代碼打包成jar引入項目中使用的話,那麼後期進行代碼更新的話是否又要對所有引入的jar進行更新呢?這樣的做法似乎非常繁瑣。

回想起以前做開發的時候,由于maven技術還沒有出現,使用ssh架構進行開發的時候,所有的jar都需要人為的進行統一導入和維護,導緻後期的維護難度極高。

而maven正是可以解決以上所說的這些問題。

1.3 maven會如何進行jar的管理呢?(了解)

在maven這款工具裡面,有一個特别的概念叫做坐标。這個坐标可不是我們數學裡面說的那個坐标,但是在設定上确實和數學的坐标有一點類似,就是每個坐标都會擁有屬于它自己的唯一标志。在maven裡面也不例外:

拿我們之前在XML講的c3p0為例子,在maven提示就是:

<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.5</version>
</dependency>
           

例如上邊的這段坐标資訊,groupId 通常會用于标志該jar所屬的實際項目,由于通常一個項目可能會劃分為了多個子產品,是以artifactId 則是對于該項目的某個子產品進行了一個明确的标志。version元素更多的是定義了該構件的真實版本。通常我們會稱呼這一段 dependency 為依賴。

對于依賴的讀取還有一個叫做scope的配置

scope的分類 講解
compile

預設情況下就是compile類型

意味着該依賴既要參與編譯又要參與後期的測試等環節

test 表示該依賴僅僅參加和測試有關的工作
provided

可以參與編譯,測試,運作等周期,

但是在打包的時候會進行exclude的相應操作,

其他方面和compile差異不大

runntime 在編譯環節不會參與進來,個人感覺和compile差異不大
system

通常是指不從倉庫讀取依賴,而是通過本地路徑來讀取依賴,

是以常與systemPath标簽結合使用

當然如果對于每個依賴我們都進行相應單獨的version設定,那麼管理起來會有些繁瑣,是以可以使用或者标簽進行統一的管理,例如下方的這兩組案例:

基于parent的依賴管理:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
           

基于properties的依賴管理,在properties裡面我們可以進行整個項目的統一字元集編碼管理或者對于一些依賴jar包統一版本号的管理:

<properties>
    <activemq.version>5.15.9</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.76</appengine-sdk.version>
    <artemis.version>2.6.4</artemis.version>
    <aspectj.version>1.9.4</aspectj.version>
    <assertj.version>3.11.1</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
    <bitronix.version>2.1.4</bitronix.version>
    <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
    <byte-buddy.version>1.9.16</byte-buddy.version>
           

 1.4 總結

說了半天就是說maven就一個項目建構工具,用它統一管理好依賴關系、自動下載下傳相關jar、建構項目等,這樣就是省事不少,讓開發花更多的精力去寫代碼。

1.5 maven倉庫

簡單來說就是存儲jar包的地方,像一個大倉庫那樣,但它比jar包更強大,把依賴關系都幫你理好了。有了倉庫就很友善了,需要有什麼軟體就去maven倉庫查找,官方線上的maven倉庫位址為:https://mvnrepository.com/,打開它要什麼軟體你搜尋就行了。是不是很友善^_^

二、建立一個新項目并添加maven支援

1.1 建立普通的spring項目

為了不影響前面的項目我建立一個新項目叫 spring-annotation2 ,如果不懂得怎麼建立spring項目的,可以參見我的《hualinux spring 4.3:idea 2020建立簡單的spring注解式(手把手教版)》

1.2 maven安裝

網上關于一堆maven的安裝,idea的強大就是自帶maven!不需要你安裝,如果你的idea版本保持是新版本的話,絕大部分已經夠用了,除非的人特别指定要用最新版本的maven

1.3 普通spring項目加入maven支援

為了對方我先給出普通spring項目的界面

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

現在添加maven支援,操作如下:

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

結果如下:

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

先從左邊講起

1.目錄:自動幫你生成相關目錄,友善你管理 

  main:開發的程式放在這裡,

    java目錄:放java源代碼

    resources:放配置檔案,如xml、yml

  test:主要放測試相關

    java目錄:測試用的java代碼,如你使用junit單元測試

pom.xml:maven的配置檔案

到右側,生成多了一個maven視窗,并打開展開了,其中最重要的是Lifecycle生命周期,下面對功能進行解說,如果要運作某個功能直接輕按兩下即可:

名字 說明 備注
clean 就是清除編譯好的包

idea在寫項目的時候添加了一些依賴不生效

是因為有緩存是以要clean一下

validate 驗證工程是否正确,所需的資訊是否完整
compile 編譯源代碼
test  執行單元測試
package 将工程檔案打包為指定的格式,例如JAR,WAR等
verify 檢查package是否有效、符合标準
install 将包安裝至本地倉庫,以讓其它項目依賴。
site 生成項目的站點文檔
deploy 将最終的包複制到遠端的倉庫,以讓其它開發人員與項目共享。

上面藍色使用的頻率相對比較多。

PS:上面這些功能我們一般不用,初學者最多就用一下clean清除一下,idea啊都很好中的緩存,編譯好的包,還有package打成包,其它基本不用。

初學者隻需要學會使用maven配置檔案方式添加jar包即可,就是下面所講的。

三、在idea使用maven

在idea使用maven很簡單的事,隻需要學會兩個就行了

3.1 包查找和安裝

包的查找直接去maven官網即可,要什麼就搜尋什麼就好了

比如用用到c3p0,我直接搜尋c3p0

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

上面的那段配置檔案需要用到,先複制一下 

<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.5</version>
</dependency>
           

3.2 添加maven配置檔案

3.2.1 填寫groupId

spring添加maven支援需要配置一下groupId,groupId就相當于組的概念,一般是寫公司名,域名等,比如我的就是com.hualinux,其它idea幫你填寫好了,不需要你弄

<groupId>com.hualinux</groupId>
    <artifactId>spring-annotation2</artifactId>
    <version>1.0-SNAPSHOT</version>
           

artifactId就相當于組中的一個名字,一般是項目名,一般不會相同,如果相同還有版本号應該是不同的,表示同一個項目不同的版本号。

groupID:定義了項目屬于哪個組,舉個例子,如果你的公司是mycompany,有一個項目為myAPP,那麼groupID就應該是com.mycompany.myAPP

artifactID:定義了目前maven項目在組中的唯一ID,比如:myapp-web等

version:指定了myAPP項目的目前版本,SNAPSHOT意為快照,說明該項目還處于開發中,是不穩定的版本。

name:有的還有一個name标簽,聲明了一個對于使用者更為友好的項目名稱,不是必須的,推薦為每個pom聲明name,以友善資訊交流。

3.2.2 指定java版本

配置了groupId之後,如果不需要添加下載下傳的jar配置,理論上就可以像普通的spring項目一樣使用了。

但是會有一個問題maven預設jdk版本為1.5,可以打開spring-annotation2.iml檔案看一下

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

而我目前的jdk版本為14.0.1,這樣會有什麼問題呢,可以建立一年建立的java看一下

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

發現報錯了,因為spring-annotation2.iml中,LANGUAGE_LEVEL="JDK_1_5"導緻的

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
           

我看一下idea預設等級是多少

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

我使用的是14級,jdk用的是14.0.1,所得還要做一步工作就是指定java版本

處理方法一、設定Modules和java compiler(不推薦發現關閉失效)

在Modules中設定和上面一緻的14(如果你們的是8或11則設定回對應的)

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

在setting設定回14

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

再次運作,正常了

再回看spring-annotation2.iml中LANGUAGE_LEVEL變化

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
ps:這個方法有一個缺點,就是idea一關閉再次打開就失效了,這是因為idea讀取maven發現沒有配置java版本,是以設定回預設的1.5版本了,要用下面方法二才能徹底解決。 

方法二、直接在maven中指定(推薦)

如果按方法一,關閉再打開發現修改沒有生效,那麼就按方法這個方法

直接在maven中使用檔案指定,在最後添加

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>14.0.1</source>
                    <target>14.0.1</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

           
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

添加上面配置之後,idea讀到就會自動修改上面兩處

3.2.3 添加maven檔案配置

剛才maven官網找到的c3p0的maven配置檔案,直接配置在  <dependencies>  </dependencies>标簽中間即可

<dependencies>
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.5</version>
        </dependency>

    </dependencies>
    
</project>
           

所有的maven下載下傳配置規定都放在  <dependencies>  </dependencies>标簽中間,比如c3p0還需要 mchange-commons-java

這樣整個pom.xml變成了

<?xml version="1.0" encoding="UTF-8"?>
<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.hualinux</groupId>
    <artifactId>spring-annotation2</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.mchange/mchange-commons-java -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>mchange-commons-java</artifactId>
            <version>0.2.20</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>14.0.1</source>
                    <target>14.0.1</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
           

添加完上面配置,怎麼讓它自動下載下傳呢,看pom.xml配置界面會有一個小長方塊出來,點一下,如下圖所示:

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

點一下面上那個藍色小箭頭圓圈,發現idea最下方自動去線上maven倉庫查找并下載下傳了,紅色等下變白色了,

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

是不是以後安裝軟體都不用下載下傳啦,直接添加配置檔案即可。

附錄一、檢視idea maven的配置

打開setting

hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置
hualinux spring 4.15:spring添加maven支援 10分鐘學會mavne(新手必看)一、關于maven 二、建立一個新項目并添加maven支援三、在idea使用maven附錄一、檢視idea maven的配置

繼續閱讀