zoukankan      html  css  js  c++  java
  • Maven的介绍及使用

    一、Maven简介

      Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理,是一个自动化构建工具。

      自动化构建工具:将原材料(javajscsshtml....->产品(可发布项目)

      编译-打包-部署-测试  ->  自动构建

    Maven的作用:

    1、管理jar

    1. 增加第三方jar包(不需要自己下载jar包)
    2. 管理jar包之间的依赖关系(maven自动关联下载所有依赖的jar包)

    2、将项目拆分成若干个模块:借助于Maven可以将一个项目拆分成多个工程。(例如爱洋葱)

     

    Maven能干的事情:

      清理:删除编译的结果,为重新编译做准备。

      编译:java->class

      测试:针对于项目中的关键点进行测试,也可用项目中的测试代码去测试开发代码

      报告:将测试结果进行显示

      打包:将项目中包含的多个文件压缩成一个文件,用于安装或部署(java项目打成一个jar包,web项目打成一个war包,父工程-pom

      安装:将打成的包,放到本地仓库,供其他项目使用。

      部署:将打成的包,放到服务器上,准备运行。

      Eclipse中的项目,要在Tomcat中运行,需要部署:

      a、通过eclipseadd and remove按钮进行部署

      b、Web项目打成一个war包,然后将该war包复制到Tomcat/webapps中即可

      通常下载一个jar包,先在本地仓库中下载,如果本地仓库中不存在,则再联网到中央仓库(镜像)去下载。

    约定配置:

      Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:

       

    二、Maven POM

      POM(项目对象模型) Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。POM 中可以指定以下配置:

      项目依赖

      插件

      执行目标

      项目构建profile

      项目版本

      项目开发者列表

      相关邮件列表信息

      在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID

     

    所有 POM 文件都需要 project 元素和三个必需字段:groupIdartifactIdversion

    通过groupIdartifactIdversion可以在本地仓库唯一标识一个模块。

     

    三、依赖

      A中的某些类,需要使用B中的某些类,则称为A依赖B

      在maven项目中,如果要使用一个当时不存在的jar或模块,则可以通过依赖实现(去本地仓库、远程仓库去寻找)

    1、依赖的范围、依赖的有效性

    Compile(默认)  test  provided

     

    2、依赖排除

     

    3、依赖的传递性

    A.jar->B.jar->C.jar

    要使A.jar->C.jar:当且仅当 B.jar依赖于C.jar的范围是compile

    多个maven项目(模块)之间如何依赖:p项目<-q项目

    1. p项目install到本地仓库
    2. q项目依赖,在pom.xml中放入p项目的坐标:
    1 <dependency>
    2 
    3     <groupId>aa.test</groupId>
    4 
    5     <artifactId>HelloWorld</artifactId>
    6 
    7     <version>0.0.1-SNAPSHOT</version>
    8 
    9 </dependency>

    4、依赖原则

    a、最短路径优先原则

    b、路径长度相同:

    i、在同一个pom.xml文件中有2个相同的依赖,则后面的依赖会覆盖前面的 依赖(严禁使用本情况)

    ii、如果是不同的pom.xml中有2个相同的依赖,则先声明的依赖会覆盖后 声明的依赖

    eclipsejdk的版本:

    maven的安装目录中,打开setting.xml,在<profiles>节点下,加入以下代码:

     1 <profile>
     2 
     3    <id>jdk-1.8</id>
     4 
     5    <activation>
     6 
     7    <activeByDefault>true</activeByDefault>
     8 
     9    <jdk>1.8</jdk>
    10 
    11    </activation>
    12 
    13    <properties>
    14 
    15    <maven.compiler.source>1.8</maven.compiler.source>
    16 
    17    <maven.compiler.target>1.8</maven.compiler.target>
    18 
    19       
    20  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    21 
    22    </properties>
    23 
    24 </profile>

    然后再在eclipse中创建maven工程时,jdk就是1.8的了。

    pom.xml文件中的依赖的版本:

      首先在根节点中插入<properties></properties>节点,然后在这个节点里,添加类似这样的版本号信息:

      <spring.version>4.1.5.RELEASE</spring.version>

      <lucene.version>3.6.2</lucene.version>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>(这个是文件的编码)

      然后在依赖中,写成以下形式(类似于EL表达式):

    1 <dependency>
    2 
    3     <groupId>org.springframework</groupId>
    4 
    5     <artifactId>spring-context</artifactId>
    6 
    7     <version>${spring.version}</version>
    8 
    9 </dependency>

    四、命令

      执行mvn命令:必须在pom.xml所在目录执行

      Maven常见命令:

      mvn compile --只编译main目录中的java文件

      mvn test  测试,运行的是test/java中的代码

      mvn package 打成 jar/war包,放在项目的target文件夹中

      mvn install 将开发的模块放入本地仓库,供其他模块使用(放入的位置,是通过gav决定)

      mvn clean 删除target目录(删除编译文件目录)

      mvn deploy 将项目部署到Tomcat中,然后即可运行。

    eclipse中创建maven工程:

    1、配置maven

    配置maven版本(不用自带的,用自己安装的)

    配置本地仓库:设置settings.xml

    如果执行package命令,则依次执行resourcescompiletestpackage命令。

    Maven生命周期:

    生命周期中的顺序:a b c d e

    当我们执行c命令,则实际执行的是a b c

    生命周期包含的阶段:3个阶段

    clean 生命周期:清理

    pre-clean clean post-clean

    default  生命周期:默认

    site 生命周期:站点

    pre-site site post-site site-deploy

    五、继承

    使用继承,可以通过父工程,统一管理依赖的版本。

    1、创建父工程:父工程的打包方式为pom

    2、在父工程的pom.xml中编写依赖:

    1 <dependencyManagement>
    2     <dependencies>
    3     <dependency>
    4     ......
    5     </dependency>
    6     </dependencies>
    7 </dependencyManagement>

    3、在子工程中加入父工程的gav(写在<parent/>标签中)。

    4、在子工程的pom.xml中写入<relativePath>../B/pom.xml</relativePath>(子工程pom相对于父工程pom的相对路径)

    5、在子工程中需要声明:使用父工程的哪些依赖:

    <dependency>

        <groupId>..</groupId>

        <artifactId>..</artifactId>

    </dependency>(只需要ga,不需要v了)

    六、聚合

    Maven2项目依赖于maven1项目,则在执行时,必须先将maven1加入到本地仓库中(install),之后才能执行maven2

    以上前置工程(maven1)的install操作,可以交由“聚合”一次性搞定。

    聚合的使用:

    在一个总工程中配置聚合:(聚合的配置,只能配置在打包方式为pomMaven工程中)

    1   <!-- 配置聚合,避免前置工程的install操作 -->
    2 
    3   <modules>
    4 
    5        <module>../Maven1</module>
    6 
    7        <module>../Maven2</module>
    8 
    9   </modules>

    配置完聚合之后,以后只要操作总工程,则会自动操作总工程中配置过的工程。(只要install了总工程,则子工程都会install

    七、部署

    正常部署:

      首先将mavenweb项目打包(打成war包,结果在项目根目录的target文件夹里),然后将war包复制到tomcatwebapps文件夹中,启动tomcat即可运行。

    Maven部署:

    1、配置cargo

    pom.xml中加入以下内容:

     1 <build>
     2 
     3        <finalName>MyWebProject</finalName><!-- 工程名 -->
     4 
     5        <plugins>
     6 
     7            <plugin>
     8 
     9            <groupId>org.codehaus.cargo</groupId><!-- 启动tomcat -->
    10 
    11            <artifactId>cargo-maven2-plugin</artifactId>
    12 
    13            <version>1.4.9</version>
    14 
    15            <configuration>
    16 
    17            <container>
    18 
    19                <containerId>tomcat8x</containerId>
    20 
    21                <home>E:Tomcat 9apache-tomcat-9.0.14</home>
    22 
    23            </container>
    24 
    25        <configuration>
    26 
    27    <type>existing</type>
    28 
    29    <home>E:Tomcat 9apache-tomcat-9.0.14</home>
    30 
    31    <!-- 默认8080 -->
    32 
    33 <!--    <properties> -->
    34 
    35 <!--    <cargo.servlet.port>8888</cargo.servlet.port> -->
    36 
    37 <!--    </properties> -->
    38 
    39    </configuration>
    40 
    41    </configuration>
    42 
    43    <executions>
    44 
    45    <execution>
    46 
    47    <id>cargo-run</id>
    48 
    49    <phase>install</phase>
    50 
    51    <goals>
    52 
    53    <goal>run</goal>
    54 
    55    </goals>
    56 
    57    </execution>
    58 
    59    </executions>
    60 
    61    </plugin>
    62 
    63    </plugins>
    64 
    65   </build>                                                

    2、Maven命令:deploy

    然后run as->maven build...->deploy,然后打开浏览器,输入localhost:8080/项目名称/,即可运行。

  • 相关阅读:
    LinkedHashMap、HashMap和TreeMap的比较使用
    RocketMQ之Namesrv
    mysql创建、删除、查看索引
    java8 JVM堆内存(heap) 新生代 老年代 元空间垃圾回收详解
    Java中GCRoots包括哪些
    单例模式双重校验锁
    内存屏障
    LockSupport的用法及原理
    HashSet,TreeSet和LinkedHashSet的区别
    Windows常用网络命令技巧汇总
  • 原文地址:https://www.cnblogs.com/baichunyu/p/11152179.html
Copyright © 2011-2022 走看看