一、安装(前提是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