Maven学习与使用

本文最后更新于:2021年9月29日 凌晨

概览:Maven

Maven

项目管理工具

包含:

  • POM,Project Object Model,项目对象模型
  • 一组标准集合
  • Project Lifecycle,一个项目生命周期
  • 依赖管理系统

与传统web工程的对比

传统web工程,jar包在项目中;

maven开发的项目中,jar包不在项目中。

  • maven通过jar包的坐标来引入jar包,
  • jar包存在于仓库之中
  • 多个项目共用本地仓库中的同一个jar包。

这就是依赖管理:对jar包的管理过程。

仓库

  • 本地仓库
  • 中央仓库:放置了几乎所有开源的Jar包
  • 远程仓库(私服):公司内部的,也可以从本地仓库上传到上面。

maven项目标准接口

src/main/java:核心代码

src/main/resoures:配置文件部分

src/main/webapp:页面资源等

src/test/java:测试代码

src/test/resoures:测试配置文件

Maven命令:

clean:清除target,删除本地编译的信息

compile:编译

test:main和test的代码都进行了编译,生成target。并运行所有的test

package:main和test的代码都进行了编译,生成target,并把打成的包放在这里面,<packaging>中指定打包方式

install:main和test的代码都进行了编译,生成target,并把打成的包放在这里面,并把项目打在了本地仓库。

执行:

1
mvn tomcat:run

maven生命周期Lifecycle

1
compile --> test --> package --> install --> deploy

上述是默认生命周期,生命周期就是执行后面的默认前面的内容都会被执行 。

还有一个clean就是单独的清理生命周期。


依赖管理

  • 项目对象模型POM
    • 即pom.xml
    • 包含基本的项目自身信息,项目运行所依赖的jar包信息,项目运行环境信息。
  • 依赖管理模型Dependency
    • groupId:公司组织名称
    • artifactId:项目名
    • version:版本号
    • scope:指定作用域,什么时候使用。
      • 例如:servlet的jar包本地仓库有,tomcat的环境中也有,就会有冲突,报java.lang.ClassCastException,不能被转成servlet。这时候指定作用域为<scope>provided</scope>即可。
  • 一键构建:
    • maven默认的生命周期中的每一个命令都对应了maven底层一个插件。

Maven其他配置

路径:setting –> Build –> Build Tools –> Maven –> Runner –> VM Options

VM Option: -DarchetypeCatalog=internal 。不联网时使用本地仓库

maven修改运行环境

Tomcat插件:

Maven是默认集成了一个tomcat插件的,tomcat6版本。但是如果想使用tomcat7该如何做呢?

但是貌似失效了,(20210920),主要记录一下<configuration>标签和内部的port。

1
2
3
4
5
6
7
8
9
10
11
12
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8888</port>
</configuration>
</plugin>
</plugins>
</build>

JDK插件:

1
2
3
4
5
6
7
8
9
10
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<target>1.8</target> <!--当前所有的代码将使用jdk1.8进行编译-->
<source>1.8</source> <!--编译成的class文件将使用-->
<encoding>UTF-8</encoding>
</configuration>
</plugin>


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!