Maven项目管理工具

                                   Maven项目管理工具

一、maven介绍

1、介绍:Maven是一个跨平台的项目管理和构建工具,主要用于基于Java平台的项目构建,依赖管理。

2、图示:

3、特点:

a、管理项目jar包

b、解决项目jar包依赖冲突

c、远程仓库(中央仓库),本地仓库,私服仓库

d、rpc远程调用,dubbo(接口项目发布到私服)

二、Maven的安装和配置

1、JDK环境:必须是JDK1.6以上的版本。

2、下载地址:http://maven.apache.org/download.cgi官网上下载最新版本的maven

3、设定path路径:把下载下来的maven解压缩,然后有一个bin文件夹,这是一个bin的文件夹的目录F:\work\course\maven\maven\bin 把该目录追加到环境变量的path中。

4、检查是否成功:

5、maven下载、安装和设置博客推荐:

https://blog.csdn.net/cs4380/article/details/79158268

6、Maven的配置:

7、Maven的约定:

8、本地仓库、私服仓库配置

打开自己电脑的Maven默认仓库地址一般是C:/Users(或者是用户)/用户账号/.m2(例如:我的电脑地址C:\Users\Zz\.m2)文件夹下有一个settings.xml配置文件,可以通过修改改配置文件的信息修改Maven的本地仓库和地址和私服仓库地址。

本地指定仓库路径:<localRepository>你要修改的仓库地址(F:/work/course/maven/mavenRepository/)</localRepository>

本地的仓库:

私服仓库:

直接连接互联网

如果不想连接私服,可以直接连接互联网。只需要把连接私服的所有的路径去掉即可。

 

三、新建Maven项目和普通java项目强转Maven项目

1、Eclipse新建Maven项目:

2、原Java项目装换成Maven项目:(将原项目的src文件夹删除)

注意:强转成Maven项目后,Maven项目的约定还是要自己手动创建,如下图二所示

                        图一

                        图二

2、Maven常见命令(在maven项目的根目录下进行操作):

mvn compile:编译项目,在项目中生成target文件夹

我们可以清除的看到编译生成的文件夹信息如下所示:

mvn clean:清除项目编译(针对mvn compile/package/clean package命令)生成的target文件夹

mvn package、mvn clean package:编译并打包项目

经过编译打包我们可以清楚的看出mvn compile命令和mvn package命令区别:

mvn install:将项目发布到本地仓库,可以方便的被其他项目引用

四、Mavenjar包依赖(本地依赖和远程仓库下载依赖)针对于两个项目,其中一个项目需要使用另一个项目的类

1、本地依赖:

(1)、传统项目jar包引入依赖:

步骤:将要引入的项目通过mvn clean package/package打包,然后将jar包放在另一个项目的根目录lib文件夹下add build path即可。

(2)、Maven本地仓库引入依赖:

步骤:将要引入的项目通过mvn install发布到本地的Maven仓库,在需要引入的项目的pom.xml文件中将要引入的项目<groupId>、<artifactId>、<version>进行dependency即可。

2、远程仓库依赖:

Maven中央仓库地址:http://mvnrepository.com/,我们可以在这里找到自己需要的jar包,然后选择适合自己项目的版本复制dependency依赖信息即可。

3、Mavenjar包错误问题解析:

问题:

解决方法:

注意事项:如果Maven项目加载本地仓库jar包出现问题多次Maven update没有效果,把本地下载的jar包文件夹删除重新下载重启编辑器试试。

案例:我在整合springBoot和dubbo的时候,一次性复制了很多的pom依赖,结果项目出现红色感叹号,maven update不起作用,后来复制一个一个<dependency></dependency>找到出问题的jar包,删除重新下载改依赖。

jar missing问题:

 

 

五、使用Maven建立(聚合)多模块功能

1、新建simpo-parent父项目,并且在pom.xml文件中导入servletjar包依赖

 

2、新建simpo-service项目,将simpo-parent作为父工程引入

新建service类:

package com.simpo.service;

public class SimpoService {
	
	public String returnName(String id) {
		if("1".equals(id)) {
			return "yinyuyou";
		}else {
			return "nimeide";
		}
	}

}

3、新建web项目simpo-web,将simpo-parent作为父工程引入,并且dependency simpo-service。

新建一个controllerservlet容器类:

@WebServlet("/index")//不要忘记前面的/会报错的
public class DemoController extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String id = req.getParameter("id");
		SimpoService simpoService = new SimpoService();//直接引入simpo-service的类
		String result = simpoService.returnName(id);
		req.setAttribute("user", result);
		req.getRequestDispatcher("index.jsp").forward(req, resp);
	}

}

总结:该聚合项目,simpo-service并没有执行mvn install命令,但是simpo-web能够进行引入改项目的SimpoService 类。

六、Mavenjar包引入版本冲突问题

介绍:Web工程依赖两个不同的,maven项目,依赖同一个artifactId但是版本不同,这时候就会产生mavenjar依赖冲突问题。

解决冲突:

<dependencies>
		<dependency>
			<groupId>com.itmayiedu</groupId>
			<artifactId>itmayiedu-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>

		</dependency>
		<dependency>
			<groupId>com.itmayiedu</groupId>
			<artifactId>itmayiedu-entity</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<exclusions>
				<exclusion>
					<artifactId>commons-logging</artifactId>
					<groupId>commons-logging</groupId>
				</exclusion>
			</exclusions>
		</dependency>

	</dependencies>

七、Maven打包原理:

Maven中央存储库:

当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库  http://search.maven.org/  查找下载。在Maven中,当你声明的库不存在于本地存储库中,也没有不存在于Maven中心储存库,该过程将停止并将错误消息输出到 Maven 控制台。

二、添加远程仓库:

默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。

现在,Maven的依赖库查询顺序更改为:

在 Maven 本地资源库中搜索,如果没有找到,进入下一步,否则退出。

在 Maven 中央存储库搜索,如果没有找到,进入下一步,否则退出。

在Maven的远程存储库搜索,如果没有找到,提示错误信息,否则退出。

讲师画图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值