1. 程式人生 > >Maven學習(一):maven基礎

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