什么是依赖管理
对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。
对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。
Maven的依赖管理方式和传统方式有什么区别
传统方式:从官网手动下载jar包,并拷贝到项目的lib目录下
maven:maven的远程仓库自动连接本地仓库,并通过用户编写的pom.xml文件获取目标jar包的坐标(引入依赖)
什么是项目构建
项目构建是一个从编写源代码到编译、测试、运行、打包、部署的过程
传统项目和maven项目构建的区别
传统项目:
打开Idea编写源代码和配置文件,对源代码进行编译,可以使用Junit 进行单元测试,把项目打成war包,部署到Tomcat服务器中运行。
maven项目:
maven将项目构建过程进行标准化,每个阶段都可以使用一个命令来完成。
清理 --> 编译 --> 测试 --> 报告 --> 打包 --> 部署
使用maven项目构建的好处
可以通过命令完成项目构建。(测试:使用mvn tomcat:run的命令来发布运行项目)
maven对每个构建阶段进行规范,有利于大型团队协作开发。
示例
一:
1、按照约定创建Maven项目目录(总文件夹命名为hello)
- src/main/java —— 存放项目的.java文件
- src/main/resources —— 存放项目资源文件,如spring, mybatis配置文件
- src/test/java —— 存放所有测试.java文件,如JUnit测试类
- src/test/resources —— 测试资源文件
- target —— 项目输出位置
- pom.xml
创建后的样式如图:
2、在项目Hello根目录建立pom.xml并添加内容
<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>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><name>Hello</name><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency> </dependencies>
</project>
3、创建Hello.java文件
在src/main/java/cn/tx/maven目录下新建文件Hello.java并添加内容
注意文件夹名字不要错
package cn.tx.maven;
public class Hello {public String sayHello(String name){return "Hello "+name+"!";}
}
4、创建HelloTest.java文件
在/src/test/java/cn/tx/maven目录下新建测试文件HelloTest.java
注意文件夹名字不要错
package cn.tx.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {@Testpublic void testHello(){Hello hello = new Hello();String results = hello.sayHello("maven");assertEquals("Hello maven!",results); }
}
5、进行maven的项目操作
- 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
- cmd 中继续录入mvn clean命令,然后再次查看根目录变化
- cmd 中录入 mvn clean compile命令, 查看根目录变化
- cmd 中录入 mvn clean test命令,查看根目录变化
- cmd 中录入 mvn clean package命令,查看根目录变化
- cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里
结果如图:
1.
此时根目录下的target文件夹中应会出现
2.
3.
4.文件根目录应暂无变化
5.内容应和4相同
6.可以看到target目录下新添jar包
二:
1、按照约定创建Maven项目目录
创建方式同上,且该项目依赖示例一
HelloFriend
--src
-----main
----------java
----------resources
-----test
---------java
---------resources
--pom.xml
2、在项目HelloFriend根目录建立pom.xml
<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>cn.tx.maven</groupId><artifactId>HelloFriend</artifactId><version>0.0.1-SNAPSHOT</version><name>HelloFriend</name><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency> <dependency><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency> </dependencies>
</project>
3、创建HelloFriend.java文件
在src/main/java/cn/tx/maven目录下新建文件HelloFriend.java
package cn.tx.maven;
import cn.tx.maven.Hello;
public class HelloFriend {public String sayHelloToFriend(String name){Hello hello = new Hello();String str = hello.sayHello(name)+" I am "+this.getMyName();System.out.println(str);return str;}public String getMyName(){return "John";}
}
4、创建HelloFriendTest.java文件
在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java
package cn.tx.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import cn.tx.maven.Hello;
public class HelloFriendTest {@Testpublic void tesHelloFriend(){HelloFriend helloFriend = new HelloFriend();String results = helloFriend.sayHelloToFriend("zhangsan");assertEquals("Hello zhangsan! I am John",results); }
}
5、测试打包HelloFriend项目
在HelloFriend目录下执行命令mvn package
此时会出现系统报错
系统报错提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表示无法找到HelloFriend所依赖的Hello 0.0.1-SNAPSHOT.jar
故此我们需要重新构建第一个项目Hello并安装到数据仓库,在命令行Hello根目录下执行mvn clean install
对Hello项目进行清理并安装后,对HelloFriend项目再次进行打包
可以看到本次打包成功,说明HelloFriend项目已经可以加载Hello项目所打包的jar包