maven学习从0到创建一个maven项目(1)

开篇

这几天学习欲望强烈,忽然想系统好好的学习一下spring相关的东西,可是当我打开spring官方网站的时候,忽然发现,我找不到spring所有jar下载的地方了,可能是我眼拙,瞅了好久都没有找到,一切的项目开发都不再是传统的手动copy、copy jar了,所有的构建都已经换成了maven或者gradle,我忽然发现,我早已经落后了,这才不得不赶紧去maven官网好好研究一下(gradle后来再说)。

maven

maven是apache的一个软件项目管理综合工具,是建立在POM(project Object Model)基础之上,以前只知道maven的强大,却不知道maven原来是如此的强大,是那样的好用,原谅我的感慨,我只是为自己之前没有好好学习感到遗憾,又在碰到如此强大的工具的时候一种自然的惊讶。

maven能做的事情很多,可以对一个工程构建、报告、以及生成系列文档,maven管理着工程需要的所有jar到本地储存,所以又被称为maven本地仓库,用maven我们可以不用再去关心jar包之间的依赖,或者换句话,将jar包之间的依赖最大程度的交给maven来进行管理,我们有更多的时间去关心系统整个架构和业务核心的实现,为什么我要说最大依赖程度呢,后边我会解释原因。

安装maven

安装过程十分简单,maven我们可以下载免安装的版本,只需要配置系统中的环境变量就行了,如果不会,请参照这 maven安装,这里给出的链接是官网的下载链接,在链接的页面下方,就是详细配置maven说明。

PS:maven是一个开发工具,所以要求你开发的环境里必须安装有JDK,仅仅有jre是不够的。

一个简单的maven工程

先来一个简单的例子,认识一下maven的工程:我的电脑是window7,如果你的和我一样,就可以这么做:在E盘创建一个名字为mavenprojects的文件夹,当然,这里的名字你可以随便起,然后从cmd进入到这个文件夹下,输入以下maven命令:
mvn archetype:generate -DgroupId=com.maven.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这里我们先不管这行的具体含义是什么,按下回车键之后:如果你是第一次做这个maven测试的话,速度会很慢,因为maven要在网上下载所依赖的jar文件( ps:这就要求你必须处在网络环境之中了),大约几分之后,出现类似以下界面的时候,就说明我们的工程已经创建好了:



这里到我们的刚才创建的文件夹下边去看看,应该是这样的一个文件夹结构:

myapp
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mymaven
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mymaven
                    `-- app
                        `-- AppTest.java

这个文件结构是maven的标准结构,src/main/java用于存放我们的源文件,src/test/java用于存放我们测试类,其中的pom.xml是maven工程里最重要的配置文件,pom.xml即是Project Object Model 或者说POM。

pom.xml是maven工程的核心配置文件,里边的信息对于构建一个maven项目来说,是至关重要的,pom的复杂性,可以达到让人害怕的地步,但是我们没有必要对一扫其中的任何盲点,只需要有效的使用它就可以了,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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.maven.app</groupId>
  <artifactId>myapp</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>myapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

打包工程

mvn package,这是我们在打包工程时用的maven命令,简单,容易记, 需要注意的是, 我们所有的命令执行的位置都是和pom.xml所在的位置一样的。执行mvn package与上边的一个命令不同的是,上次执行命令只是生成一个工程,而这次打包过程中,需要对工程进行编译,而编译就包括了几个阶段,它们按顺序进行执行,完成maven compile的生命周期;
1、validate -----------------------------------校验
2、generate-sources----------------------生成源文件
3、process-sources-----------------------处理源文件
4、generate-resources-------------------生成资源文件
5、process-resources--------------------处理资源文件
6、compile-----------------------------------编译

这一步打包完成后,在myapp文件夹下边会有一个target文件夹出现,里边就是上边几个阶段所产生出来的文件夹,和最终打包出来的一个jar包,我们可以运行这个jar包,因为我们这个工程是按照maven的原型工程之一生成的,里边默认生成了一个类App,运行下面的命令:

java -cp target/myapp-1.0-SNAPSHOT.jar com.maven.app.App

同所有程序最开始的一样,打印结果:
Hello World!

maven 生命周期


大多数的maven的生命周期有:
1、validate 主要是校验工程的正确性和所有信息资源的可用性是否完好。
2、compile 编译工程
3、test 用合适的单元测试框架对编译的代码进行测试,测试的代码无须打包和部署
4、package 将编译的code打包,例如打成一个jar文件,如上边的例子。
5、integration-test  部署到可以运行集成测试的环境中进行处理
6、verify 检查包的有效性确认其符合质量标准
7、install 将包安装到本地资源库(又称本地maven仓库),供系统例用
8、deploy  发布完成,可以放到远程maven仓库,供别人使用

以上就是整个maven构建的默认的生命周期,总是按照这个顺序来构建完成工程。而clean和site则不属于默认的队列,mvn clean则是清除掉刚才生成的target文件夹,意思就是删除掉刚才编译打包好的资源文件。

mvn site则是根据pom.xml生成我们工程的所有信息到网页中,它们存在于target/site文件夹中。

下一篇细化所有mvn命令并注重pom.xml的应用,并利用eclipse中的maven插件构建一个应用在eclipse中的maven工程。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值