zoukankan      html  css  js  c++  java
  • 项目管理构建工具Maven的使用

    Maven

    Maven是一款项目管理工具,基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
    大多数JavaEE开发都会使用Maven来进行管理,同类型的还有Gradle,Ant。

    1.Maven的安装

    • 1.下载maven http://maven.apache.org/download.cgi
    • 2.配置环境变量
      M2_HOME = maven安装包解压后的路径
    • 3.maven目录说明
      - bin 执行脚本文件
      - boot 包含一个类加载起框架
      - conf 配置文件 setting.xml
      - lib 类库
      安装完成后可以在命令行中使用 mvn -v 测试是否安装完成,不过一般开发过程中会直接在ide中使用maven。

    2.Maven的相关配置

    maven目录中 /conf/setting.xml可以配置Maven的相关信息,一般需要配置

    • 本地仓库地址
    <localRepository>D:maven_repository</localRepository>
    
    • 远程仓库镜像 根据需要配置公司私服地址
    <mirror>
    	<id>nexus-aliyun</id>
    	<mirrorOf>central</mirrorOf>
    	<name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    

    此外还可以配置代理、或者是公司私服需要使用的账户密码

    3.Maven的生命周期与常用构建命令

    常用构建命令:

    • mvn -v 查看Maven版本
    • mvn compile 编译 运行后会在target目录下产生.class字节码文件
    • mvn test 测试 运行后会在target目录下产生测试报告
    • mvn package 打包
    • mvn clean 删除target(字节码文件、测试报告)
    • mvn install 将项目jar包安装到本地仓库
    • mvn archetype:generate 插件 自动创建Maven项目骨架

    clean 项目构建前执行一些清理工作

    1. pre-clean 执行一些需要在clean之前完成的工作
    2. clean 移除所有上一次构建生成的文件
    3. post-clean 执行一些需要在clean之后立刻完成的工作

    default 构建的核心部分,编译,测试,打包,部署等等
    compile
    test
    package
    install

    site 生成项目站点

    1. site 生成项目的站点文档
    2. post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
    3. site-deploy 将生成的站点文档部署到特定的服务器上

    4.pom文件的配置

    项目相关描述

            <modelVersion>4.0.0</modelVersion> --当前pom版本
    	<groupId>com.zhujun</groupId>   --组织名称
    	<artifactId>crm-service</artifactId>  --项目名称
    	<version>2.0</version> --版本号
    	<packaging>pom</packaging> --打包方式
    

    版本号的相关表示
    版本号 - 0.0.0snapshot
    大版本号.分支版本号.小版本号
    snapshot 快照
    alpha 内部测试
    beta 公测
    release 稳定
    GA 正式发布
    通过 groupId artifactId version 就能确定一个项目的坐标

    项目的依赖

    <dependencies>
          <dependency>
    	    <groupId>org.springframework.boot</groupId>
    	    <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
          </dependency>
    </dependencies>
    

    scope:指定依赖范围
    1.compiler:默认的范围,编译测试运行都有效
    2.provided:编译测试时有效
    3.runtime:测试和运行时有效
    4.test:测试时有效
    5.system:与本机系统相关联,可移植性差
    6.import:导入的范围,只在dependencyManagement中使用,表示从其他的pom中导入dependency的配置

    项目的版本管理

    <dependencyManagement>
          <dependency>
    	    <groupId>org.springframework.boot</groupId>
    	    <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <version>2.0.0</version>
          </dependency>
    </dependencyManagement>
    

    dependencyManagement中声明的项目并不会被依赖到,只是声明版本,继承此项目的项目依赖spring-boot-starter-test时,使用的版本都会默认为2.0.0,避免同一个项目中引入不同版本的依赖

    插件管理

    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
    		</plugin>
    	</plugins>
    </build>
    

    5.项目的聚合与继承

    1.聚合
    当多个项目需要同时构建时,就可以使用maven的聚合 如下项目聚合了A、B、C 对该项目构建时就会对ABC按照声明顺序同时构建

    <modules>
        <module>../A</module>
        <module>../B</module>
        <module>../C</module>
    </modules>
    

    2.继承
    多个组件聚合时 如果使用了相同的依赖聚合时就会出现重复
    用一个父组件定义该依赖,然后有需要的组件继承该组件,聚合时就不会重复
    - 父项目打包方式为pom
    - 父项目 dependencyManagement定义依赖的版本号 父项目本身不会引入其中的依赖
    - 子项目 使用parent 指定继承的父项目

    6.依赖的传递与继承

    间接依赖 A->B B->C则 A->C
    排除依赖 在A的POM中使用exclusions标签,消除A对C的间接依赖

    <exclusions>
         <exclusion>
              <groupId>com.zhujun</groupId>
              <artifactId>C</artifactId>
         </exclusion>
    </exclusions>
    

    依赖冲突
    1.短路优先:
    A->B->X(v1.0),
    A->C->D->X(v2.0)
    结果
    A->X(v1.0)

    2.路径长度相同根据声明顺序
    A->B->X(v1.0),
    A->C->X(v2.0),
    A-pom.xml:

          ... 
                <dep C> 
                <dep B> 
          ..
    

    结果
    A->X(v2.0)

    7.maven release plugin的使用

    之前公司没用使用Jenkins时使用的就是该插件,来手动打包上线
    使用该插件发布时会在配置的Git上打一个tag和发布release版本包到私服
    pom中配置 git相关

    <scm>
       <developerConnection>scm:git:git@192.168.70.244:ETS/ets-pr/ky-open-potal-war.git</developerConnection>
       <tag>HEAD</tag>
    </scm>
    

    相关指令
    release:prepare git上打tag
    release:perform 上传releasejar包 到私服
    release:rollback 只能回滚本地,Git服务器上已经打得Tag无法回退
    参考博客:https://www.jianshu.com/p/c4c2ae1686a2

  • 相关阅读:
    struts2校验器
    Struts2 验证框架 validation.xml 常用的验证规则
    MVC 无法找到资源
    架构设计
    金山西山居初赛第二场 美素数
    K Smallest Sums
    金山游戏编程复赛 连续最大积
    C++大作业之链表实现的高精度加法,减法,和数组实现的高精度乘法。
    POJ 3250 Bad Hair Day
    PoJ2492A Bug's Life并查集
  • 原文地址:https://www.cnblogs.com/shinyrou/p/13157686.html
Copyright © 2011-2022 走看看