现在的java项目一般都是通过Maven管理jar包与版本,本身属于依赖倒置,通过maven更方便的管理jar包。
当然,在安装maven之前需要安装配置好JDK,这部分省略。
配置maven的运行环境。
第一步
首先在http://maven.apache.org/download.cgi 上找到maven安装包。解压到硬盘你乐意的位置。
然后记录maven的路径 ,例如我的是:D:mavenFileapache-maven-3.5.3
第二步
我们开始配置环境变量。总共有三个环境变量需要配置。分别是M2(运行的bin目录)、M2_HOME(运行的文件夹位置)、MAVEN_OPTS(运行的配置信息)。例如我的配置就是。
M2_HOME:D:mavenFileapache-maven-3.5.3
M2:D:mavenFileapache-maven-3.5.3in
MAVEN_OPTS: -Xms256m -Xmx512m
第三步
在你的Path环境变量下添加bin目录的路径,win7下也可以使用;%M2%代替
第四步
在CMD界面,运行 mvn --version。可查看当前maven的版本,安装成功后可知。
创建maven项目
在eclipse创建mave项目非常简单。
在项目管理的框内,右键创建 other.
搜索maven 创建maven Project。
你可以直接下一步来填写所需信息创建mavan。(我建议你先读完下面的pom讲解再创建maven)
也可以在途中选中create a simple project.来创建含有父类pom的maven.
POM讲解
POM 代表工程对象模型。它是使用 Maven 工作时的基本组建,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。
POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。
POM 也包含了目标和插件。
在创建 POM 之前,我们首先确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是工程的唯一标识。
<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>4.0.0</modelVersion> <groupId>com.dhh</groupId> <artifactId>p1802</artifactId> <version>0.0.1-SNAPSHOT</version> <name>blog</name> <description>mySelf blog</description> </project>
modelVersion:当前POM.xml的版本格式,这个是用来后台识别
groupId:公司组织表示,建议使用公司域名。也是jar包被mave打包后的存放路径
artifactId:项目名,你的当前项目名。
version:版本号。
所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
继承可以让我们避免一些不必要的通用性配置。可用CMD在项目文件夹下,运行:mvn help:effective-pom。查看父类pom的配置。
Maven生命周期
maven的生命周期一般如下:
1资源拷贝(本阶段可以自定义需要拷贝的资源)
2编译(本阶段完成源码编译)
3打包配置(根据pom创建管理jar包)
4安装(使用调用安装工程包)
当 Maven 开始构建工程,会按照所定义的阶段序列的顺序执行每个阶段注册的目标。Maven 有以下三个标准的生命周期:
clean
default(or build)
site
其中clean包含pre-clean、clean 和 post-clean 阶段。
我们执行clean操作可以直接使用工具也可以CMD在pom所在目录下执行mvn post-clean
default(or build)的生命周期阶段过多。如下表,不用细看,出错再看
生命周期阶段 | 描述 |
---|---|
validate | 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。 |
initialize | 初始化构建状态,例如设置属性。 |
generate-sources | 生成编译阶段需要包含的任何源码文件。 |
process-sources | 处理源代码,例如,过滤任何值(filter any value)。 |
generate-resources | 生成工程包中需要包含的资源文件。 |
process-resources | 拷贝和处理资源文件到目的目录中,为打包阶段做准备。 |
compile | 编译工程源码。 |
process-classes | 处理编译生成的文件,例如 Java Class 字节码的加强和优化。 |
generate-test-sources | 生成编译阶段需要包含的任何测试源代码。 |
process-test-sources | 处理测试源代码,例如,过滤任何值(filter any values)。 |
test-compile | 编译测试源代码到测试目的目录。 |
process-test-classes | 处理测试代码文件编译后生成的文件。 |
test | 使用适当的单元测试框架(例如JUnit)运行测试。 |
prepare-package | 在真正打包之前,为准备打包执行任何必要的操作。 |
package | 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。 |
pre-integration-test | 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。 |
integration-test | 处理和部署必须的工程包到集成测试能够运行的环境中。 |
post-integration-test | 在集成测试被执行后执行必要的操作。例如,清理环境。 |
verify | 运行检查操作来验证工程包是有效的,并满足质量要求。 |
install | 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。 |
deploy | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。 |
这个阶段我们执行的命令是:mvn compile
Maven Site 插件一般用来创建新的报告文档、部署站点等。执行命令为mvn site
仓库
maven仓库指的是存放文件所用的地方。分三种
本地仓库。本地自己使用。
中央仓库。项目组自己使用。
远程仓库。远程调用。
本地仓库
Maven 本地仓库是机器上的一个文件夹。它在你第一次运行任何 maven 命令的时候创建。
Maven 本地仓库保存你的工程的所有依赖(library jar、plugin jar 等)。当你运行一次 Maven 构建,Maven 会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程机器上的依赖文件。
Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>C:/MyLocalRepository</localRepository> </settings>
中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库的关键概念:
- 这个仓库由 Maven 社区管理。
- 不需要配置。
- 需要通过网络才能访问。
要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。好像已经废了不太好用
远程仓库
如果 Maven 在中央仓库中也找不到依赖的库文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
项目构建
首先我们按之前所说创建一个maven
然后我们修改pom。xml为
<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>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies> </project>
你可以看到项目自动导入了jar包
然后你加入如下代码导入servlet
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>compile</scope> </dependency>
最后导入SpringMVC的Pom.xml如下
<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>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.2.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.2.RELEASE</version> <scope>compile</scope> </dependency> </dependencies> </project>