该心得全部来源于菜鸟教程-maven以及尚硅谷Java视频教程_Maven的学习过程笔记。
Maven:一个纯Java开发的开源项目,总的来说就是一个项目管理工具,可以对Java项目进行构建、依赖管理。利用一个中央信息片段能管理一个项目的构建、报告和文档等步骤。
Maven的功能:可以帮助开发者完成构建、文档生成、报告、依赖、SCMS、发布、分发、邮件列表等工作。
Maven的特点:
Maven的使用配置:java环境配置、maven的环境配置,网上搜索一下就知道如何配置maven的环境变量了。配置完成之后在doc命令(windows下)下输入:mvn -v,如果成功则会显示maven版号信息。
POM(Project Object Model,项目构建模型)
Maven POM:是maven工程的基本工作单元,是一个xml文件,包含了项目的基本信息,用于描述如何创建构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
POM中可以指定以下配置:项目依赖、插件、执行目标、项目构建profile、项目版本、项目开发者列表、相关邮件列表信息。
笔记
1、查看Maven环境是否配置完成:mvn -v ;
2、更新Maven的本地库
修改{Home}\conf\setting.xml,更新localRepository到自己本地的目录
创建完新的项目之后,所有相关文件将被存储在你的Maven本地仓库
3、从Maven模版创建一个项目
mvn archetype:generate -DgroupId=com.huangyueze -DartifactId=MavenTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
4、让一个普通的Maven成为一个eclipse项目,使用终端进入到项目中
mvn eclipse:eclipse
常用Maven的命令
[1] mvn clean:清理
[2] mvn complie :编译主程序
[3] mvn test -complie:编译测试程序
[4] mvn test:执行测试
[5] mvn package:打包
关于联网问题
1.Maven的核心程序仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成。而插件本身并不包含在Maven的核心程序中。
2.当我们执行的Maven命令需要用到某些插件的时,Maven核心程序会首先到本地仓库中查找。
3.本地仓库的默认位置:[系统中当前用户的家目录]\.m2\repository
C:\Users\Administrator\.m2\repository
4. Maven核心程序如果在本地仓库中找不到需要的插件,那么他会自动连接外网,到中央仓库下载。
5.如果此时无法连接外网,则构建失败
6.修改默认本地仓库的为止可以让Maven核心程序到我们实现准备好的目录下查找插件
【1】、找到Maven解压目录\conf\setting.xml
【2】、在setting.xml文件中倒找localRepository标签
【3】、将<localRepository>/path/to/local/repo</localRepository>从注视中取出,设置为制定好的Maven仓库目录。比如我这里设置为了:E:\Maven\apache-maven-3.6.1\repository
依赖
【1】Maven解析依赖信息回到本地仓库中查找被依赖的jar包。
对于我们自己开发的Maven工程,使用install命令安装后就可以进入仓库。
【2】依赖的范围
【1】compile范围依赖
>对主程序是否有效:有效
>对测试程序是否有效:有效
>是否参与打包:参与
【2】test范围依赖
>对主程序是否有效:无效
>对测试程序是否有效:有效,就是为测试程序设计的
>是否参与打包:不参与
>典型例子:junit-3.8.8.jar的依赖范围就是test
【3】provided范围依赖
>对主程序是否有效:有效
> 对测试程序是否有效:有效
>是否参与打包:不参与
>是否参与部署:不参与部署
>典型例子:servlet-api.jar
【3】依赖高级
依赖的传递性:
1、好处:可以传递的依赖不必再每个模块工程中都重复声明,在“最下面”的工程中依赖一次即可 。
2、注意:非compile范围的依赖不能传递。所以在各个工程模块中,如果有需要就得重复生命依赖。
依赖的排除(需要注意排除的场合,需要排除的情景也比较少):
1、依赖排除的设置方式,在依赖中添加<exclusion></exclusion>节点;
依赖的原则:
1、作用:解决模块工程之间的jar包冲突问题;
2、情景设定1:验证路径最短者优先原则;
3、情景设定2:验证路径相同时先声明者优先;
Properties标签
properties标签配合自定义标签生命数据的配置并不只是只能用于声明依赖的版本号。凡事需要统一声明后再引用的场合都可以使用。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<com.hyz.test>4.1.1.RELEASE</com.hyz.test> 我自定义的
</properties>
继承
在eclipse中使用maven
1、Maven插件:Eclipse内置了一个maven插件
2、Maven插件的设置
【1】installations:指定Maven核心程序的位置。不建议使用插件自带的maven程序,而应该使用我们自己的maven。
【2】user settings:指定conf/settings.xml的位置,从而找到本地仓库的位置。
聚合(一键安装各个模块的工程)
步骤:在一个“总的聚合工程中”中配置各个参与聚合的模块
<modules>
<module>../MavenTest</module>
......
</modules>
网友评论