maven 基本介绍及项目创建

2016-03-29 13:26:23   最后更新: 2016-03-29 14:41:38   访问数量:1932




maven 是一个优秀的跨平台服务构建工具,它能够自动化的构建整个项目,从清理、编译、测试到生成报告,再到打包部署

简单的 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 命令创建项目:

mvn archetype:generate

 

或通过参数指定 groupId、artifactId、默认包名、版本号等信息

mvn archetype:generate -DgroupId=com.techlog.test -DartifactId=helloworld -Dpackage=com.techlog.test -Dversion=1.0-SNAPSHOT

 

 

随后,maven 给出了我们很多个项目模型供我们选择:

 

我们可以通过编号或者 [groupId:]artifactId 的方式查找到 maven 提供的某个模板

我们选择 maven-archetype-quickstart,如果要创建 spring 项目,则可以选择 maven-archetype-webapp

 

然后我们需要选择版本:

 

 

最后,再做一些 groupId、artifactId、默认包名等的信息就可以完成了,由于我们在命令中提供了这些参数,这里默认使用了这些参数作为设置项:

 

也可以在这里使用 -Dname=value 的格式重新配置

 

如上面所说,maven 在 helloword 目录下创建了下图的目录结构:

 

 

上面的项目构建中,maven 已经为我们创建了 App.java

package com.techlog.test; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }

 

 

在 helloword 目录下执行:

mvn package

 

 

mvn 首先下载必要的依赖包,存储在本地库中,默认的本地库是 ~/.m2/repository 目录

下载完成后会自动运行 test 目录下的测试脚本,测试完成后则构建成功:

 

 

通过运行:

java -cp target/helloworld-1.0-SNAPSHOT.jar com.techlog.test.App

 

即可运行项目:

 

 

对于 webapp 项目,你需要调用下面命令来运行:

mvn jetty:run

 

 

到这里,我们使用 maven 默认的方式创建了最基本的 helloword 项目,接下来,我们换一种方式来创建项目

首先,我们创建一个 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.techlog.test</groupId> <artifactId>helloworld</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>helloworld</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

 

 

正如 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 可以指定下列值:

  • test -- 仅用于测试,不包含在 classpath 目录和 jar 文件中,只有在执行 test 目标的时候,才会被加到 classpath 中
  • provided -- 提供所需的 jar 文件,但是不需要打入 war 包中
  • compile -- 默认值,任何时候都会被包含在 classpath 中

 

我们在 src/main/java/com/techlog/test 目录下创建 App.java

然后在 helloword 目录下执行下面的命令编译:

mvn clean compile

 

或者直接运行下面的命令打包:

mvn clean package

 

 

通过运行:

java -cp target/helloworld-1.0-SNAPSHOT.jar com.techlog.test.App

 

即可运行项目:

 

 

这里更推荐使用日志开头的方式构建项目,通过 mvn archetype:generate 命令构建项目模板的方法简单而快捷,并且会生成默认的 pom.xml 文件

 

Oracle Java社区 -- http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html

《maven 实战》

 

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

 






技术帖      龙潭书斋      技术分享      spring      mvn      maven      webapp      archetype      groupid      artifactid     


京ICP备2021035038号