maven learn note (01)

# Maven learning note (0)
 
 
吐槽博客與的markdown筆記體驗

[TOC]

## 0, maven 存在的意義

1.一、假如你正在Eclipse下開發兩個Java項目,姑且把它們稱爲A、B,其中A項目中的一些功能依賴於B項目中的某些類,那麼如何維繫這種依賴關係的呢?

很簡單,這不就是跟咱們以前寫程序時同樣嗎,須要用哪一個項目中的哪些類,也就是用別人寫好了的功能代碼,導入jar包便可。因此這裏也如此,能夠將B項目打成jar包,而後在A項目的Library下導入B的jar文件,這樣,A項目就能夠調用B項目中的某些類了。

這樣作幾種缺陷,若是在開發過程當中,發現B中的bug,則必須將B項目修改好,並從新將B打包並對A項目進行重編譯操做,在完成A項目的開發後,爲了保證A的正常運行,就須要依賴B(就像在使用某個jar包時必須依賴另一個jar同樣),兩種解決方案,第一種,選擇將B打包入A中,第二種,將B也發佈出去,等別人須要用A時,告訴開發者,想要用A就必須在導入Bjar包。兩個都很麻煩,前者可能形成資源的浪費(好比,開發者可能正在開發依賴B的其它項目,B已經存儲到本地了,在導入A的jar包的話,就有了兩個B的jar),後者是咱們常遇到的,找各類jar包,很是麻煩(有了maven就不同了)
 
1.二、咱們開發一個項目,或者作一個小demo,好比用SSH框架,那麼咱們就必須將SSH框架所用的幾十個依賴的jar包依次找出來並手動導入,超級繁瑣。 
    
上面兩個問題的描述,其實都屬於項目與項目之間依賴的問題[A項目使用SSH的全部jar,就說A項目依賴SSH],人爲手動的去解決,很繁瑣,也不方便,因此使用maven來幫咱們管理

so

**Maven是基於項目對象模型(POM project object model),能夠經過一小段描述信息(配置)來管理項目的構建,報告和文檔的軟件項目管理工具**

## 1, maven 的安裝

**official website:http://maven.apache.org/**

![下載](img/maven_download.png)

 


1. 安裝後設置環境變量 %M2_HOME% 爲剛剛的文件目錄
2. 添加環境變量路徑,剛剛安裝目錄下的bin文件夾, 在cmd下mvn -v查看測試安裝是否成功

1 ```dos
2 C:\Users\cwl>mvn -v
3 Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
4 Maven home: F:\maven_learn\lib\apache-maven-3.6.0-bin\apache-maven-3.6.0\bin\..
5 Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_191\jre
6 Default locale: zh_CN, platform encoding: GBK
7 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
8 ```

 


## 2, maven 初步

[官方教程](http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)

### maven 目錄結構

    my-app
    |-- pom.xml
    `-- src
        |-- main
        |   `-- java
        |       `-- com
        |           `-- mycompany
        |               `-- app
        |                   `-- App.java
        `-- test
            `-- java
                `-- com
                    `-- mycompany
                        `-- app
                            `-- AppTest.java

### maven 的 pom.xml

核心配置文件,在該目錄下的 pom.xml, 在boot的jar裏面

`plexus-classworlds-2.5.2.jar\META-INF\maven\org.codehaus.plexus\plexus-classworlds`

默認的pom.xml東西比較多,官方上有一個簡單的模板
 
 1 ```xml
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4   <modelVersion>4.0.0</modelVersion>
 5  
 6   <groupId>com.mycompany.app</groupId>
 7   <artifactId>my-app</artifactId>
 8   <version>1.0-SNAPSHOT</version>
 9  
10   <properties>
11     <maven.compiler.source>1.7</maven.compiler.source>
12     <maven.compiler.target>1.7</maven.compiler.target>
13   </properties>
14  
15   <dependencies>
16     <dependency>
17       <groupId>junit</groupId>  //包名
18       <artifactId>junit</artifactId>    //項目名
19       <version>4.12</version>
20       <scope>test</scope>
21     </dependency>
22   </dependencies>
23 </project>
24 ```

 

 

### maven 倉庫

maven會在本地`C:\Users\cwl\.m2` 用戶目錄下建立一個本地倉庫,存一些jar包

能夠在在`$MAVEN_HOME/conf/setting.xml`裏面修改,咱們能夠在裏面找到以下說明

另外還有第三方倉庫,中央倉庫等概念,這裏先不提。
1 ```xml
2   <!-- localRepository
3    | The path to the local repository maven will use to store artifacts.
4    |
5    | Default: ${user.home}/.m2/repository
6   <localRepository>/path/to/local/repo</localRepository>
7   -->
8 ```

 

 
### 下面是一個 maven 運行一個基礎程序的例子

首先創建以下目錄的文件夾

![maven_dir](img/maven_dir.png)
 

 


 
 
 1 ```xml
 2 // pom.xml
 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5   <modelVersion>4.0.0</modelVersion>
 6  
 7   <groupId>com.imooc.maven01</groupId>
 8   <artifactId>maven01-model</artifactId>
 9   <version>0.0.1-SNAPSHOT</version>
10  
11   <dependencies>
12     <dependency>
13         <groupId>junit</groupId>
14         <artifactId>junit</artifactId>
15         <version>4.12</version>
16     </dependency>
17   </dependencies>
18 </project>
19 ```

 


文件夾結構要與包結構一致, 注意pom.xml和src目錄同級

pom.xml與src在同一目錄下,而後在src, pom.xml 目錄下打開cmd

輸入 `mvn compile` 執行編譯命令

第一次會下載不少依賴的包, 要等一等

![build_success](img/build_success.png)
 

 


輸入 `mvn test` 會執行測試用例

發現編譯的錯誤會在test的時候輸出, 少了分號

![test_error](img/test_error.png)
 

 


修改測試成功後

![test_success](img/test_success.png)
 
 

 


輸入 `mvn package` 會打包一個jar包

和src目錄同級別的jar包
相關文章
相關標籤/搜索