百技培训中,做的项目中是使用maven进行构建项目,发现有些东西已经模糊了,在对maven进行总结。
目录结构
功能介绍
maven 主要有两个功能。依赖管理和一键构建,前者是为了帮助我们寻找jar包,后者是方便我们进行部署。我们首先看下我们的maven项目。
<!-- 公司组织名称-->
<groupId>org.example</groupId>
<!-- 项目名-->
<artifactId>ssm</artifactId>
<!-- 版本号-->
<version>1.0-SNAPSHOT</version>
maven项目的pom文件代表着jar包的坐标,一般进行下载时,按照本地仓库->远程仓库->中央仓库的顺序进行下载,即前者没有就到后者下载。
命令介绍
mvn clean
不可避免的我们会接手别人的项目,由于配置环境的不同,这时候我们首先就要将别人的编译信息清除。对应的也就是图中的target包。
mvn compile
这个不需要多说,就是编译我们的核心代码文件。
mvn test
这个命令除了会编译核心代码文件之外,还会编译我们的测试代码。
mvn package
这个命令除了会编译核心代码文件和编译测试代码之外,还会生成jar包或者war包(由pom文件决定)。
mvn install
包含mvn package的所有功能,另外还会将包推送到我们的本地仓库。
每一个构建项目的命令都对应了底层的插件。可以发现,以上几个命令是一种递进包含关系,也表示了maven的生命周期。在idea左侧我们可以看到。
作用域
在学习servelt的时候,如果在pom文件中像下面这样写。然后使用mvn tomcat:run启动项目并运行,会报错servlet不能被识别。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
在一键构建时我们知道,在启动Spring项目时是不需要依赖外部tomcat,也就是说maven自带有tomcat。排查的时候我们发现tomcat文件夹中是有上面的两个jar包的,所以会报错,这时候使用provided让这两个jar包只在编译时候起作用而运行时不起作用就可以解决问题。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
<dependency>
插件
在使用mvn tomcat:run时候一般是使用tomcat6,如果我们想使用tomcat7时候我们怎么改呢?
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
</configuration>
</plugin>