Maven基础
Maven入门程序
第一个Maven项目Hello
<1>新建Maven项目
- a.新建Maven项目
![288d3b8f9da4ce2396e5d0777a1367b9.png](https://i-blog.csdnimg.cn/blog_migrate/e0afa9e1ba2d15f9ee80b7ea098fab2d.png)
- b.选择Maven骨架
![f789fec053c45f099c148c3866ef5584.png](https://i-blog.csdnimg.cn/blog_migrate/0b217e8200b33d2e46d4ed2e2367cef6.png)
![a1dec4ce332688b3ec62befef5f6eeba.png](https://i-blog.csdnimg.cn/blog_migrate/bd6e34212cd523a8884837dab7dae0a9.png)
- c.查看建立完成的目录结构和指定库文件的变化
第一次加载Maven项目需要等待一段时间,等待相关内容加载完成再进行操作(如果长时间无反应,右键工程properties选择maven-->update project更新maven工程,等待完成即可)
![19699715bb426901a26e9e0e3268cfbd.png](https://i-blog.csdnimg.cn/blog_migrate/308c8a52864d648c289156d8eeac404a.png)
Maven的目录结构每个目录都有自己的功能 也就是遵循Maven约定
遵从Maven约定
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置
pom.xml —— maven依赖项配置(jar包配置)
<2>配置pom.xml
修改jre为自定义的jdk版本,与此同时,通过配置pom.xml可以实现jar包的导入、移除,可以更换Junit的jar包查看变化
通过在maven官网查找相关jar包,直接复制相关代码进行配置即可
http://mvnrepository.com/
![81af602a382e083ce92e20dfa6f039e8.png](https://i-blog.csdnimg.cn/blog_migrate/5693b5c157da6ef772463d35e677ec56.jpeg)
此处替换原有的junit-3.8.1.jar进行测试,查找最新的junit相关jar包进行替换
![2bed7270726f34e39f0dfa3ea9512aa9.png](https://i-blog.csdnimg.cn/blog_migrate/6181d77604446d8d119282d5b0cd0891.png)
![169b571aa5b6b794f03090d9f251d7cd.png](https://i-blog.csdnimg.cn/blog_migrate/26f5de04a5fe610103f92962b573f2cc.png)
修改后:
![e0b7be0fb08cc881f4e74af37d167ebd.png](https://i-blog.csdnimg.cn/blog_migrate/c492e9807dc9cca0e71505efd7fbed2d.png)
<3>编码测试
Hello.java:
public
HelloTest.java:
import static
程序执行测试:右键选择要测试的方法名,点击run as --> junit test进行测试
![9799430ddf4d73f23b7674c139bdfb5c.png](https://i-blog.csdnimg.cn/blog_migrate/00fa9de27a077865825aabfef44d0734.png)
<4>执行程序
选中pom.xml 右键 --> run as --> maven build,依次执行以下命令 查看根据目录的变化
![ce8cb4e1d8a7414700445382563c5cb2.png](https://i-blog.csdnimg.cn/blog_migrate/f2a04103fb1aa86df4670ce038b47889.png)
a.执行compile命令
查看根目录变化 编译程序为.class文件
![be5d3b5b9b34366dedc34f9461fe9422.png](https://i-blog.csdnimg.cn/blog_migrate/731c1c5fcb5bd585a12341d91d592bbe.png)
![1f383dd173ff261b810833b7aa4f8a6f.png](https://i-blog.csdnimg.cn/blog_migrate/277ce492769e4a3d54840d1f5a79438c.png)
s
b.执行clean 命令
清理target文件目录的所有的内容
![9291a7e358e7bd5d27a155df9119c4e3.png](https://i-blog.csdnimg.cn/blog_migrate/e7057ac25a07297b80eec128907fe2c3.png)
![cdacf7d283685068faa2daf7728f70b8.png](https://i-blog.csdnimg.cn/blog_migrate/b36780f28b00469035e48ef6cb48158e.png)
c.执行clean compile
先执行清理,然后执行编译
![5c76f945f8e5b7881e8ecde698fa8d2f.png](https://i-blog.csdnimg.cn/blog_migrate/ffa9aef08477e5afda3712a01fe4e5c6.png)
d.执行clean test 执行测试程序
执行清理,然后执行测试,如果程序正常 则会提示执行时间等信息
![c0b86934c0319befbdaa144207fca87e.png](https://i-blog.csdnimg.cn/blog_migrate/f67a01cd68b0906a50e015df897f87f2.png)
如果执行失败,则考虑是maven工程加载的时候缺失一些必要的文件,处理方式:通过另外提供的较完整的respository进行替换原有的内容,重新更新maven工程,等待更新完成再次进行测试即可(由于网络原因可能会导致部分文件在加载的时候没能加载完全,从而导致在使用的时候报错,因此在导入文件的时候要耐心等待,如果加载出错需要将原有的相关目录完全删除,否则再次导入还是无法使用)
此外如果在执行clean compile指令显示错误(无法匹配jre环境,但在cmd窗口下可以执行),则有可能是eclipse中的jdk配置是选择了jre,需要将其修改至相应的jdk即可
e.执行clean package 打包数据
把程序打成jar包,可以供其他项目使用,生成的保存目录参考控制台输出,此处为
E:workspaceJavaEEProjectsHellotarget
![e619bf3b1fa8f5271b9196e148114cb4.png](https://i-blog.csdnimg.cn/blog_migrate/7e0fb75fe4007c2235197c92f420f429.png)
![bbb7d4caa4f8336b1eedf56a9a30f75a.png](https://i-blog.csdnimg.cn/blog_migrate/5987106dce49ef67093731e2df530323.png)
第二个Maven项目HelloFriend
<1>创建Maven工程
创建maven工程参考上述,创建完成需要配置相关属性pom.xml、jre版本
<2>如何引用其他工程的内容?
在第二个Maven工程HelloFriend引用Hello工程的内容
a.将指定工程部署到仓库下(Hello工程执行install执行)
执行install命令即可部署,把当前工程部署到到仓库之下,此处仓库路径
C:UsersAdministrator.m2repository
![e3ee17e2f9952677d097c50e7d67d035.png](https://i-blog.csdnimg.cn/blog_migrate/4c2848bf407c6cec7e8cf7b6568e26aa.png)
部署完成可以在相应的目录查看到相关信息
![818197a765ee0e8b9d3d2d820836c67b.png](https://i-blog.csdnimg.cn/blog_migrate/ab57bf2a2ab55f5d12d63634c8641fe4.png)
![c731c0aa52c4bdb85b1450598eb65d85.png](https://i-blog.csdnimg.cn/blog_migrate/3ee0e356127d8a6b496201dbaf275854.png)
b.配置pom.xml,将Hello工程引入
在pom.xml中进行配置,配置格式:
<dependency>
相关参数均可以在Hello工程下的pom.xml文件中查阅,配置如下所示
<dependency>
完成配置点击保存,等待加载完成,刷新工程可以依赖项引入了Hello工程,完成引入则可正常使用Hello工程相关内容
![62a0b0ccb15485a93e55b1b5d42f2b26.png](https://i-blog.csdnimg.cn/blog_migrate/30baf7f2decc9bf6c1b77100c863a340.png)
pom.xml依赖配置:
<dependencies>
c.在HelloFriend中引用Hello工程
HelloFriend.java:
public
HelloFriendTest.java:
public
测试结果正常显示:
![ff534dea3efcf94e0517fce3e137a450.png](https://i-blog.csdnimg.cn/blog_migrate/d4ae30697599c32f812027a966b884ed.png)
将HelloFriend工程install到指定仓库供下一步操作
第三个Maven项目MakeFriend
a.pom.xml配置
根据上述步骤完成Maven工程创建,在pom.xml中配置相关属性即可(此处引入HelloFriend工程,修改pom.xml相关内容和jre)
<dependencies>
查看工程maven依赖变化,自动将Hello、HelloFriend工程一并导入
![17529d05569421115fafc63f2fab6476.png](https://i-blog.csdnimg.cn/blog_migrate/4ceebc1043ee84b788d20f8e5fd56712.png)
b.程序测试
MakeFriend.java:
public
MakeFriendTest.java:
public
测试结果正常显示
![2e6be6edeed7d5f8db55b8a03efcdfce.png](https://i-blog.csdnimg.cn/blog_migrate/c29bcecf4dd3384f598f0ccc2f0aa62b.png)
间接依赖和直接依赖
a.在上述内容的基础上,在Hello项目中的pom.xml 添加如下代码,查看Maven Dependencise
<dependency>
![e2cd7e2e7a4d40066657c048d300b0ea.png](https://i-blog.csdnimg.cn/blog_migrate/a126b4d93d23b6128abc16e886ac72b7.png)
b.在HelloFriend项目中添加如下代码,查看相应的变化
<dependency>
![5cf473308b9a47f73fdd8f6f7d6a7b45.png](https://i-blog.csdnimg.cn/blog_migrate/7b401f11eab127593aa1e784b426733a.png)
c.在MakeFriend中查看maven的变化
![31a76ed1f0328d6cd095304dca7f456a.png](https://i-blog.csdnimg.cn/blog_migrate/4e3031f14be5302e4ff681654e52355b.png)
根据结果分析显示在HelloFriend没有引入1.2.17的log4j时,MakeFriend中引用的是1.2.12版本的log4j,在HelloFriend引入1.2.17的log4j后,MakeFriend中的log4j版本相应发生变化,其遵循原则为路径最近者优先
![ec684b64066e3a3f511bc6889ef3fea9.png](https://i-blog.csdnimg.cn/blog_migrate/823bc17192e472a5af9a59bfeb2544a4.png)