zoukankan      html  css  js  c++  java
  • Maven的使用笔记

    Maven

    〇、Maven的作用

    1. 项目构建;

    (用maven命令可以很简单地去建立、打包、部署一个项目)

    1. 项目管理;

    (Maven是基于项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具)

    1. Jar包的依赖和下载;

    (只要在配置文件中写好相关配置,它会自动地去jar包库里获取jar包)

    一、环境搭建

              1.去官网下载好Maven的文件,是一个压缩包(其中src结尾的是maven的源代码,bin结尾的是maven编译好的文件包,使用时就用bin结尾的);

              2.配置环境变量,将下载好的maven压缩文件包解压,把里面的bin文件夹目录复制,粘贴到环境变量path的开头,注意最后要以分号结尾;

              3.在windows控制台里输入 mvn –version,若要相关版本信息显示,则说明配置成功;

    二、Maven远程库和本地库

              1.当在项目开发过程中,需要引用一些jar包,maven会自动地帮我们获取;

              2.首先maven会在本地库中查找jar包,若找不着,则去远程库中查找,再找不着,它会查看是否有其它特殊的库地址配置信息,再去查找,还是找不着,报错;

              3.配置本地库:

                       默认本地库在C盘->用户名->.m2->repository下,当然我们可以修改本地库的地址;

                       在maven文件包conf文件夹下,setting.xml文件中(称为全局setting.xml),找到<localRepository>标签,在标签内写入我们需要自定义的本地库,并把该setting.xml文件复制一份放在和新本地库同一目录下(称为局域setting.xml),如无特别说明,本文全部setting.xml,都指的是局域setting.xml;

    三、Maven基本项目结构

    四、maven单个项目XML文件配置

    0.该文件用以配置项目的基本信息、jar包的依赖;

    1.该xml文件名为”pom.xml”,与项目的src目录放在同一目录;

    2.pom.xml开头

    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 
    3 <project xmlns=http://maven.apache.org/POM/4.0.0
    4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    6 
    7 其它全部配置….
    8 
    9 </project>

    3.项目基本信息

    一般还加上version标签,会在项目打包后显示在项目包后;

    4.项目依赖(可以理解为引用的其它jar包)

     1 <dependencies>
     2 
     3 <dependency>
     4 
     5            <groupId></groupId>
     6 
     7            <artifactId></artifactId>
     8 
     9            <version></version>
    10 
    11            <scope></scope>
    12 
    13   </dependency>
    14 
    15 </dependencies>

    五、基本命令使用

     https://www.cnblogs.com/wkrbky/p/6352188.html

    0.maven命令是以mvn开头的,要对项目使用命令时,先使用cd命令进入项目根目录,即存放src的目录;

    1.mvn complie  编译源码;

    2.mvn test 运行测试;

    3.mvn package 打包

    4.mvn install 在本地仓库中安装jar(即打包后把jar文件放到本地库中)

    5.mvn clean 清除产生的项目

    六、Eclipse中使用Maven

    0.eclipse中自带了maven,有时候版本会太新或者太旧,我们可以更新它,而后直接使用;若未自带,装插件;

    1.当然也可以指定自己配置好的maven:

      (1)在首选项中,找到Maven->Installations ,点击add,在Installation Home填入我们的maven文件包路径;

      (2)在User Setting里的User Setting填入setting.xml(本地仓库旁边那个)的文件路径;

    2.可以使用Import导入一个maven项目;也可以新建一个maven项目,填写好项目基本信息后会自动生成一个maven的骨架;

    3.运行相关Maven命令时,只要右键项目->运行方式->Maven ..(其中Maven Build...可以收到输入命令组合)

    七、传递性依赖和依赖冲突

    1.当’一个包’引用了’其它两个包’,而’其它两个包’又引用了’其它包’,则’其它包’也会引入’一个包里’;I(a->x  b->y  c->a,b 即c->a,b,x,y )

    2.承上,当’其它两个包’引用的’其它包’同样但版本不同时,’当前包’会根据路径(即几重引用)来选择短的包,若路径相同时,则看哪个包先引用;也可以在’当前包’中直接引用’x3.0’,这样’当前包’引用的就是’x3.0’;

              II(a->x1.0  b->x2.0  c->a,b 即c->a,b,x1.0  因为先引用a)

              III(a->x1.0  b->x2.0  c->a,b  f->c,b 即 f->c,b,x2.0 因为b路径短)

              IV(a->x1.0  b->x2.0  c->a,b  f->c,b,x3.0即 f->c,b,x3.0  因为x3.0路径短)

    3.当然,也可以在’当前包’中排除其它包的引用

              依赖其它包时,在该依赖标签内使用

    1      <exclusions>
    3         <exclusion>
    5              GAV
    7              …..    

              这样引入了其它包,但是却把指定的传递引用去掉了,比如在上面例子II中,我们可以在c依赖a时,写入排除x的标签,这样c会依赖X2.0;

    八、聚合与继承

    http://blog.csdn.net/wanghantong/article/details/36427411

    九、使用Nexus2.x搭建私服

              0.私服作用,起到中心私有的中心仓库作用;原本的中心仓库是在网络上的,下载包时需要联网,速度也一般般;而我们在我们自己的服务器上搭建私服后,该私有仓库就在局域网内,方便共享且速度快;

              1.步骤:

                       (1)下载nexus压缩包nexus-2.14.4-03-bundle.zip,并解压到某一目录下;

                       (2)将该nexus文件包的bin路径添加到path环境变量中;

                       (3)在nexus文件包/bin/jsw/conf/ 下的wrapper.conf文件,修改javaJDK的映射路径,如下图:

                       (4)使用管理员身份打开命令行窗口,使用 nexus install 将nexus安装到windows服务中去,在使用 nexus start 开启私有仓库;

                       (5)在浏览器 输入 http://localhost:8081/nexus  打开私有仓库管理界面;

    十、Nexus私服本地相应配置及使用

    0.相关配置:https://my.oschina.net/heweipo/blog/481047

    1.获取代理仓库的索引,有索引方便我们查找;在该代理仓库设置Download Remote Indexes为true,nexus就会去下载该仓库的索引,在nexus管理界面的Scheduled Tashs中可以看到下载任务;当然也可以直接把索引文件发到Nexussonatype-work exusindexer相应的文件夹中;

    2.从eclipse发布到远程仓库(私服)

              (1)首先要发布的远程仓库得允许我们发布进去,即在nexus中,仓库设置Deployment Policy为Allow Redeploy;

              (2)在项目pom文件中配置发布管理器,使用<distributionManagement>标签,

                       若项目为snapshots版本,则标签内写<snapshotRepository>及相关配置

                       若项目为release版本,则标签内写<repository>及相关配置

                       相关配置指id(随意) name(随意) url(指定要发布到远程仓库)

              (3)发布到远程仓库一般得有权限,即相关账号密码;权限配置在settting.xml中<servers>标签中写一个或多个<server>来配置:

                       <server>

                                 <id>与pom发布管理器中的远程仓库标签ID相对应</id>

                                 <username>用户名</username>

                                 <password>密码</password>

                       </server>

              (4)使用deploy命令发布;

    3.私服中新建仓库,有时候我们有些项目开发需要与其它仓库独立开来,方便管理;于是我们可以新建一个仓库,增加相应的权限、角色、用户,来管理仓库;

              (1)在Nexus管理界面中新建本地仓库,注意要允许上传、对应的相关版本;

              (2)在Nexus管理界面侧边的Privileges中增加权限;

              (3)在Nexus管理界面侧边的Relos中增加一个角色,给该角色添加相应权限;

              (4) 在Nexus管理界面侧边的Users增加一个用户(该用户就是我们发布项目时所用的账号密码),并赋予该用户相应角色;

              (5)像上文一样配置setting中的server,pom中的distributionManagement;

    十一、Maven插件的使用

    1. 在maven使用命令时,是以 插件名:目标 的方式运行的;像compile其实是compiler:compile,只不过compiler有默认前缀为compile,只输入compile就达到了compiler:compile的效果;
    2. 使用一个插件时,需要先在项目的pom中配置(当然,基本install、clean、package…是默认有的),在<build><plugins><plugin>…里写上插件的GAV;
    3. 还可以在plugin标签里加上<excutions><excution><phase>命令 <goals><goal>目标

    该配置意思为,在指定的命令运行后,就运行该插件的指定目标;

       4.当然也可以在父pom中使用<build><pluginManagement><plugins><plugin>GAV中配置一个插件管理器,然后在子pom中继承它,如同依赖包的继承;

       5.更多插件及插件使用方法请往官网查阅http://maven.apache.org/plugins/

  • 相关阅读:
    神代码
    初读《代码大全》
    单词频度统计
    AFO
    bzoj4816: [Sdoi2017]数字表格
    bzoj4006: [JLOI2015]管道连接
    bzoj4774: 修路
    bzoj3209: 花神的数论题
    bzoj4521: [Cqoi2016]手机号码
    COGS2314. [HZOI 2015] Persistable Editor
  • 原文地址:https://www.cnblogs.com/Drajun/p/8678454.html
Copyright © 2011-2022 走看看