Maven【笔记】
Maven
- 提及开发目录和编译目录。两者其实是不一样的,就好比你写web项目时为什么一个html在webContent下,而我在路径上却不需要加/webContent呢?因为编译以后,这个文件就不存在了。所以运行之后都是要看编译目录的。
- 提及项目名与上下文路径,项目名与上下文路径并不是非要相同,在Tomcat中,web访问是要看上下文路径(也就是你创建在webapp目录下的那个文件夹名),而ROOT中呢,是不需要任何前缀就可以直接访问的
maven:构建与依赖
- POM
- 约定的目录结构
- 坐标
- 依赖管理
- 仓库管理
- 生命周期
- 插件和目标
- 继承
- 聚合(一键操作所有项目)
target:complie后会生成target,里面就有编译好的内容
- 为什么maven能够自动构建呢?我想因为我们都是按照约定的目录结构
- 比如当你执行mvn install,实则他是包含了编译等内容,并不会仅仅执行install。这就关系到生命周期。
- 其实有个疑惑?编译了放在本地又怎么样?Tomcat将jar编译后就能直接在网页上浏览,而maven编译后呢?
- 坐标:就是那三样,什么groupId artifactId version
- 依赖范围:provided(部署不能用)/test(只能用于test)/compile(为默认,三样都能用,main目录下/test目录下/部署到tomcat服务器上会放在其lib目录下)
- 传递依赖:其实每个pom文件也有坐标,传递依赖的话只要你将其他pom文件的坐标加到你这儿就形成了传递
- jar包冲突:①最短路径优先,当A->B->C,会优先选B,②声明优先
- 依赖排除:传递依赖的dependence里面加个Exclusion
- 统一版本管理:上面加一个properties标签,里面例如写
<spring version></spring version>后面的版本都可以用${spring version}来记录 - 生命周期:clean/default/site
- 继承:
<parent>父工程pom文件的那三样<relativePath>../parent/pom.xml</relativePath></parent>,注意:父工程要选pom类型,而不是jar或者war
继承父工程后可以把自己的groupId和version去掉,因为直接引用父工程的了
此时父类的要变为<dependencyManagement><dependencies>... - 聚合:
在父类中<modules><module>../Hello</module><module>../A</module></modules>
这样对父类进行操作,其他聚合的类也会跟着操作,一键操作就是聚合
知识离开了脑子,就只是一堆文字

浙公网安备 33010602011771号