自动构建工具:Maven

Maven是什么

  • maven是一款服务于java平台的自动化构建工具
    Make——>Ant——>Maven——>Gradle
  • 构建:
    1、以“java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去“生产”一个可以运行运行的项目的过程
    分为:编译、部署、构建
    2、编译:JAVA源文件 .java——>编译——>.Class字节码文件——>交给JVM执行
    3、部署:一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程的“编译结果”:web动态工程——>编译、部署——>编译结果
    4、构建工程的各个环节:
清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
编译:将java源程序编译成class字节码文件
测试:自动测试,调用junit程序
报告:测试程序执行结果
打包:动态web工程打war包,java工程打jar包
安装:Maven特定的概念——将打包得到的文件复制到“仓库”中的指定位置
部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以运行

5、自动化构建:

安装

  1. 下载:Maven官网
  2. 下载后选择一个目录解析(最好不要有中文)
  3. 然后配置path环境变量,如图
  • 系统变量:MAVEN_HOME = F:\dev\apache-maven-3.6.1
  • 系统变量:path = %MAVEN_HOME%\bin
    在这里插入图片描述
    在这里插入图片描述
  1. 然后win+R 运行cmd 输入 mvn -version,如图所示则配置成功
    在这里插入图片描述

配置settings文件

  1. 在Maven解压的文件目录下的config文件下,修改settings.xml文件
  2. 修改本地仓库位置
在settings.xml文件的52行写了默认仓库位置为: Default: ${user.home}/.m2/repository
将其修改为自定义的
<localRepository>E:/mymaven/repository</localRepository>
  1. 因为国外的服务器下载jar包很慢所以我们改为阿里云服务器(大约在150行左右)
</mirrors>
	<mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
		<mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <mirror>
            <id>central</id>
            <name>Maven Repository Switchboard</name>
            <url>http://repo1.maven.org/maven2/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
        <mirror>
            <id>ibiblio</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
        </mirror>
        <mirror>
            <id>jboss-public-repository-group</id>
            <mirrorOf>central</mirrorOf>
            <name>JBoss Public Repository Group</name>
            <url>http://repository.jboss.org/nexus/content/groups/public</url>
        </mirror>
        <mirror>
            <id>google-maven-central</id>
            <name>Google Maven Central</name>
            <url>https://maven-central.storage.googleapis.com
            </url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- 中央仓库在中国的镜像 -->
        <mirror>
            <id>maven.net.cn</id>
            <name>oneof the central mirrors in china</name>
            <url>http://maven.net.cn/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
  </mirrors>
  1. 在最后配置jdk,也要夹在两个profiles标签之间(我这里使用的为jdk8)
 </profiles>
	<profile>
      <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>
      </properties>
	</profile>
  </profiles>

Maven核心概念

约定的目录结构
POM
坐标
依赖
仓库
生命周期/插件/目标
继承
聚合

常用命令

执行与构建过程相关的命令,必须进入pom.xml所在目录,与构建过程相关:编译、测试、打包

mvn clean:清理
mvn compile:编译主程序
mvn test-compile:编译测试程序
mvn test:执行测试
mvn package:打包
mvn install:安装(对于自己开发的maven工程需要进行install安装进入本地maven仓库)
mvn site:生成站点

POM

  • pom:Project Object Model:项目对象模型
  • pom.xml对于Maven工程是核心配置文件,与构建相关的一切设置都在这个文件进行配置。重要程度相当与web.xml之于动态web工程

坐标

Maven的坐标:使用下面三个向量在仓库中唯一定义一个Maven工程

	<!--groupId:公司或组织域名的倒序+项目名-->
	<groupId>com.fly.maven</groupId>
	<!--artifactId:模块名-->
    <artifactId>Java_Maven</artifactId>
    <!--version:版本-->
    <version>1.0-SNAPSHOT</version>

依赖

  1. Maven解析依赖信息时,会到本地仓库中查找被依赖的jar包
  2. 依赖范围
complie范围依赖
   对主程序是否有效:有效
   对测试程序是否有效:有效
   是否参与打包:参与
test范围依赖
	对主程序是否有效:无效
   对测试程序是否有效:有效
   是否参与打包:不参与
provided范围依赖
   对主程序是否有效:有效
   对测试程序是否有效:有效
   是否参与打包:不参与
   是否参与部署:不参与

生命周期

Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。

clean生命周期

  1. pre-clean :执行清理前的工作;
  2. clean :清理上一次构建生成的所有文件;
  3. post-clean :执行清理后的工作

default生命周期

default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。

  1. validate
  2. initialize
  3. generate-sources
  4. process-sources
  5. generate-resources
  6. process-resources :复制和处理资源文件到target目录,准备打包;
  7. compile :编译项目的源代码;
  8. process-classes
  9. generate-test-sources
  10. process-test-sources
  11. generate-test-resources
  12. process-test-resources
  13. test-compile :编译测试源代码;
  14. process-test-classes
  15. test :运行测试代码;
  16. prepare-package
  17. package :打包成jar或者war或者其他格式的分发包;
  18. pre-integration-test
  19. integration-test
  20. post-integration-test
  21. verify
  22. install :将打好的包安装到本地仓库,供其他项目使用;
  23. deploy :将打好的包安装到远程仓库,供其他项目使用;

site生命周期

  1. pre-site
  2. site :生成项目的站点文档;
  3. post-site
  4. site-deploy :发布生成的站点文档

插件目标(Plugin Goal)

一个插件往往能够完成多个任务。例如maven-dependency-plugin,它能够基于项目依赖做很多事情,例如分析项目依赖,帮助找出所有已解析的依赖等等,每个功能就是一个插件目标。用法是 <插件前缀:目标>。例如maven-dependency-plugin有十多个目标,最常用的:
mvn dependency:analyze

插件绑定:

Maven的生命周期与插件相互绑定,用以完成实际的构建任务。例如项目编译这一任务,它对应了default生命周期的compile阶段,而maven-compile-plugin这一插件的compile目标能完成该任务。因此,将它们绑定,就能实现编译的目的。
  Maven在核心为一些主要的生命周期阶段绑定了很多插件的目标,当用户通过命令行调用生命周期阶段的时候,对于的插件目标就会执行相应的任务。例如clean绑定mavevn-clean-plugin:clean。

而default生命周期,由于项目的打包类型会影响构建的具体过程,因此,default生命周期的阶段与插件的目标绑定关系由项目打包类型所决定,通过POM中的packaging元素定义。最常用的打包类型是jar。以下是基于jar,default生命周期的内置插件绑定关系:

default生命周期还有很多其他阶段,默认它们没有绑定任何插件,因此也没有实际行为。

自定义绑定:

除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上。例如一个常用的插件 Maven Archetype Plugin,用户通过这个插件可以生成一个Maven项目的骨架,也可以从一个现成的项目中生成模板。

用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包,生成如:ehcache-core-2.5.0-sources.jar形式的源码包

	<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.6.3</version>
                <executions>
                    <execution>
                        <id>attach-source</id>
                        <phase>package</phase><!-- 要绑定到的生命周期的阶段 -->
                        <goals>
                            <goal>jar-no-fork</goal><!-- 要绑定的插件的目标 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值