Maven基础知识

Maven常用命令

# 清理
mvn clean
# 编译主程序
mvn compile
# 编译测试程序
mvn test-compile
# 执行测试
mvn test
# 打包
mvn package
# 安装 
mvn install
# 生成站点
mvn site

坐标

在Maven中,由groupid、artifactid、version来唯一确定一个Maven工程。

仓库

仓库分类

  • 本地仓库
  • 远程仓库
    • 私服
    • *仓库
    • *仓库镜像
      仓库中保存的内容:Maven工程
  • Maven自身所需要的插件
  • 第三方框架或工具的jar包
  • 我们自己开发的Maven工程

依赖

Maven解析依赖信息时会到本地仓库中查找被依赖的jar包。对于我们自己开发的Maven工程,使用mvn install命令安装后就可以进入仓库。

依赖的范围

  • compile
  • test
  • provided
依赖的范围 对主程序是否有效 对测试程序是否有效 是否参与打包 是否参与部署
compile 有效 有效 参与 参与
test 无效 有效 不参与 不参与
provided 有效 有效 不参与 不参与

compile和provided比较:compile在开发、部署、运行阶段都提供依赖,provided只在开发阶段提供依赖。

依赖具有传递性。非compile范围的依赖不能传递。

依赖排除:使用exclusions排除不需要的jar包。

依赖原则(解决工程之间的jar包冲突)

  • 路径最短者优先
  • 路径相同时先声明者优先

统一管理jar包的版本

  • 在properties标签内使用自定义标签统一声明版本号
  • 在需要统一版本的位置,使用${自定义标签名}引用声明的版本号

继承

  • 创建一个Maven工程作为父工程,打包方式为pom
  • 在子工程中声明对父工程的引用
  • 由父工程统一管理依赖,子工程添加依赖时无需指定版本

聚合

  • 一键安装各个模块工程
  • 在总的聚合工程中的pom.xml文件使用modules标签配置即可

生命周期

Maven生命周期定义了各个构建环节的执行顺序。

Maven有三套相互独立的生命周期

  • Clean Lifecycle:在进行真正的构建之前进行一些清理工作
  • Default Lifecycle:构建的核心部分,编译、测试、打包、安装、部署等
  • Site Lifecycle:生成项目报告、站点,发布站点

插件和目标

  • 生命周期的各个阶段仅仅定义了要执行的任务是什么
  • 各个阶段和插件的目标是相对应的
  • 相似的目标由特定的插件来完成

自动部署

pom.xml文件

<!-- 配置构建过程中的特殊设置 -->
<build>
    <finalName>web</finalName>
    <plugins>
        <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.2.3</version>
            <configuration>
                <!-- 当前系统中容器的位置 -->
                <container>
                    <cotainerId></cotainerId>
                </container>
                <!-- 端口号 -->
                <properties>
                    <cargo.servlet.port>8001</cargo.servlet.port>
                </properties>
            </configuration>
            <!-- 插件在什么情况下执行 -->
            <executions>
                <execution>
                    <id>cargo-run</id>
                    <phase>install</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

命令mvn deploy

Maven仓库

https://mvnrepository.com/

上一篇:利用Redisson实现分布式延时任务调度功能


下一篇:16activiti - 流程管理定义(查看流程图附件)