maven入门

Posted 魔杰Lee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven入门相关的知识,希望对你有一定的参考价值。

目录:

一:打包

二:项目目录

三:生命周期

四:jar冲突

五:仓库与私服搭建

六:定制项目模型

 

maven的主要功能就是打包,管理包。

 

一:打包:

原始的javac命令打jar包,有了maven之后打jar包更加方便。

mvn package

mvn install

mvn deploy

三者的区别:

package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库;
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库;
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

 

二:项目目录:

Maven固定的目录结构:

src/main/java
src/main/resource

pom.xml

 

 pom.xml文件结构常用节点:

Jar包管理:<dependencies></dependencies>

模块(子项目)管理:<module></module>

插件配置:<build></build>

全局变量配置:<properties></properties>

 

 

三:生命周期

1clean --> 2build --> 3site

clean: pre-clean   clean   post-clean 

build:  process-resources,compile,test-compile,test,package,process-classes,install,deploy

site:site,post-site,site-deploy

 

三个生命周期完全独立,maven只定义生命周期,具体的执行交由plugin插件来完成,

运行任何一个阶段,其前面的所有阶段都会被运行,如:mvn install,会default引一阶段运行到install阶段。

 

插件plugin是绑定到生命周期,承担实际功能的组件。mvn运行时,自动关联插件来运行

 

SNAPSHOT:快照版本,随时更新,不稳定;
RELEASE:发布(正式)版本,所有非-SNAPSHOT结尾的版本号,是稳定的版本号。一旦发布永远不变。有的仓库会配置成redeploy覆盖

 

四:jar冲突

原因:

依赖传递导致的jar冲突,

依赖的使用原则:1路径最短优先,2同路径长度下,谁先声明谁优先

 

解决:指定排除错误依赖,exclusion标签

 

 

 

五:仓库与私服搭建

maven仓库,就是放置所有的jar文件的位置

本地仓库:

本地环境安装maven后,会生成一个本地仓库位置(.m2/respository/ ),可在maven的配置文件中更改此位置(建议更改)

 

远程仓库和中央仓库:

当maven要查找构件时,发现本地仓库中没有,则需要从远程仓库下载构件到本地仓库

 

中央仓库:

当我们不配置远程仓库时,maven会默认一个仓库,即maven官方的仓库,称之中央仓库

 

maven依赖的搜索顺序:

步骤 1 - 在本地仓库中搜索,找到则成功。

步骤 2 - 在远程仓库中搜索,找到则下载。

步骤 3 - 如果没有设置远程仓库,Maven 默认去中央仓库搜索,找到则下载。

步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

 

使用nexus搭建私服:

搭建私服的原因:

1.例如基金公司或者银行是不提供外网给项目组人员的,因此不能访问到Maven的远程仓库,但是希望项目Jar包可以通过Maven进行管理,此时就可以在局域网里找一台有外网权限的机器搭建Nexus私服,然后开发人员通过私服可以下载到远程仓库的Jar包。

2.如果公司有一些公共的代码需要打成jar包提供给其他的项目使用,这些jar包也想交给Maven管理,这时候我们就可以把这些公共的jar包上传到私服中,然后团队成员就可以在项目中通过Maven的方式添加改公共jar包的依赖。

nexus的仓库类型:

proxy:代理远程仓库,缓存由此方式下载的jar

hosted(宿主):内部项目的发布仓库

group(门面,仓库组):仓库的组合,对外提供服务的路径

配置私服:

配置此url有两种方式:

1、全局配置方式

在maven的setting文件里,通过mirror指定私服地址,此方式对全局生效

2、局部配置方式
在本项目的pom里,指定repository配置,此方式只对本项目生效

六,自定义项目模型(archetype典范)

通过Maven原型maven-archetype-archetype来创建自定义Archetype的方法。此插件是maven官方的项目结构,不一定符合我们的企业本义
下面,我们自已定义一种项目结构模式,并将其打成标准包,供企业整体员工后续使用。

步骤:

1-生成archetype项目

在选定的项目根目录下,执行命令:mvn archetype:create-from-project

 

2-打包archetype插件并安装

此archetype项目也是一个maven工程,一样有构建/安装/发布等动作
进入项目根目录,执行命令:mvn clean install

 

3-IDE工具加载archetype,新建工程

add archetype

以上是关于maven入门的主要内容,如果未能解决你的问题,请参考以下文章

Maven入门指南

第3章:Maven使用入门/3.3 编写测试代码

maven入门

第3章:Maven使用入门/3.2 编写源代码

Maven入门教程

Mybaits 快速入门代码实例(maven代码版)