Maven使用教程

搭建maven环境

  1. 下载maven文件解压到本地
  2. 配置环境变量(注意:在配置maven环境变量之前确认Java的环境变量已经配置)
    • 新建系统参数MAVEN_HOME:指定maven文件的解压路径
    • 编辑系统参数Path:在参数末尾添加%MAVEN_HOME%\bin;
  3. 在命令提示符窗口输入mvn -version测试maven环境是否搭建成功
  4. 修改本地maven资源库地址,默认为${user.home}/.m2/repository

    • 找到maven路径下的./conf/settings.xml文件,编辑settings.xml文件
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
         <localRepository>D:/Repositories</localRepository>
         ......
    </settings>

搭建私服

  1. 下载nexus文件解压到本地
    • 注意2.x版本与3.x版本的使用有很大的不同,在本文中选用2.x
  2. 配置环境变量
    • 新建系统参数NEXUS_HOME:指定nexus文件的解压路径
    • 编辑系统参数Path:在参数末尾添加%NEXUS_HOME%\bin;
  3. 安装nexus服务
    • 在解压缩目录下的./nexus-2.14.2-01/bin/jsw文件夹中找到对应当前系统平台(Windows7 64位)的文件夹windows-x86-64
    • 运行文件夹中的install-nexus.bat文件安装服务
    • 安装完成后运行start-nexus.bat启动服务。
      这里写图片描述
  4. 在浏览器中访问localhost:8081/nexus可以访问到私服可视化界面
    • 点击右上角Log In,以管理员权限登录(用户名:admin 密码:admin123)
      这里写图片描述
      这里写图片描述
    • 更新远程仓库Indexes(注意:此操作需要在可联通网络的电脑上操作)
    • 进入Repositories菜单,在仓库列表中点击Central显示Central相关选项卡
    • 选择Configuration选项卡,修改Download Remote Indexestrue保存,
    • 右键列表中的Central选Update Indexes
      这里写图片描述
    • 在eclipse中做一些创建maven项目、执行maven指令的操作,使得本地Repositories文件夹中的jar尽可能的充足
  5. nexus文件夹Repositories文件夹拷贝到无网络的服务器上,按上述配置maven、nexus环境,即可完成无网络私服的配置

私服仓库介绍

这里写图片描述
1. hosted本地代理仓库,通常会部署自己的jar到该类仓库中。
- 3rd party用于发布第三方jar
- Releases用于发布我们自己release的jar
- Snapshots用于发布我们自己的快照jar
2. proxy代理的远程仓库,用于代理远程的公共仓库,如maven中央仓库
3. group仓库组,用来合并多个hostedproxy仓库,通常我们配置maven依赖仓库组

创建Maven项目

  1. 设置镜像

    • 编辑settings.xml
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
         ......
         <mirrors>
          <mirror>
            <id>nexus</id>
            <!-- *表示该镜像对所有仓库有效 -->
            <mirrorOf>*</mirrorOf>
            <!-- url为私服仓库组地址 -->
            <url>http://192.168.xxx.xxxx:8081/nexus/content/groups/public</url>
          </mirror>
         </mirrors>
         ......
    </settings>
  2. 设置JDK,否则默认会使用1.5的JDK

    • 编辑settings.xml
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
         ......
         <profiles>
           <id>jdk-1.8</id>
           <activation>
             <activeByDefault>true</activeByDefault>
             <jdk>1.8</jdk>
           </activation>
           <properties>
             <maven.compiler.source>1.8</maven.compiler.source>
             <maven.compiler.target>1.8</maven.compiler.target>
             <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
             <!-- 设置编码格式,如不设置会默认使用eclipse平台的编码格式 -->
             <encoding>UTF-8</encoding>
           </properties>
         </profiles>
         ......
    </settings>
    • eclipse设置Window>Preferences>Java>Installed JREs>Execution Environments>JavaSE-1.8>选择对应的jdk1.8
      这里写图片描述
  3. 设置eclipse中的maven,目前使用的较新版本的eclipse中已经包含了maven插件
    • Window>Preferences>Maven>Installations>选择本地maven路径
      这里写图片描述

这里写图片描述
4. 创建maven项目
- 右键New>Other...>Maven>Maven Project
这里写图片描述
- Use default Workspace location>maven-archetype-quicketstart 1.1
这里写图片描述
- Group Id:项目组织的唯一标识符com.cas
- Artifact Id:项目的唯一标识符
这里写图片描述
5. maven默认的几个目录
- src/main/java源代码目录
- src/main/resources源代码资源目录
- src/test/java测试代码目录
- src/test/resources测试代码资源目录
- 用户自定义的源代码目录需要通过插件指定来完成自定义目录的编译和打包。(详见:[Maven插件](#maven plugins))

Maven依赖

  1. 创建依赖

    • mvnrepository.com网上搜索需要使用的jar选择想要的版本复制Maven配置信息
    <dependency>
     <!-- 项目组织的唯一标识符 -->
     <groupId>...</groupId>
     <!-- 项目的唯一标识符 -->
     <artifactId>...</artifactId>
     <!-- 依赖版本 -->
     <version>...</version>
     <!-- 依赖范围,默认为compile范围 -->
     <scope>...</scope>
    </dependency>
    • 打开项目根目录下的pom.xml文件,将复制到的信息粘贴到<dependencies>标签内保存,eclipse就会自动通过settings.xml文件中已经配置好的镜像,从私服上下载对应的jar包到本地
  2. 依赖的冲突:同时引用了同一个依赖的两个不同版本,则依据使用pom.xml文件中先引用的版本
  3. 依赖范围,默认的依赖返回为complie
    • test依赖:测试范围内有效,在编译和打包时都不会使用该依赖
    • compile依赖:编译范围内有效,在编译和导报是都会将依赖存储进去
    • provided依赖:在编译和测试的过程有效,最后生成jar包时不会加入
    • runtime依赖:运行的时候有依赖,但编译的时候不依赖
    • import
    • system

Maven常用命令

  1. 命令提示符中运行maven命令
    • mvn clean——表示运行清理操作(会默认把target文件夹中的数据清理)
    • mvn clean compile——表示先运行清理之后运行编译,会见代码编译到target文件夹中
    • mvn clean test——表示运行清理和测试
    • mvn clean package——表示运行清理和打包
    • mvn clean install——表示运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用
    • mvn clean deploy——表示运行清理和发布(发布到私服上面)
    • 注意以上命令需跳转至项目根目录下执行
  2. eclipse中运行maven命令
    • 右键项目弹出菜单Run As>Maven build...>在Goals文本框中输入maven运行命令
      这里写图片描述
      这里写图片描述
  3. maven命令对应执行maven插件,一些maven命令需要我们扩展插件来执行。

Maven生命周期

maven命令运行的过程叫做生命周期,对于maven而言有三套生命周期
1. clean用于清理生命周期:
- pre-clean执行需要在clean前完成的工作
- clean移除所有上一次构建生成的文件
- post-clean执行一些需要在clean之后立刻完成的工作
2. compile用于编译的生命周期:
- validate
- generate-sources
- process-sources对源文件进行生成和处理
- generate-resources
- process-resources复制并处理资源文件至目标目录,准备打包
- compile编译项目的源代码
- process-class
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources复制并处理资源文件至目标测试目录
- test-compile编译测试源代码
- prepare-package
- package接受编译好的代码,打包成可发布的格式,如jar
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install将包安装至本地仓库,以让其他项目依赖
- deploy将最终的包复制到远程的仓库,以让其他开发人员与项目共享
3. site用于发布站点的生命周期:
- pre-site执行一些需要在生成站点之前完成的工作
- site生成项目的站点文档
- post-site执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
- site-deploy将生成的站点文档部署到特定的服务器上

Maven插件

插件是maven的核心,所有执行的操作都基于插件来完成的
为了让一个插件中可以实现众多的类似功能,maven为插件设定了目标,一个插件中有可能有多个目标
其实生命周期中的重要的每个阶段都是由插件的一个具体目标来执行的
1. 我们可以从maven.apache.org/plugins上查找我们需要的插件,并配置到项目根目录的pom.xml文件中

  • 配置pom.xml文件,自定义资源目录

    <build>
    <plugins>
      <plugin>
        <!-- 声明绑定插件 -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helpr-maven-plugin</artifactId>
        <version>1.12</version>
        <executions>
          <execution>
            <id>add-sources</id>
            <!-- 指定绑定的生命周期 -->
            <phase>generate-sources</phase>
            <!-- 绑定插件在package生命周期执行目标 -->
            <goals>
              <goal>add-sources</goal>
            </goals>
            <!-- 设置参数 -->
            <configuration>
              <sources>
                <source>src/cas/java</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    </build>
  • 导出依赖jar包到指定文件夹

    <plugin>
    <!-- 声明绑定插件 -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helpr-maven-plugin</artifactId>
    <!-- 设置参数 -->
    <configuration>
      <!-- 指定依赖jar包导出目录,${project.build.directory}表示target目录 -->
      <outputDirectory>${project.build.directory}/lib</outputDirectory>
      <!-- 不包含间接依赖的包 -->
      <excludeTransitive>false</excludeTransitive>
      <!-- 复制的jar文件去掉版本信息 -->
      <stripVersion>true</stripVersion>
    </configuration>
    </plugin>

Maven发布本地项目到私服

  1. 配置pom.xml文件设置发布位置

    <distributionManagement>
    <!-- 快照版本发布地址 -->
    <snapshotRepository>
     <id>snapshots</id>
     <name>...</name>
     <url>http://192.168.xxx.xxx:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
    <!-- releases版本发布地址 -->
    <repository>
     <id>releases</id>
     <name>...</name>
     <url>http://192.168.xxx.xxx:8081/nexus/content/repositories/releases</url>
    </repository>
    </distributionManagement>
  2. 配置setting.xml文件设置server权限

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
           ......
           <servers>
             <server>
               <!-- id对应pom.xml中repository的id -->
               <id>snapshots</id>
               <!-- nexus默认admin、deployment用户有发布权限 -->
               <username>deployment</username>
               <password>deployment123</password>
             </server>
             <server>
               <!-- id对应pom.xml中repository的id -->
               <id>releases</id>
               <!-- nexus默认admin、deployment用户有发布权限 -->
               <username>deployment</username>
               <password>deployment123</password>
             </server>
           </servers>
           ......
    </settings>
  3. admin权限登录http://192.168.xxx.xxx:8081/nexus修改Releases仓库Deployment Policy的属性为Allow Redeploy
    这里写图片描述
  4. 执行maven命令clean deploy发布项目
    • 注意项目下pom.xml文件中<version>标签内的值若后缀`-SNAPSHOT则会发布为快照版本,其他发布为release版本

猜你喜欢

转载自blog.csdn.net/zhuiyucanxin/article/details/75314341