maven 基本介绍及项目创建
2016-03-29 13:26:23 最后更新: 2016-03-29 14:41:38 访问数量:1932
2016-03-29 13:26:23 最后更新: 2016-03-29 14:41:38 访问数量:1932
maven 是一个优秀的跨平台服务构建工具,它能够自动化的构建整个项目,从清理、编译、测试到生成报告,再到打包部署
简单的 maven 命令就可以帮助我们处理项目构建的繁琐任务
同时,maven 可以帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制、许可证、缺陷管理等
maven 要求在没有定制之前使用如下目录结构:
目录 | 目的 |
${basedir} | pom.xml 和所有子目录的根目录 |
${basedir}/src/main/java | 项目的 java 源码 |
${basedir}/src/main/resource | 项目的资源,如配置文件等 |
${basedir}/src/test/java | 项目的测试类,如 JUnit 代码 |
${basedir}/src/test/resource | 供测试使用的资源 |
${basedir}/target/classes | 编译后的 class 文件 |
${basedir}/target | 编译后的 jar 文件或 war 文件 |
maven 的安装这里不赘述,通过官网下载安装即可
我们接下来通过 maven 命令创建一个 Hello World 项目,让我们看看大多数 IDE 为我们做了什么
首先,运行 maven 命令创建项目:
或通过参数指定 groupId、artifactId、默认包名、版本号等信息
随后,maven 给出了我们很多个项目模型供我们选择:
我们可以通过编号或者 [groupId:]artifactId 的方式查找到 maven 提供的某个模板
我们选择 maven-archetype-quickstart,如果要创建 spring 项目,则可以选择 maven-archetype-webapp
然后我们需要选择版本:
最后,再做一些 groupId、artifactId、默认包名等的信息就可以完成了,由于我们在命令中提供了这些参数,这里默认使用了这些参数作为设置项:
也可以在这里使用 -Dname=value 的格式重新配置
如上面所说,maven 在 helloword 目录下创建了下图的目录结构:
上面的项目构建中,maven 已经为我们创建了 App.java
在 helloword 目录下执行:
mvn 首先下载必要的依赖包,存储在本地库中,默认的本地库是 ~/.m2/repository 目录
下载完成后会自动运行 test 目录下的测试脚本,测试完成后则构建成功:
通过运行:
即可运行项目:
对于 webapp 项目,你需要调用下面命令来运行:
到这里,我们使用 maven 默认的方式创建了最基本的 helloword 项目,接下来,我们换一种方式来创建项目
首先,我们创建一个 pom.xml 文件:
正如 linux 下 make 命令依赖 Makefile 文件,maven 命令也依赖于 pom.xml 文件
正如上面所写,pom.xml 中定义了 POM 模型的版本(modeVersion),项目的 GroupId、ArtifactId、version 和 name
packaging 则指定了执行 package 命令时打成 war 包还是 jar 包
通过 groupId:artifactId:packaging:version 可以唯一确定一个项目,他也被称为项目的 maven 坐标
在 properties 节点下,可以设置你所需要的设置项
dependencies 节点则指定了你的项目所依赖的项目,如上面所说,指定了 groupId、artifactId、version 可以确定依赖的具体项目,scope 则指定了依赖关系的适用范围
dependencies 中的 scope 可以指定下列值:
我们在 src/main/java/com/techlog/test 目录下创建 App.java
然后在 helloword 目录下执行下面的命令编译:
或者直接运行下面的命令打包:
通过运行:
即可运行项目:
这里更推荐使用日志开头的方式构建项目,通过 mvn archetype:generate 命令构建项目模板的方法简单而快捷,并且会生成默认的 pom.xml 文件
Oracle Java社区 -- http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html
《maven 实战》
欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤