项目管理构建工具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

posted @ 2019-08-18 15:15  ShinyRou  阅读(190)  评论(1编辑  收藏  举报