Maven简记

构建相关命令

需要在pom.xml所在目录执行

  • mvn clean 清理
  • mvn compile 编译主程序
  • mvn test-compile 编译测试程序
  • mvn test 执行测试
  • mvn package 打包
  • mvn install 项目安装到仓库
  • mvn site 生成站点
  • mvn deploy 自动发布(需要单独的配置)

坐标(定位项目)

  • groupid: 一般是公司域名倒叙+项目名称
  • artifactid: 模块名
  • version: 版本

仓库

  • 本地仓库:当前电脑上仓库目录,为本地所有maven工程服务
  • 远程仓库
    • 私服(Nexus): 搭建在局域网中,为局域网所有maven工程服务。可以将中央仓库中的项目下载下来并保存下来
    • 中央仓库:为所有maven工程服务

      仓库中的内容

    • maven自身需要的插件
    • 第三方框架或工具的jar包
    • 自己开发的maven工程

生命周期

  • 特点:每个生命周期都是从最开始开始执行,执行到相应命令结尾处
  • default lifeCircle(大致流程顺序)
    • 处理资源文件
    • compile
    • test
    • package
    • install
    • deploy
  • clean lifeCircle
    • pre-clean: 执行在清理前完成的工作
    • clean: 移除上一次构建生成的文件
    • post-clean: 执行一些需要在clean之后立刻完成的工作
  • site lifeCircle:
    • pre-site: 执行在生成站点文档之前的工作
    • clean: 生成项目的站点文档
    • post-site: 执行一些需要在生成站点文档之后完成的工作,为部署做准备
    • site-deploy: 将生成的站点文档部署到特定的服务器上

设置默认jdk版本

进入maven/conf/目录,修改settings.xml文件的<profile>标签

1
2
3
4
5
6
7
8
9
10
11
12
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</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工程执行mvn install,将项目放入本地仓库中

    依赖范围(scope)

    • compile(默认)

      • 对主程序是否有效: YES
      • 对测试程序是否有效: YES
      • 是否参与打包: YES
      • 部署时是否有效: YES
    • test: 对测试程序有效

      • 对主程序是否有效: NO
      • 对测试程序是否有效: YES
      • 是否参与打包: NO
      • 部署时是否有效: YES
      • 例子:junit
    • provided(web工程使用的多):

      • 对主程序是否有效: YES
      • 对测试程序是否有效: YES
      • 开发时是否有效: YES
      • 部署时是否有效: NO
      • 运行时是否有效: NO
      • 例子:servlet-api.jar、jsp-api.jar

      Tips:如果在jsp翻译过来的java代码中报空指针异常,可能是jsp-api.jar的依赖范围问题。由compile修改为provided即可。

      依赖的传递性

    • 只有compile范围的依赖可以传递

    • jar包版本冲突时,maven默认使用依赖路径最短的版本

    • 依赖路径相同时,maven采用先申明优先原则。(dependency书写的顺序)

      依赖的排除

      Tips: 对当前项目和依赖此项目的项目生效

    • 1
      2
      3
      4
      5
      6
        <exclusions>
      <exclusion>
      <groupId><groupId>
      <artifactId></artifactId>
      </exclusion>
      </exclusions>

继承

父工程中统一指定依赖的版本,子工程中不指定此依赖的版本,就会自动使用父工程的版本。
Tips: 配置继承关系后,执行安装命令时要先安装父工程

  • 操作步骤:

    • 创建一个maven工程。打包方式为pom =>pom

    • 子工程中声明对父工程的引用(<project节点下>)

      1
      2
      3
      4
      5
      6
      7
      8
      <!--子工程中声明父工程-->
      <parent>
      <groupId></groupId>
      <artifactId><artifactId>
      <version></version>
      <!--以当前pom.xml为基准的父工程pom.xml文件的相对路径(可选)-->
      <relativePath></relativePath>
      </parent>
    • 将子工程中坐标与父工程坐标重复的内容删除(<project节点下>)

      1
      2
      <groupId></groupId>
      <version></version>
    • 在父工程中统一依赖管理(<project节点下>)

      1
      2
      3
      4
      5
      <dependencyManagement>
      <dependencies>
      ....
      </dependencies>
      </dependencyManagement>
    • 在子工程中删除统一管理依赖的版本号(非必须,尽量统一)

聚合

  • 作用: 一键安装模块工程

  • 配置聚合

    • 一般是配置在父工程中,也可以单独新建一个maven工程来配置
      1
      2
      3
      4
      <modules>
      <module>以当前pom.xml为基准的其他项目的相对路径</module>
      <module>../MyMavenProject</module>
      </modules>
  • 使用: 在配置了聚合的pom.xml的路径下执行mvn install即可

web工程的自动部署

  • 配置(<project节点下>)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <!--配置当前工程构建过程中的特殊设置-->
    <build>
    <!--war包名称-->
    <finalName>AtguiguWeb</finalName>
    <!--配置构建过程中需要使用的插件-->
    <plugins>
    <plugin>
    <!--专门启动servlet容器的插件-->
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.2.3</version>
    <!--针对这个插件的配置-->
    <configuration>
    <!--配置当前系统中容器的位置-->
    <container>
    <containerId>tomcat6x</containerId>
    <home>D:\DevInstall\apache-tomcat-6.0.39</home>
    </container>
    <configuration>
    <!--确认容器位置-->
    <type>existing</type>
    <home>D:\DevInstall\apache-tomcat-6.0.39</home>
    <!-- 如果Tomcat端口为默认值8080则不必设置该属性 -->
    <properties>
    <cargo.servlet.port>8989</cargo.servlet.port>
    </properties>
    </configuration>
    </configuration>
    <!--配置插件在什么情况下执行-->
    <executions>
    <execution>
    <id>cargo-run</id>
    <!--生命周期的阶段-->
    <phase>install</phase>
    <goals>
    <!--插件的目标(执行的命令)-->
    <goal>run</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
  • 使用: 进入pom.xml所在目录,执行mvn deploy即可

------------- 本文结束  感谢您的阅读 -------------
评论