Maven 项目管理应用知识总结

1.maven 简介

maven的介绍与使用.
主要作用
1. 清除 – mvn clean
2. 编译 – mvn complie
3. 测试 – mvn test
4. 打包 – mvn package
5. 将项目安装到maven本地资源库 – mvn install
6. 生成基于maven的项目文档站点 – mvn site
7. 部署站点 – mvn site-deploy
8. 部署基于maven的 war 文件到Tomcat – mvn tomcat:deploy 以 war 文件部署到 tomcat 下

2.maven 的下载 与 配置

下载
[配置]
1.环境变量配置环境变量配置
2.在 path 中加上配置
在这里插入图片描述
3.检验
在这里插入图片描述

3 maven 目录结构

src                                              -源码- main                                    -主源码- java- com.ceba.model- test                                      -单元测试- java- com.ceba.modelresources                              资源文件

4 install 命令 分析

如图所示
在这里插入图片描述

model02 引用 model01 时

  • 1 首先编译 model02 ,model 02报错
    在这里插入图片描述
    model 02 指示 没有 发现 model 01 的jar

  • 2 编译,测试 model 01 都没问题

  • 3 编译 model 02 还是 没有发现 model01 的jar

  • 4 打包 model 01

  • 5 编译 model 02 还是 没有发现 model01 的jar

  • 6 安装(insert) model 01

  • 7 编译 model 02 (编译成功)

总结: install 是 将 model01 的项目 打包后 生成的 jar 文件 发布到 本地仓库中 ,model02 才能 从本地仓库中 找到 model01 的jar 进行编译

5 maven相关知识

  • 1 坐标 (也称为构建)
    groupId = 组织名 或 公司网址的反写+项目名
    如:csdn net.csdn.mp.porject
    artifactId = 项目名-模块名
    如:porject-email
    version = 版本名
    如:0.0.1

  • 2 仓库

    • 远程仓库
    • 本地仓库
      • 存在本地 jar 为 本地所在仓库
    • 镜像仓库
      在这里插入图片描述
    • 更改本地仓库的位置
      • 1 新建一个目录 d://mavenlib/

      • 2 将 maven(本地maven目录)/conf/setting.xml 更改 本地仓库的位置在这里插入图片描述

      • 3 将 maven(本地maven目录)/conf/setting.xml 拷贝 到 movenlib 中

      • 4测试

        • 编译 项目 测试 ,查看 movenlib中有没有 jar
      • 总结:修改本地目录 1.方便升级 maven 2.方便管理

6 idea上安装 maven (略)

7 maven 的插件的应用

maven插件官网
maven 的 核心是一个插件执行框架,所有工作都是通过插件完成过的。

  • 构建期间将构建插件,并且应在pom 的 < build/> 元素中配置它们
  • 报告插件将在站点身侧期间执行,并且应在POM的 < reporting /> 元素中进行配置
  • 1 项目的构建过程包括
    • 清理,编译,测试,打包,集成测试,验证,部署
  • 2 maven 的生命周期
    • clean 清理项目 (分为三个节点)
      • pre-clean 执行清理前的工作
      • clean 清理上一次构建生成的所有文件
      • post-clean 执行清理后的文件
    • default 构建项目 (四个常用的节点)
      • complie
      • test
      • package
      • install
    • site 生成项目的站点 (分为四个节点)
      • pre-site 在生成项目站点签要完成过的工作
      • site 生成项目路的站点文档
      • post-site 在生成项目站点后要完成过的工作
      • site-deploy 发布身侧的站点到服务器上
        案例

在这里插入图片描述

jar-no-fork类似于jar,但不分叉构建生命周期。 --官网翻译

clean,compile,test,package

在执行 package 这个 生命周期的时候 会执行 clean,complie,test,package 不用分开单独执行。

8 maven pom 标签讲解

<?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/xsd/maven-4.0.0.xsd">
    <!--maven 版本-->
    <modelVersion>4.0.0</modelVersion>

    <!--构建坐标 -->
        <!--项目名-->
        <groupId>com.ceba.fileplat</groupId>
        <!--项目-模块名-->
        <artifactId>fileplat-cloud</artifactId>
        <!--版本-->
            <!--0.0.1
                第一个0 表示 大版本号
                第二个0 表示 分支版本号
                第三个0 表示 小版本号

                SNAPSHOT  快照 版本
                ALPHA     内部测试 版本
                RELEASE   稳定版本
                GA        正式发布版本
             -->
        <version>0.0.1-SNAPSHOT</version>
    <!---->

    <!--其他标签-->
        <!--打包类型
            jar (默认)
            war  (web容器下运行)
            pom  (继承时父模块的打包类型)
            maven-plugin (maven 插件)
            ...
        -->
        <packaging>jar</packaging>
        <!--项目名称-->
        <name>fileplat-cloud</name>
        <!--项目地址-->
        <url></url>
        <!--项目描述-->
        <description>
            *******
        </description>
        <!--项目开发人员名单-->
        <developers>
            <developer>
                <name>***</name>
            </developer>
        </developers>
        <!--许可证信息-->
        <licenses></licenses>
        <!--组织信息-->
        <organization>
        </organization>
    <!---->

    <!--依赖列表-->
        <dependencies>
            <!--依赖项-->
            <dependency>
                <!--坐标-->
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <!---->

                <!--依赖类型
                    jar (默认)
                    pom (pom 项目)
                    war (war)
                    ...
                -->
                <type></type>

                <!--依赖范围
                    表示当前依赖存在的范围
                    java中代码存在范围(classpath)
                        compile (默认) 编译测试运行都有效
                        provided       编译测试有效
                        runtime        测试运行时有效
                        test           测试范围有效
                        system         编译测试有效 与本机系统相关联,可移植性差
                        import         导入的依赖范围,他只是用在 dependencyManagement 中
                                       表示从其它的pom中导入 dependency 的配置
                -->
                <scope></scope>

                <!--依赖是否可选
                    false (默认)  继承
                    true 引入
                -->
                <optional></optional>

                <!--排除依赖的列表

                -->
                <exclusions>
                </exclusions>
            </dependency>
        </dependencies>
    <!---->

    <!-- 依赖管理
         主要应用于父项目中 用于 管理依赖的
    -->
        <dependencyManagement>
            <!--依赖列表-->
            <dependencies>

            </dependencies>
        </dependencyManagement>
    <!---->

    <!--构建-->
        <build>
            <!--插件列表-->
            <plugins>
                <!--插件-->
                <plugin>
                    <!--坐标-->
                    <groupId></groupId>
                    <artifactId></artifactId>
                    <version></version>
                    <!---->

                    <!--插件执行列表-->
                    <executions>
                        <!--插件执行-->
                        <execution>
                            <!--执行阶段  maven 生命周期的阶段-->
                            <phase></phase>
                            <!--执行目标-->
                            <goals>
                                <goal></goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    <!---->

    <!--用于子模块中对于父模块的继承-->
        <parent>
            <!--坐标-->
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
            <!---->
            <!--相对路径-->
            <relativePath></relativePath>
        </parent>

    <!-- 用来聚合多个maven 项目-->
        <modules>
            <!-- 模块名称 -->
            <module> </module>
        </modules>
</project>

注:maven中央仓库,maven官网

9 pom 依赖

 -  依赖冲突
   - 1.路径优先 (--> 代表是依赖关系)
   		A->B->C->D-common4.0.jar
   		A-F->common2.0.jar 
   		最后 common jar 选择的版本 为 2.0
   - 2.靠近优先
       在路径一样过的基础上 谁 靠前(谁先写依赖项) 谁优先
 - 依赖排除 

10 pom 聚合

		注:聚合的目的是为了方便一个项目中几个模块同时 清除,编译,测试,打包

11 pom 继承

        注:方便管理所有项目共同拥有的部分

12 pom 插件运行

	    注:主要介绍  servlet 容器 插件的使用 比如 tomact servlet 的容器的使用
<dependencies>
       <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>4.0.0</version>
           <!--provided       编译测试有效-->
           <scope>provided</scope>
       </dependency>
   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.tomcat.maven</groupId>
               <artifactId>tomcat7-maven-plugin</artifactId>
               <version>2.2</version>
               <executions>
                   <execution>
                       <!-- 打包阶段 -->
                       <phase>package</phase>
                       <goals>
                           <!-- 目标运行 -->
                           <goal>run</goal>
                       </goals>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

继承 聚合 中插件的使用

<dependencyManagement>
    <dependencies>
        <!-- servlet 容器
             https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <!--provided  <scope>provided</scope>      编译测试有效-->
        </dependency>
    </dependencies>
</dependencyManagement>
<!-- 1.如上写法 子项目 如果需要引用  javax.servlet-api 依赖项 则需要 在  <dependencies> 中 添加 (不需要version)-->
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- 2.没有写在 dependencyManagement 里的依赖项 则 会 自动引用 无需添加-->

<!--3 聚合的 子项目也要 加上 parent  带包聚合的项目-->
                

GIT项目demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值