Maven 从入门到入门

242 阅读3分钟

Maven 配置

配置镜像

在settings.xml 添加如下

<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>

配置全局JDK版本

<profile>
    <id>jdk-1.8</id>
    <activation>
        <jdk>1.8</jdk>
        <activeByDefault>true</activeByDefault> <!--true,生效状态-->
    </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>

基础概念

Maven 中的坐标

  1. 向量说明
    • groupId 公司或者组织id,公司或者组织域名的倒序
      • 例如:com,atguigu.maven
    • artifactId 一个项目啊或者是项目的一个模块id,模块名称,将来作为 Maven 工程的工程名
    • version 模块的版本号
      • 例如:RSHANPSHOT 表示快照版本,正在迭代过程,不稳定的版本
      • 例如:RELEASE 表示正式版本
  2. 坐标在仓库中的位置
        <groupId>net.sf.dozer</groupId>
        <artifactId>dozer</artifactId>
        <version> 5.5.1</version>
    
    上面坐标对应jar 包在Maven 本地仓库中的位置 Maven 根目录/net/sf/dozer/dozer/5.5.1

POM 文件

<!-- project 根标签,表示对当前工程进行配置或管理-->
<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">
    <!-- modelVersion 从 Maven2 开始就固定是4.0.0, 代表当前 pom.xml 所采用的标签结构-->
    <modelVersion>4.0.0</modelVersion>
     <!-- groupId 公司或者组织开发的某个项目-->
    <groupId>com.springbootdemo</groupId>
    <!-- artifactId 代表项目下的某个模块-->
    <artifactId>springboot-demo</artifactId>
    <!-- version 代表当前模块的版本-->
    <version>1.0.0-SNAPSHOT</version>
     <!-- packaging 当前模块打包方式-->
         <!-- jar: 一个Java工程-->
         <!-- war: 一个Web工程-->
         <!-- pom: 一个管理其他工程的工程-->
    <packaging>jar</packaging>
    <!-- properties 在Maven中定义属性-->
    <properties>
       <!-- 可以是Maven提供的,也可以是自己定义的-->
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!-- dependencies配置具体的依赖信息 -->
    <dependencies>
         <!-- dependency 配置一个具体的依赖信息 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>5.0.0</version>
            <!-- scope 配置依赖范围 -->
            <scope>test</scope>
            <exclusions>
                  <!-- 排除依赖 -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                     <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

</project>

Maven 命令

运行 Maven 中构建操作相关命令,必须进入到对应项目pom.xml所在的目录执行

  • 清理操作

    mvn clean: 删除 target 目录

  • 编译操作

    mvn compile: 主程序编译,编译结果存放目录 target/classes

    mvn test-compile: 测试程序编译,编译结果存放目录 target/test-classes

  • 测试操作

    mvn test: 测试报告存放目录target/surefire-reports

  • 打包操作

    mvn package: 存放目录target

  • 安装操作

    mvn install: 本地安装后会将 pom.xml 转换成 *.pom 文件

依赖范围

  • compile 和 test 对比
参数main目录(空间)test目录(空间)开发过程(时间)部署到服务器(时间)
compile有效有效有效有效
test无效有效有效无效
  • compile 和 provided 对比
参数main目录(空间)test目录(空间)开发过程(时间)部署到服务器(时间)
compile有效有效有效有效
provided有效有效有效无效

生命周期

生命周期作用环节
Clean清理操作相关pre-clean
clean
post-clean
Site生成站点相关pre-site
site
post-site
deploy-site
Default主要构建过程validate
generate-sources
process-sources
process-resources 复制并处理资源文件,至目标目录,准备打包
compile 编译项目main目录下的源码
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 复制并处理资源文件,至目标测试目录
test-compile 编译测试源代码
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
prepare-package
package 接受编译好的代码,打包成可发布的格式,如:jar
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其他项目依赖
deploy 将最终的包复制到远程仓库,让其他开发人员共享或者部署到服务器上运行(借助插件:cargo )

POM深入

POM的四个层次

Super POM 是Maven默认POM。除非明确设置,否则所有POM都扩展 Super POM ,这意味着 Super POM 中指定的配置由您为项目创建POM继承

  • 总结
    • 超级POM:所有POM默认继承,只是有直接和间接之分
    • 父POM:这一层可能没有,可能有一层,也可能有很多层
    • 当前pom.xml配置POM:我们最多关注和最多使用的一层
    • 有效POM:隐含的一层,但是实际上真正生效的一层

POM的四个层次