Maven學習(一):maven基礎
一、安裝(前提是java安裝成功)
1、下載,並解壓到固定資料夾中:如 D:\MyJAR\Use_JAR\apache-maven-3.2.3\bin
2、配置系統環境變數:新增M2_HOME : D:\MyJAR\Use_JAR\apache-maven-3.2.3 即解壓的檔案路徑
3、配置path,把 M2_HOME 放入path變數值中或者也可以直接把地址放在 path 中,如:
4、驗證安裝成功:輸入 mvn -v 命令,會顯示maven的安裝路徑,使用的java版本及路徑 和計算機的一些資訊。
二、maven簡單使用
(一)概覽:
1、maven構建專案有必須要遵循的規定:建立如下目錄:E:\maven\maven-01,在路徑下新建 src 目錄與 pom.xml檔案。主程式必須放在src/main/java目錄下,測試程式放在src/test/java目錄下。pom.xml 與 src同級別。
(二)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.sam</groupId> <artifactId>maven-01</artifactId><!--模組--> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>maven-base</name> </project>
1、groupId:定義了專案屬於哪個組。這個組往往和專案所在的組織或公司存在關聯,如果你的公司是mycom,有一個專案為myapp,那麼groupId就應該是com.mycom.myapp。
2、artifactId:定義了當前Maven專案在組中唯一的ID,我們為這個Hello World專案定義artifactId為hello-world。
3、version:指定了Hello World專案當前的版本。SNAPSHOT意為快照,說明該專案還處於開發中,是不穩定的版本。
4、綜合理解:如 spring-framework 為一個groupId,而其中 spring-core 和 spring-aop為分別的兩個 artifactId 。
(三)主程式碼
1、在 src/main/java 新建 com/sam/HelloMaven.java ,一般來說,程式碼的包名與 groupId 保持一致。如下:
package com.sam;
public class HelloMaven {
public String sayHello(String name) {
return "hello:" + name ;
}
}
2、使用maven自動編譯:在 E:\maven\maven-01目錄下 在輸入命令 mvn compile 自動編譯。
3、過程中 maven 會去中央倉庫下載需要的jar包,編譯成功以後,會在 E:\maven\maven-01 目錄下自動新建 target/ 目錄,編譯好的class檔案會在 E:\maven\maven-01\target\classes\com\sam\HelloMaven.class 。
(四)測試程式碼
1、在 E:\maven\maven-01\src\test\java\com\sammy 中新建 TestHelloMaven.java 測試類。
package com.sammy;
import com.sam.*;
import org.junit.*;
import static org.junit.Assert.*;
public class TestHelloMaven {
@Test
public void testSayHello() {
HelloMaven hm = new HelloMaven();
String str = hm.sayHello("maven");
assertEquals(str,"hello:maven");
}
}
2、需要用到 junit ,使用 maven 不需要去匯入jar 包,只需要修改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.sam.maven</groupId>
<artifactId>maven_ch01</artifactId><!--模組-->
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven-base</name>
<!--依賴的jar包-->
<dependencies>
<dependency>
<groupId>junit</groupId><!--座標-->
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>
3、編譯測試:在 E:\maven\maven-01目錄下 在輸入命令 mvn test 會自動下載依賴的jar包,並進行單元測試。
4、測試類的 class 檔案與測試生成的測試報告都在 target 目錄下。
(五)依賴Jar 包的使用
1、用到的一些命令:
1)mvn clean :會清空 /target 資料夾及其內容。
2)、mvn package: 命令可以把專案打成 jar 包,並儲存在 /target 資料夾內(先編譯、再測試、後打包)。如下生成的 ja r包為 maven-01-0.0.1-SNAPSHOT.jar :
3)mvn install 安裝,即把自己打好的包,放入本地倉庫,共別人使用。
3、現在可以再新建一個專案 maven-02,讓它依賴於剛剛生成的 maven-01-0.0.1-SNAPSHOT.jar 。
1)新建工程並新建主程式碼和pom.xml檔案: E:\maven\maven-02\src\main\java\com\sam\maven\Hello.java 類
package com.sam.maven;
import com.sam.HelloMaven;
public class Hello {
public String say(String name) {
HelloMaven hm = new HelloMaven();
return hm.sayHello(name);
}
}
<?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.sam</groupId>
<artifactId>maven-02</artifactId><!--模組-->
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven-base</name>
<!--依賴的jar包-->
<dependencies>
<dependency>
<groupId>junit</groupId><!--座標-->
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test<scope>
</dependency>
</dependencies>
</project>
2、由於依賴於HelleoMaven.java 類,需要修改pom檔案,加入依賴的jar 包。
<?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.sam</groupId>
<artifactId>maven-02</artifactId><!--模組-->
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven-base</name>
<!--依賴的jar包-->
<dependencies>
<dependency>
<groupId>junit</groupId><!--座標-->
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!--加入依賴的HelloMaven Jar 包
這邊的配置就是HelloMaven那個工程的pom配置
-->
<dependency>
<groupId>com.sam</groupId>
<artifactId>maven-01</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
3、利用 mvn install 把依賴的工程放入本地倉庫(D:\MyMavenRepository\repository\com\sam\maven-01\0.0.1-SNAPSHOT\maven-01-0.0.1-SNAPSHOT.jar)。(預設在個人資料夾下的.m2資料夾下)
4、在 E:\maven\maven-02 下 mvn compile 編譯即可通過。
三、maven 的一些命令:
mvn -v 測試maven是否安裝成功
mvn compile 自動編譯,存放在/target檔案中
mvn test 測試
mvn clean 清空
mvn package 先編譯,後測試,然後打jar包
mvn install 安裝,即把自己打好的包,放入本地倉庫,共別人使用。
mvn clean install 一起使用
mvn archetype: genetate 搭建骨架
四、maven 的倉庫
(一)中央倉庫
1、maven中央倉庫(有很多中央倉庫):地址之一為:https://repo.maven.apache.org/maven2
2、配置的地址:D:\MyJAR\Use_JAR\apache-maven-3.2.3\lib\maven-model-builder-3.2.3.jar\org\apache\maven\model\pom-4.0.0.xml。
<span style="font-family:Arial;font-size:18px;"> <repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories></span>
3、中央工廠的地址:https://repo.maven.apache.org/maven2
(二)本地倉庫
1、預設的本地maven倉庫(在conf/settings.xml檔案中):預設為/我的文件/.m2/repository中。
2、自定義本地倉庫
1)、修改conf/setings.xml檔案中 <localRepository> 元素
2)、複製一份配置放入自己的目標資料夾中D:\MyMavenRepository\repository\下
五、maven工程結構
1、底層:
1)src資料夾:
2)target資料夾
3)pom.xml:
2、src:
1)main: /java/(package....):java程式碼
2)test: /java/(package....):測試程式碼
3、target:
1)classes:class檔案
2)依賴包:
4、maven 骨架
1)命令:mvn archetype: genetate 搭建骨架,需要選擇版本,依次填寫 groupId等資訊, 即建立如上的工程結構。
2)也可以這麼一起使用: mvn archetype:create
-DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp