我们要开发一个Java 项目,为了保证编译通过, 通常情况下会去寻找jar包,这样很容易造成项目的臃肿, maven提供了很好的项目开发规范与工具, maven 统一管理了jar包,接下来让我们来玩玩maven吧
2.安装Maven
Maven 是Apache 基金会的顶级项目, 我们可以从http://maven.apache.org/ 下载一个apache-maven-3.0.4-bin.zip 文件,将其解压到D:/maven 目录下
这里需要配置一下环境变量:
M2_HOME=D:/maven;
MAVEN_OPTS=-Xms128m -Xmx512m
以上M2_HOME 是必要配置的, 如果想要Maven跑的快一点, 可以根据自己的情况设置MAVEN_OPTS
现在我们可以打开cmd,输入:
mvn -v
看到一下信息说明 Maven 安装成功了
Maven给我们带来最直接的帮助就是jar 包得到了统一的管理, 这些jar包存在本地仓库,位于C:.m2目录下(也可以通过maven\conf\setting.xml 修改默认地址)
实际上本地仓库可以理解为缓存, 因为项目会先从本地仓库中获取jar包, 当无法获取指定jar包的时候,本地仓库会从远程仓库中下载jar包, 并放入本地仓库中,以备将来使用, 这个远程仓库是Maven官方提供的, 可以通过访问 (http://search.maven.org/ ),通过图A-1 可以清晰的表达项目,本地仓库,远程仓库之间的关系.
我们创建一个Java Web项目,在cmd 中输入:
mvn archetype:generate
我们创建的Java Web项目,所以可以选择maven-archetype-webapp, 通过maven可以知道以下信息:
项目groupId(组织名)-可输入com.smart 域名的反转
项目artifactId(构件名)-可输入smart
项目version(版本号)-可输入1.0
项目package(包名)-可输入com.smart
也可以使用IDEA 直接创建一个maven项目,只需要选择File-New-Project,如下图所示:
当打开pom.xml, 格式化以后是这样的:
<?xml version="1.0" encoding="UTF-8"?> <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.smart</groupId> <artifactId>smart</artifactId> <version>1.0.0</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>4.11</junit.version> </properties> <dependencies> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <!--compile--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compile.version}</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <!--maven 打包时想跳过单元测试--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <!--tomcat--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/${project.artifactId}</path> </configuration> </plugin> </plugins> </build>
简单介绍一下:
modelVersion 是POM的版本号,现在是4.0.0, 默认的不需要修改
groupId,artifactId,version分别代表Maven项目的组织名,构件名,版本号,它们三个是Maven坐标
packaging表示该项目的打包方式,war表示打包为war文件,默认为jar,表示打包为jar文件
dependencies定义该项目的依赖关系
build表示与构件相关的配置
通过IDEA可以很清晰的看到POM结构图:
每个pom.xml都应该有:
Lifecycle-生命周期
Plugins-插件
Dependencied-依赖
pom.xml文件中会有一个scope作用域, 包括以下几种:
compile-默认作用域 编译 测试 运行时有效
test-测试时有效
runtime-运行时有效
provided-编译 测试有效 运行时无效
system-与provided类似 但依赖于系统资源
maven 常用的命令有:
mvn clean-清空target目录
mvn compile-编译源代码
mvn package-生成构件包 一般为jar或者war包
mvn install-将构件包安装到本地仓库
mvn deploy-将构件包部署到远程仓库
mvn tomcat:run-通过maven运行项目
mvn dependency:sources-从本地仓库获取源代码
关于maven在实际项目的实战 后续会慢慢添加,下一次我会介绍一下如何将构件发布到Maven中央仓库