欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Maven概念和基本配置

时间:2023-05-02

1.MAVEN是什么
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,依赖,报告和文档的项目管理工具软件。有了maven创建,生成,打包,管理项目结构变得极其方便

2.MAVEN
2.1配置window环境变量
○ MAVEN运行需要jdk支持
maven3.6–>jdk1.8

○ 配置MAVEN的环境变量(MAVEN_HOME)
MAVEN_HOME(我的电脑–>属性–>高级系统设置–>环境变量)

添加一个变量

○ PATH添加命令文件夹bin

确定变量设置完成
○ 打开cmd输入验证命令
mvn是否生效
>mvn -version


3.MAVEN的一些重要概念和配置
3.1库
maven中所有的运行过程使用的都是资源,例如,命令插件,构建插件,依赖jar包等等都是maven管理的一批文件和jar包.这些资源存放的位置----库.maven中有3种库可以使用

○ 中央库
管理维护了大批的公用资源,由maven的社区团队维护,maven客户端只能用,没有权限加和改(spring,springmvc,apache等jar)
○ 本地库
maven客户端使用远程库/中央库时,会根据本地需求下载资源内容,为了供本机后续使用,将会对下载的资源维护到本地库的文件夹中
○ 远程库(私服)
除了中央库和本地库,不同的公司还可以自行搭建服务器完成自定义的资源的控制,放到私服中,供给公司内部使用(通过权限控制,防止外界获取)

○ 配置本地库ali_repo
需要修改maven根目录conf文件夹下的settings.xml

55行处修改标签localRepository,指定到解压的本地库资源ali_repo;
注意:
1)解压的文件夹结构,双层ali_repo/ali_repo

2)路径中,需要转义,如果是/不需要转义

3.2资源依赖
○ 依赖定位
对依赖的资源,例如jar spring-beans,什么是一小段描述信息.
每一个,每一种资源,都是有基本的三个标签来定义坐标的
:域名倒写,例如,cn.tedu,org.springframework,表示一个实际的大项目
:一个大型项目中的某个模块项目的名称,例如,spring-beans
:资源的版本.
对于spring-beans相关依赖的使用
org.springframework spring-beans 4.3.7.RELEASE

对应本地库资源

groupId–>一个多级文件夹
org.springframework -->org/springframework
artifactId–>一个同名文件夹
spring-beans–>
spring-beans
version–>一个同名文件夹
4.3.7.RELEASE–>
4.3.7.RELEASE

○ 资源的结构

sha1是一种hash散列计算的验证丢包加密字符串

3.3生命周期
maven工程的从无到有到死整个过程称为maven的生命周期.
○ 初始创建
#创建一个普通java项目
mvn archetype:generate
maven调用本地库的资源执行,命令创建一个maven工程
i、选择使用哪种骨架archetype
所谓的骨架,就是一个maven工具生成的工程结构,根据选择,创建不同的工程结构(常用的是quickstart标准的java工程,webapp标准的maven的web工程)

ii、填写groupId(自定义)
iii、模块名称artifactId
iv、版本名称:默认1.0-SNAPSHOT
v、初始化生成的默认包:默认和groupId相同

创建出来的maven项目的结构

src中包含编写工程代码中的所有内容
src/main/java:编写工程代码文件夹
src/main/resources:配置文件存放位置,spring.xml/application.xml,properties
src/test/java:测试代码
src/test/resources:测试代码使用的配置文件(如果没有,默认使用src/main/resources内容)
target:默认创建工程中不存在,一旦项目编译运行,测试打包,所有的内容都会默认输出到这个文件夹
pom.xml:maven工程核心配置文件(project object model),在其中可以管理,使用各种变量,依赖jar包,插件jar包等等.例如:编写spring框架代码,可以在pom文件中按照要求编写标签dependency 管理spring相关资源

○ 项目清空
#项目清理
mvn clean

调用maven命令的插件clean,可以将target目录下的所有输出内容清空.防止上次执行命令在target中生成的旧文件影响更新后的内容

○ 项目的编译
#项目的编译
mvn clean compile

○ 测试代码
#项目的测试代码运行
mvn test
测试过程会输出测试报告,将测试报告放到target保存

○ 项目打包
mvn clean package
maven项目使用打包插件,将项目根据pom中指定的类型
jar/war

○ 项目安装
mvn install
如果只对一个项目进行打包处理,jar包的使用还是要拷贝,导入项目,要将maven工程维护成库的结构,执行安装将maven工程输出到本地库

将打包的jar按照自定义的工程 坐标放到本库库,将pom文件一并存入本地库
○ 项目的发布
分模块开发中,可以使用远程私服保存开发的各种库资源.
不同的模块减少代码重复编写,可以通过连接本公司的远程私服获取其他团队的代码jar包资源

mvn deploy

4.maven的插件使用
pom文件除了管理当前的项目基本信息(一小段描述信息),还可以通过引入插件解决项目生命周期中各种需求.例如,可以通过引入main插件,执行一个jar包
4.1main方法的插件
默认情况下maven工程没有对工程的任何入口做配置,需要引入main方法的插件,否则jar包运行,提示:没有注清单属性

需要在项目的pom文件配置标签

org.apache.maven.pluginsmaven-jar-plugintruecn.tedu.App

4.2源码插件
打包给别人使用资源,一般都会准备源码包,别人开发过程中可以查看你的源代码,需要工程打包时引入插件source

org.apache.maven.pluginsmaven-source-plugin3.0.1truecompilejar

4.3tomcat插件
web应用,打war包(开发工具直接连接tomcat打包部署)扔到tomcat运行.maven中支持tomcat7的插件运行,不需要打包安装,扔到tomcat执行了.

5.eclipse的maven整合
调整eclipse使用环境
5.1环境调试
○ jdk1.8(neon)
window–>preferences–>java–>installation jre
确定是否是jdk环境(jre1.8不行 打包mvn install不支持jre)

○ 如果不想破坏原有的workspace的代码,可以重新选择一个新的workspace
○ navigator和pakcage explorer
调整window–>show view–>快捷选择navigator
navigator:管理的是磁盘目录结构的项目,粘贴多级目录和大量文件时使用navigator不容易出错
调整window–>show view–>other–>package explorer
package explorer:管理项目开发结构,显示当前项目的各种资源,写代码在package explorer中实现

5.2maven安装3.6
○ eclipse绑定使用自定义的maven
调整window–>preferences–>配置目录


在installation中安装maven的home位置

添加选择maven_home文件夹目录

勾选自定义的maven插件,apply应用

调整user-setting,将本地库的配置文件settings.xml配置到eclipse的插件中

5.3eclipse中创建maven项目
在package explorer的空白处,创建第一个maven项目
○ 基本页面

保持默认,eclipse调整
○ 底层调用maven命令创建工程–选择骨架

○ 填写描述信息

○ 项目结构调整

src/main/java
src/test/java
src/main/resources
○ 补充缺少的文件夹

5.4maven build的使用
右键项目,run as mvn test; mvn clean; mvn install;
有很多需要自定义执行的命令,例如tomcat插件启动命令

mvn tomcat7:run
mvn clean package

eclipse提供maven build编辑标签,可以进行自定义的命令生成

6.maven的依赖资源
在开发过程中,需要导入的各种jar包都必须在maven的pom文件中管理维护多个,具有很多特性和配置内容.
6.1标签

当前项目spring-beans要使用,需要找到对应的dependency的依赖内容在pom中

org.springframeworkspring-beans4.3.7.RELEASE


6.2依赖传递性
○ 传递性(springboot简化依赖)
一个依赖的资源可以在编写代码时,依赖其他资源,最终,经过依赖的传递性,maven工程可以引入一个dependency看到多个jar包资源

org.springframework spring-context 4.3.13.RELEASE org.springframework spring-beans


○ 屏蔽传递过来的其他资源
在dependency中编辑子标签exclusions,屏蔽不需要的jar包

6.3依赖的使用范围
依赖的scope的值:
○ compile:编译,从编译开始就要使用该依赖了,运行,构建,打包,安装,发布都会携带这个依赖资源(没有配置scope时,默认)
○ test:测试,只在测试代码运行时生效,打包,安装,部署都不会使用
○ runtime:和compile类似,只有在编译时不生效,运行,构建,打包安装全部使用;例如:jdbc相关可以使用runtime
○ provide:编译和测试有效,最后在运行和打包安装时不使用
例如:servlet-api的相关jar包需要使用provide,因为编译时不会因为tomcat引入增加jar包的导入,反而手动导入时,最终运行时添加,会和tomcat中的包冲突
○ system:与本地相关联,可以实现一些jar包的使用,不在库中,而在其他位置

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。