1.Maven的安装和配置
  从Maven的官网上下载Maven的安装包,http://maven.apache.org/download.html
  将其解压在你想安放的目录下。
  然后配置Maven的环境变量(M2_HOME),比如说我的Maven安装在D:\Maven\apache-maven-3.0.3下,那么M2_HOME=D:\Maven\apache-maven-3.0.3。如果想在任何目录下使用maven命令,就将M2_HOME目录下的bin目录加入到加入到系统环境变量Path中。
  使用mvn -v 就可以看到当前maven的版本信息,表明安装成功。
  注:安装maven前必须确定自己的电脑已经安装了JDK,并且java环境已经配置好了。
2.设置HTTP代理
  有些时候处于安全考虑,自己的主机不能直接访问外网的中央仓库,而是指定一个经过安全认证的代理服务器,通过该代理服务器来访问中央仓库。
  如何配置HTTP代理?
  首先在安装了Maven后,M2_HOME/conf目录下放置了Maven的配置信息(setting.xml),我们可以通过修改该文件来设置代理。但是,如果直接在该文件上修改,那么影响将是全局的,而且不利于以后的升级。所以我们将该文件复制一份,放到~/.m2下,那么该文件将会覆盖M2_HOME/conf下的setting.xml,而且只对当前用户有效。这样每个用户都可以根据自己的喜好和需求来配置适合自己的Maven。具体如何在setting.xml中配置HTTP代理,代码入下:
  <proxies>
       <proxy>
       <id>my-proxy</id>
       <active>true</active>
       <protocol>http</protocol>
       <host>...</host>
       <port>...</port>
       <useranme>...</useranme>
       <password>...</password>
       <nonProxyHosts>...</nonProxyHosts>
       </proxy>
  </proxies>
  <active>的值为true,表示该代理被激活,<protocol>表示代理协议,当然是http了,<host>表示代理的主机地址,<port>代表代理主机的端口,<useranme>,<password>
  用来进行安全认证, <nonProxyHosts>代表哪些主机不需要进行代理。
  注:当在做项目使用Maven的时候,必定要下载很多jar包和插件放在本地的仓库中,安装好Mavaen后,本地仓库会有一个默认的存放位置。当然也可以通过配置setting.xml文件来改变。比如我自己的配置,将仓库放在D:/dev/repository下:
  <localRepository>D:/dev/repository</localRepository>
3.pom文件编写的一些细节
  ①在编写pom文件的时候,相同的版本号或其他一些字符串会重复出现,那么我们可以将重复的字符串抽取出来,进行定义,然后在需要使用的地方进行引用。如下:
  <properties>
       <springframework.version>2.5.6</springframework.version>
  </properties>
  .....
  <dependency>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>${springframework.version}</version>
  </dependency>
  ....
4.聊聊Maven的仓库机制
  我们不必每做一个项目就将其所依赖的jar包和插件都引入到项目中,我们可以定义依赖,指定在仓库中的位置。仓库包含了很多的插件和jar包,分为本地仓库和远程仓库,当定义一个依赖的时候,系统会首先根据坐标在本地仓库中寻找jar包,如果本地仓库中有所需要的jar包和插件,那么就不会去访问远程仓库,如果没有就会去访问远程仓库,并且把相应的jar包和插件下载到本地仓库中去。
  注:安装好Maven以后,如果不执行任何Maven命令,本地仓库目录是不存在的,当用户输入第一条Maven命令之后,Maven才会创建本地仓库。
  Maven安装好后,会有一个默认的远程仓库,即中央仓库,配置信息写在Maven的超级POM文件中。当然除了中央仓库,还可以配置其他远程仓库。即当在中央仓库中找不到jar包的时候回去其他远程仓库中寻找。配置代码如下:
  <repositories>  
      <repository>  
        <id>public</id>  
        <releases>  
          <enabled>true</enabled>  
        </releases>  
        <snapshots>  
          <enabled>true</enabled>  
        </snapshots>  
      </repository>
      </repositories> 
 
 在组织内部,有一个Maven仓库服务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名和密码。为了能让Maven访问仓库内容,就需要配置认证信息。配置代码如下:
 <server>
      <id>releases</id>
      <username>deployment</username>
      <password>deployment123</password>
  </server>
  仓库的镜像
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何可以从Y获得的构件,都能从它的镜像中获取。
<mirrors>
   <mirror>
      <id>mirrorId</id>
      <mirrorOf>central</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
    </mirror>
</mirrors>
上述代码配置了一个中央仓库的镜像仓库mirrorId。其他配置项与一个普通仓库是相同的。
5.生命周期和插件
  在有关Maven的日常应用中,命令行的输入往往就对用了生命周期,如mvn package就表示执行生命周期阶段package。
  Maven有三套生命周期,clean,default,site.
  三套生命周期是相互独立的,用户可以仅仅调用生命周期的某一个阶段,而不会对其他周期产生影响。

每个生命周期包含一些阶段,并且这些阶段是有顺序的,后面的阶段依赖前面的阶段。以clean生命周期为例,它有三个阶段,pre-clean,clean,post-clean。当用户调用pre-clean的时候,只有pre-clean阶段执行,当用户调用clean的时候,那么就会执行
pre-clean,clean这两个阶段。

从命令行执行maven任务的主要方式就是调用maven的生命周期阶段:
$mvn clean:该命令调用clean生命周期的clean阶段。实际指向的阶段为clean生命周期的pre-clean和clean阶段。
插件绑定:
Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。例如项目编译这一项任务,它对应了default生命周期的compile阶段,而maven-compiler-plugin这一插件的compile目标能完成该任务。因此,将他们绑定,就能实现项目编译的目的。
内置绑定:为了能让用户几乎不用任何配置就能构建maven项目,maven在核心为一些主要的生命周期绑定了很多插件和目标,当用户通过命令行调用生命周期阶段的时候,对应的插件目标就会执行相应的任务。
自定义绑定:
<build>
<plugins>
<plugin>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<!--executions标签内配置插件可在哪些阶段运行-->
<executions>
<!--一个execution标签代表一个具体的阶段-->
<execution>
<id></id>
<!--phase标签指明具体阶段的名称,如果没有填写这个标签,那么目标就会绑定到默认的生命周期阶段-->
<phase></phase>
<goals>
<!--绑定在这个阶段的具体的插件目标-->
<goal></goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
当然还可以在插件的配置中添加<configuration>,用来配置插件的配置信息。(可以全局配置插件,也可以局部配置插件,就是根据configuration书写的位置来判断)
如果多个目标绑定到同一个生命周期阶段,那么多个目标执行的先后顺序将是它们声明的先后顺序。

Maven一些总结的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  3. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  4. 安装eclipse的maven插件

    我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...

  5. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  6. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  7. spring maven pom.xml设置

    spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. maven依赖查询地址

    http://search.maven.org/#search%7Cga%7C1%7C

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

随机推荐

  1. k8s基于RBAC的访问控制(用户授权)

    kubernetes的API Server常用的授权插件有:   Node.ABAC.RBAC.Webhook我们重点说一下RBAC的访问控制逻辑RBAC(Role base access contr ...

  2. 01.VUE学习一

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. Codeforces Round #460 (Div. 2)-C. Seat Arrangements

    C. Seat Arrangements time limit per test1 second memory limit per test256 megabytes Problem Descript ...

  4. Linux文件类型 扩展名的作用

    链接类型文件 查找显示管道文件 普通文件类型 file 查看文件的类型 data文件类型 创建块字和符设备 mknod 1,.tar .tar.gz .tgz .zip tar.bz 表示压缩文件,创 ...

  5. Mysql存储过程中的事务回滚

    create procedure test(in a int) BEGIN ; ;-- 异常时设置为1 START TRANSACTION; ,); ,); THEN ROLLBACK; ELSE C ...

  6. Neural Network

    逻辑回归用神经网络节点的方式表示 前面已经介绍过逻辑回归的模型,样本为(x,y) 其中y的值为1或0,假设x有2个特征,则对应关系如下图所示.  实际情况是需要求需要三个参数,因此输入层需要添加一个 ...

  7. JMeter非GUI界面运行

    JMeter是一款可以用于做接口可以用于作压力性能的应用程序,该程序是纯Java语音开发,所有对环境支持都比较好. JMeter可以运行模式有两种,一种是UI图形,另一种是命令模式运行也就是非GUI模 ...

  8. [译]从列表或字典创建Pandas的DataFrame对象

    原文来源:http://pbpython.com/pandas-list-dict.html 介绍 每当我使用pandas进行分析时,我的第一个目标是使用众多可用选项中的一个将数据导入Pandas的D ...

  9. maven学习(八)——使用maven创建javaweb项目

    构建JavaWeb项目 1.创建JavaWeb项目 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.my ...

  10. HDU 4178 模拟

    Roll-call in Woop Woop High Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...