ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Maven工程总结笔记

2020-01-28 21:07:57  阅读:186  来源: 互联网

标签:总结 maven 依赖 工程 项目 jar 笔记 Maven 模块


1、maven的生命周期方法:

complie、test、package、install等。
每个命令的含义:complie是编译的意思。就是在target目录下生成.class文件。package是打包的意思,生成的东西在target目录下。install是安装jar包到本地的仓库中。

2、maven工程要导入jar包的坐标,就必须要解决jar包的冲突。

1)解决jar包的冲突一:

第一声明优先原则: 哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。先声明的jar包的坐标下的依赖包,可以优先进入项目中。

3、maven导入jar包的一些概念

直接依赖: 项目中直接导入的jar包,就是该项目的直接依赖包。
传递依赖: 项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。

2)解决jar包的冲突二:

路径近者优先原则: 直接依赖路径比传递依赖路径近,那么最终进入项目的jar包会是路径近的直接依赖包。

3)解决jar包冲突的三:

(推介使用第三种方式),直接排除法(排除这个包下的依赖包)。当我们要排除某个jar包下的依赖包,在配置excluions标签的时候,内部可以不写版本号,因为此时依赖包下使用的版本和默认和本jar包一样。

4、maven工程是可以分父子依赖关系的。

凡是依赖别的项目后,拿到的别的项目的依赖包,都属于传递依赖。
比如:当前A项目被B项目依赖,那么我们A项目中所有的jar包都会传递到B项目中去,B项目中得到的这些jar包都属于传递依赖。B项目开发者如果再在B项目中导入一套ssm框架的jar包,对于B项目是直接依赖,那么直接依赖的jar包就会把我们A项目中传递过去的jar包覆盖掉。为了防止以上问题的出现,我们可以把A项目中主要的jar包坐标锁住,那么其他依赖该项目的项目即便是有同名的jar包直接依赖也无法覆盖。
解决办法:

// properties文件方便以后修改,好找,如果有多个文件,不会太乱。
 <properties>
	<spring.verson>3.23<spring.version>// 这里相当于键值对。下面通过el表达式引入进去。
</properties>

// 这个是锁定jar包版本,被其他依赖后他就不能被覆盖啦。
<deperencyManagement>
	<dependency>
		<groupId>com.itheima<groupId>
		<artifactId>Demo<artifactId>
		<version>${spring.version}</version>
	</dependency>
</deperencyManagement>
// 上下这两个都需要写,上面的只是起到锁定的作用,下面才是真正的引入。
<dependencyies>
	<dependency>
	...
	</dependency>
</dependencies>
// xml文件能写入什么标签,完全取决于头上面的约束。

5、maven使用骨架创建的项目目录结构是不完整的,需要我们手动补齐。跳过骨架创建的项目目录结构是完整的。

工程和模块的区别: 这里指的是maven工程。

  • 工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码,代码完整就可以说是一个完整的项目,和此项目是工程和模块没有关系。
  • 工程天生只能使用内部资源,工程天生是独立的。后天可以和其他工程或模块建立关联关系。模块天生不是独立的,模块天生是属于父工程的,模块是一旦创建,所有父工程的资源都可以继承下来使用。
  • 平级之间的引用叫依赖,依赖不是先天的,依赖是需要后天建立的。

1、aop是面向切面编程:切面就是切入点和通知的组合。

一般我们自己写的类使用注解的形式来表达。系统提供的类写到配置文件当中。

6、maven启动工程的三种方式

  1. 直接通过maven的Tomcat插件启动父工程。(记住是父工程)
  2. 如果启动模块中的web模块,必须先安装install其他依赖的模块,才可以正常启动,通常直接install安装父工程下面的模块也会跟着自动安装。
  3. 通过外部Tomcat服务器启动。web模块不需要启动。
weixin_43981131 发布了5 篇原创文章 · 获赞 0 · 访问量 85 私信 关注

标签:总结,maven,依赖,工程,项目,jar,笔记,Maven,模块
来源: https://blog.csdn.net/weixin_43981131/article/details/104101963

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有