maven学习(1)下载和安装和初步使用(手动构建项目和自动构建项目)
1:背景
关于项目的搭建,有些人使用开发工具搭建项目,然后将项目所依赖第三方jar 复制到类路径下面,上述搭建方式没有第三方类库的依赖关系,在导入一个jar包的时候,这个jar包还可能依赖其他jar包,其他的jar包有依赖更多的jar包,所以有时候会经常碰见classnotfind错误。使用一些项目构建工具可以很好的避免这种问题。目前的项目构建工具主要有:gradle、ant、maven等。项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。
2:maven简介
apache maven是一个软件项目管理工具,基于项目对象模型pom(project object model),可用来管理项目的依赖、编译、文档等信息。使用maven构建项目的时候,项目依赖的jar包不包含在项目中,而是放置在用户目录下的.m2文件夹下面。
3:maven优点
3.1 项目标准化 maven基于约定优于配置原则,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下。它的项目构建是高度自动化,跨平台,可重用的组件,标准化的。约定的目录结构可以更方便我们日后的操作:例如:mvn test;mvn package
3.2 文档和报告 使用mvn site可以快速生成项目站点
3.3 类库管理 只要定义一个pom.xml,然后把源码放到默认的目录,maven帮我们管理jar包。maven会自动将依赖的类库下载到本地,并且下载的类库如果还依赖其他的类库,它也会自动下载过来。省去了我们下载的动作
3.4 项目打包管理 在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的test case,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。使用mvn install将编译和打包好的文件发布到本地仓库中。使用mvn deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository。
4:前期准备工作:
确保已安装jdk,并 “java_home” 变量已加入到 windows 环境变量。
5:下载maven
下载地址:
下载后,存放在磁盘中进行解压,我这边解压到c盘:
6:设置maven环境变量
设置系统环境变量:maven_home或者m2_home,内容为maven解压的绝对路径。然后将将%maven_home%\bin加入path中,并用分号与其他值隔开;
7:验证maven是否安装成功:
win+r输入cmd,进入命令行窗口,输入mvn -v。显示如下结果说明成功。要是报错的话从三个方面,1:jdk安装版本和maven匹配程度,以及jdk环境变量的配置。2:maven环境变量的配置
8:maven的初步使用(编写一个helloworld):
8.1 maven的项目约定:
helloworld(项目根目录)
|----src
| |----main
| | |----java ——存放项目的.java文件
| | |----resources ——存放项目资源文件,如spring, hibernate配置文件
| |----test
| | |----java ——存放所有测试.java文件,如junit测试类
| | |----resources ——存放项目资源文件,如spring, hibernate配置文件
|----target ——项目输出位置
|----pom.xml ----用于标识该项目是一个maven项目
8.2 手动创建项目
手动创建helloworld文件夹,然后按照目录结构依次创建目录;根目录下的pom.xml中
在d:\helloworld\src\main\java下面建立helloworld.java工程:
public class helloworld{
public static void main(string[] args){
system.out.print("hello,world!");
}
public string sayhello(string name){
return "hello "+name+"!";
}
}
在d:\helloworld\src\test\java\testhello目录下建立testhello.java,
//导入junit的包 import org.junit.test; import static junit.framework.assert.*; public class hellotest { @test public void testhello(){ hello hello = new hello(); string results = hello.sayhello("gacl"); assertequals("hello gacl!",results); } }
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">
<!--所有的maven项目都必须配置这四个配置项-->
<modelversion>4.0.0</modelversion>
<!--groupid指的是项目名的项目组,默认就是包名-->
<groupid>helloworld</groupid>
<!--artifactid指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
<artifactid>hello</artifactid>
<!--version指的是版本,这里使用的是maven的快照版本-->
<version>snapshot-0.0.1</version>
<name>hello</name>
<!--添加依赖的jar包-->
<dependencies>
<!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>4.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
8.3 使用maven编译、清理、测试、打包项目
8.3.1 编译
然后进入项目根目录运行命令行 mvn compile 进行编译, 发现多了一个 target文件夹,发现里面有class文件夹,里面有编译后的字节码文件。执行"mvn compile",maven会去*仓库下载需要的jar包,而第二次执行这两个命令时,由于所需的jar包已经在本地的仓库中存储,所以就可以直接拿来用了,这样就省去了去*仓库下载jar包的时间。
8.3.2 用maven清理项目,清理项目的命令是:"mvn clean"
进入hello项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉,
8.3.3 使用maven测试项目,测试项目的命令是:"mvn test"
进入hello项目根目录执行"mvn test"命令测试项目,如下图所示:
8.3.4 使用maven打包项目,打包项目的命令是:"mvn package"
进入hello项目根目录执行"mvn package"命令测试项目,如下图所示:
8.3.5 使用maven部署项目,部署项目的命令是:"mvn install"
进入hello项目根目录执行"mvn install"命令测试项目,如下图所示
安装成功之后,首先会在hello项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有hello-0.0.1-snapshot.jar,这个hello-0.0.1-snapshot.jar就是安装成功之后maven帮我们生成的jar文件。除此之外,在我们存放maven下载下来的jar包的仓库也会有一个hello-0.0.1-snapshot.jar,所以maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的maven仓库中,如下图所示:
8.3.6 组合使用命令
maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:
1、先清理再编译:"mvn clean compile",
"mvn clean test","mvn clean package","mvn clean install"
这些命令自行实践。
8.3.7 在别的项目中使用之前打的包
在pom.xml添加该包的依赖,然后就可以引用其中的方法。
<!--项目要使用到hello的jar包,所以在这里添加hello的jar包的依赖--> <dependency> <groupid>helloworld</groupid> <artifactid>hello</artifactid> <version>0.0.1-snapshot</version> <scope>compile</scope> </dependency>
8.4 自动创建项目
从maven模板创建一个java项目
1、使用mvn archetype:generate命令,如下所示:这告诉 maven 来从 maven-archetype-quickstart 模板创建 java 项目。如果忽视 archetypeartifactid 选项,一个巨大的 maven 模板列表将列出。这个依据个人网络,执行时间可能比较久,我的是两分多钟。
mvn archetype:generate -dgroupid={project -pockage 项目包名} -dartifactid={project -name 项目名称} -darchetypeartifactid=maven-archetype-quickstart -dinteractivemode=false
构建好的java项目的目录结构如下:maven帮我们创建的项目是一个标准的maven项目,不过目前maven只是帮我们生成了src/main/java(存放项目的源代码)和src/test/java(存放测试源代码)这两个目录,但实际项目开发中我们一般都会有配置文件,例如log4j.properties,所以我们还需要手动创建src/main/resources(存放项目开发中用到的配置文件,如存放log4j.properties等)和src/test/resources(存放测试时用到的配置文件),后面可以将创建好的工程导入进eclipse里面进行开发。
参考文章:
http://www.cnblogs.com/alanlee
http://www.cnblogs.com/xdp-gacl/tag/maven学习总结/
http://www.yiibai.com/maven/
上一篇: 这个盆子和鸡蛋真是绝配啊
下一篇: Google将对外开放.dev*域名注册