Maven

为什么要学习Maven

  • 项目中的jar包杂乱,若要手动jar包,只能依靠jar命令去打包。
  • jar包的版本管理困难

    Maven的作用

    Maven可以将一个大工程拆分成若干个子工程(子模块),并通过聚合将拆分的多个子工程结合起来,在总工程的pom.xml文件中配置如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!-- 一定要配置子工程pom.xml的相对路径 -->
    <modules>
    <module>
    ../Maven1
    </module>
    <module>
    ../Maven2
    </module>
    </modules>

    Maven常见的命令

  • mvn -compile 只编译main目录中的Java文件
  • mvn -test 编译test目录中的Java文件
  • mvn -package 将项目打包成 jar/war包,存入target目录
  • mvn -install 将开发的模块放入本地仓库,供其他模块使用
  • mvn -clean 删除target目录(不删除仓库的目录)
    PS: 运行mvn命令,需要在pom.xml文件所在的目录运行

Maven Dependency 修改便捷方式

先在properties中设置变量以及变量所对应的版本号,再在dependency的version中应用变量(类似于jstl表达式)

1
2
3
4
5
6
7
8
9
10
11
12
<properties>
<x>4.0</x>
</properties>

<dependencies>
<dependency>
<groundId></groundId>
<artifactId></artifactId>
<version>${x}</version>
</dependency>
</dependencies>


Maven工程继承使用

若A->B,A继承于B
A->pom.xml

1
2
3
4
5
6
7
8
<parent>
<!-- 1加入父工程B的坐标gav -->
<groundId>org.Pvtwen.maven</groundId>
<artifactId>B</artifactId>
<version></version>
<!-- 2当前工程的pom.xml到父工程的pom.xml之间的相对路径 若A和B在同一级目录下-->
<relativePath>../B/pom.xml</relativePath>
</parent>

多个Maven项目之间的依赖

  • 将被依赖的项目通过mvn -install命令安装到本地仓库
  • 将被依赖项目的gav写入依赖项目的pom.xml中
  • 如果是在同一个package中(例如:org.lanqiao.maven),可以不用导包

    Maven中的依赖传递:A.jar->B.jar->C.jar,如果A->C.jar , 则B与C的关系必须是compile,例如 C为Junit,则B.jar的pom.xml配置信息为

    1
    2
    3
    4
    5
    6
    <dependency>
    <groundId>Junit</groundId>
    <artifactId></artifactId>
    <version></version>
    <scope>compile</scope>
    </dependency>

    为什么Maven会用到xml文件作为配置文件

    图片

    将eclipse中的项目打包成war包之后运行

    将war包放入tomcat中webapps目录下,startup.bat运行项目