Maven(1)maven相关知识

一、Maven介绍

  1. apache组织提供一个顶级项目
  2. maven是一个由Java开发工具
  3. 作用:
    1. 管理项目构建生命周期
    2. 管理项目中的jar
    3. 管理项目基础信息(文档管理,测试报告)

二、项目构建生命周期

  1. 简单: 开发 、编译、打包、发布

打包:(1)简单的Java工程,将工程中所有的Java类打成jar包
(2)简单的WEB工程,将工程打成war包---->可以放在tomcat里面直接运行的。

  1. 专业流程:
    [清理clean]----->[编译compile]----->[测试test]----->[报告]----->[打包package]----->[发布]

三、项目中jar管理:

  1. jar管理难度:
    1. 定位较难
    2. jar包之间依赖很难
    3. jar之间冲突
    4. jar管理

四、MAVEN是如何管理jar

MAVEN是如何管理jar

  1. 通常在我们本地计算机就会有一个本地仓库,本地仓库里面用来存放jar包,当我们用jar包时,会去本地仓库寻找所需要的jar包。然而当我们在本地找不到需要的jar包时,maven会去局域网哪里的***仓库寻找所谓的jar包,如果有就会返回到本地项目中。
  2. 如果在仓库里面还没有找到想要的jar包的话,maven就会前往外网,到中央仓库寻找。

[本地仓库]---->[局域网仓库]---->[中央仓库]

五、maven项目信息管理

  1. api文档
  2. 测试报告

六、MAVEN安装与配置

1.安装:解压即可,复制到没有中文和空格的文件夹下。
下载Maven打开链接:https://maven.apache.org/download.cgi
2. 配置:
1. JAVA-HOME:jdk安装位置
2. MAVEN-HOME:MAVEN安装位置
3. path:%MAVEN-HOME%\bin

七、maven的本地仓库

随便发送maven命令:
mvn clean
mvn compile
mvn package
导致maven在当前计算机上生成一个本地仓库

默认位置:c:\【用户/users】\【(登陆用户名称/Administrator)】\m2\resporsitry

八、重新设置MAVEN本地仓库地址

MAVEN安装路径\conf\settings.xml中定位标签

打开文档,在第53行# <localRepository>/path/to/local/repo </localRepository>

重新设置本地仓库地址,将新的地址放在标签中间就行。

九、MAVEN工程结构

  1. MAVEN可以管理工程,必须按照【约定结构】来创建
  2. 结构
  • src文件夹:(java代码)

    1. main(主要开发)
      1. Java(创建Java文件)
      2. resources(配置文件,propeties)
    2. test(主要进行测试)
      1. java(创建测试类)
      2. resources(测试时使用配置文件)
  • target文件:(编译后class文件,在创建项目时,不需要创建。MAVEN命令在执行时自动创建target)

  • pom.xml:(核心配置文件;主要向MAVEN讨要jar)

    <!--project是pom.xml的根元素,包含了一些约束的信息,比如xlms,xsi-->
    <project>
          <!--指定了当前pom的版本-->
           <modelVersion>4.0.0</modelVersion>
          <!--maven2.0必须是这样写,现在是maven2唯一支持的版本-->
          <!-- 基础设置 -->
          <groupId>反写公司的网址+项目名称</groupId>
          <artifactId>项目名称+模块名</artifactId>
          <version>当前项目版本号</version>
           <!-- 默认是jar,还可以打包成war/zip/pom-->
          <packaging>...</packaging>
          <!-- 项目描述名,一般是写项目文档的时候才使用 -->
          <name>...</name>
          <!-- 项目的地址-->
          <url>...</url>
          <!-- 项目的描述 -->
          <description>...</description>
          <!-- 开发人员的列表 -->
          <developers>...</developers>
          <!-- 许可证的信息 -->
          <licenses>...</licenses>
          <!-- 组织信息 -->
          <organization>...</organization>
    
          <!-- 依赖列表,下面可以包含多个依赖项dependency-->
          <dependencies>
             <dependency>
                 <!-- 指定坐标确定依赖项的位置 -->
                 <groupId></groupId>
                 <artifactId></artifactId>
                 <version></version>
                 <type></type>
                 <!-- 依赖包的依赖范围-->
                 <scope></scope>
                 <!-- 这个标签只有true和false两个值,是用来设置依赖是否可选 -->
                 <optional></optional>
                 <!-- 排除依赖传递列表 -->
                 <exclusions> 
                   <exclusion>
                   </exclusion>  
                 </exclusions>
              </dependency>
           </dependencies>
    
           <!-- 依赖管理,里面包含多个依赖,但是它并不会被运行,即不会被引用到实际的依赖中-->
           <!--这个标签主要是用来定义在父模块中,供子模块继承用 -->
           <dependencyManagement>                              
               <dependencies>
                  <dependency>
                  </dependency>
               </dependencies>
          </dependencyManagement>
    
           <!-- 常用于给构件的行为提供相应的支持 -->
            <build>
              <!-- 插件列表 -->
              <plugins>
                  <plugin>
                     <groupId></groupId>
                     <artifactId></artifactId>
                     <version></version>
                   </plugin>
               </plugins>
            </build>
    
          <!-- 用于在子模块中对父模块的pom的继承 -->
          <parent>...</parent>
           <!-- 用来聚合多个模块,让多个模块进行编译,不用一个一个来 -->
          <modules>
            <module>
            </module>
          </modules>
    </project>

一个最简单的pom.xml的定义必须包含modelVersion、groupId、artifactId和version这四个元素,当然这其中的元素也是可以从它的父项目中继承的。在maven中,使用groupId、artifactId和version组成groupId:artifactId:version的形式来唯一确定一个项目:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  
                      http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 
        含义:组织标识,定义了项目属于哪个组,风向标,坐标,或者说若把本项目打包
        用途:此名称则是本地仓库中的路径,列如:otowa.user.dao,在M2_REPO目录下,将是: otowa/user/dao目录
        命名规范:项目名称,模块,子模块
    -->
    <groupId>otowa.user.dao</groupId>
    <!-- 
        含义:项目名称也可以说你所模块名称,定义当面Maven项目在组中唯一的ID
        用途:例如:user-dao,在M2_REPO目录下,将是:otowa/user/dao/user-dao目录
        命名规范:唯一就好
    -->
    <artifactId>user-dao</artifactId>
    <!-- 
        含义:项目当前的版本号
        用途:例如:0.0.1-SNAPSHOT,在M2_REPO目录下,将是:otowa/user/dao/user-dao/0.0.1-SNAPSHOT目录
    -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par -->
    <packaging>war</packaging>
    <!-- 元素声明了一个对用户更为友好的项目名称 -->
    <name>maven</name>
</project>

在打完jar包后,若想直接将jar包存储在本地仓库里面,可以按一下步骤:
在命令框里面输入:

  1. mvn clean 2. mvn install

这样可以帮我们把程序编译,测试,打包然后安装到本地仓库。

十、MAVEN常见命令(项目构建周期)

  1. mvn clean:删除当前工程中target
  2. mvn compile:将当前工程中main文件下所有的Java编译为class,输送到当前工程中target
  3. mvn package:将工程中test文件下所有的Java测试类的方法调用执行进行测试并声明【测试报告】
    如果测试没有问题,将main文件下所有class文件打成(jar,war)输送到当前工程[target]
  4. mvn install:与package命令执行基本一致,将【jar,war】推送到maven的本地仓库中。

十一、MAVEN坐标(gav)

为了方便maven对jar的定位。在maven世界中,每一个jar都要由一个独立坐标,相当于ip,这个独立坐标由三部分组成。

<groupId>反写公司的网址+项目名称</groupId>
<artifactId>项目名称+模块名</artifactId>
<version>当前项目版本号</version>
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务