`

Maven介绍

阅读更多

1. Maven介绍

1.1. 简介

java编写的用于构建系统的自动化工具。

目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本。

1.2. Maven资源

1.3. Maven和Ant的区别

Maven正在逐渐取代Ant,很多java开源软件(Spring、Struts2 ……)已经使用maven。

  • 不需要写复杂的处理脚本;
  • 声明式的类库依赖管理。

1.4. Maven的基本功能

  • 构建:比如生成class、jar、war或者ear文件
  • 生成文档:比如生成javadoc、网站文档
  • 生成报告:比如junit测试报告
  • 生成依赖类库:生成文档,说明项目多其他软件的依赖
  • 有关SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如bug管理等等
  • 发布:生成供发布的分发包,比如生成Struts2的分发包,供提交给用户使用
  • 部署:比如,web应用程序,自动部署到指定的服务器上

通过我写的商品管理的小例子,演示结合maven和svn的功能。

2. Maven使用

2.1. Maven的安装和配置

  • 从官方网站下载最新的Maven分发包http://maven.apache.org/download.html,当前为2.0.9;

  • 解压缩到本地;
  • 配置maven, 将maven/bin目录设置到windows环境变量Path中
  • 检查maven是否安装成功, 在命令行中执行
    mvn -version

2.2. Maven的基本使用

Maven的基本使用介绍通过命令行编写简单的java和web项目。

2.2.1. 实现Java项目

通过maven在命令行下创建普通java项目,也就是main方法执行的项目或者jar文件的类库。

2.2.1.1. 创建Maven项目

执行:

mvn archetype:generate

在交互界面中:

  • Choose a number: 回车即可,也就是选择15
  • Define value for groupId: 输入组织id,比如easymorse.com
  • Define value for artifactId:输入项目名称,比如helloworld
  • Define value for version: 输入版本号,可以直接回车,默认是1.0-SNAPSHOT
  • Define value for package: java的包名,比如com.easymorse
  • 然后回车表示确认上述输入即可。

观察helloworld目录(Define value for artifactId输入的项目名称)下生成的文件和目录:

  • 项目构建文件: pom.xml
  • 代码框架: src\main\java\com\easymorse\App.java
  • 测试代码: src\test\java\com\easymorse\AppTest.java

2.2.1.2. 运行Maven项目

命令行进入helloworld目录Define value for artifactId输入的项目名称)。

项目打包

mvn package

检查命令生成了什么?

  • target目录
  • 编译了代码
  • 编译了测试代码
  • 使用junit测试并生成的报告
  • 生成代码的jar文件

运行打包的jar文件:

java -cp  target\helloworld-1.0-SNAPSHOT.jar com.easymorse.App

编译源程序

mvn compile

编译并测试

mvn test

清空生成的文件

mvn clean

将maven项目转化为eclipse项目

命令行运行:

mvn eclipse:eclipse

打开eclipse,菜单选择:file>import>general>existing projects into workspace,在对话框中选中目录,导入即可。

如果要清除有关eclipse项目的配置信息:

mvn -Dwtpversion=1.0 eclipse:clean

联合使用

mvn eclipse:clean clean

2.2.2. 实现Web项目

通过maven在命令行下创建java web项目。

2.2.2.1. 创建Maven项目

在命令行输入,这一步和创建java项目类似:

mvn archetype:generate

交互步骤说明:

  • Choose a number: 回车即可,也就是选择18,这里和java普通项目不一样
  • Define value for groupId: 输入组织id,比如easymorse.com
  • Define value for artifactId:输入项目名称,比如helloworld
  • Define value for version: 输入版本号,可以直接回车,默认是1.0-SNAPSHOT
  • Define value for package: java的包名,比如com.easymorse
  • 然后回车表示确认上述输入即可。

需要在pom.xml文件中增加servlet容器的插件:

        
                
                        
                                org.codehaus.mojo
                                tomcat-maven-plugin
                        
                        
                                org.mortbay.jetty
                                maven-jetty-plugin
                                6.1.6
                        
                        
                                maven-compiler-plugin
                                
                                        <source style="word-wrap: break-word;"></source>1.6
                                        1.6
                                        UTF-8
                                
                        
                
        
  • tomcat插件
  • jetty插件
  • 编译插件的配置

repository目录的作用

repository的位置,在用户目录的.m2目录下。

repository目录的作用,对依赖类库的缓存。

2.2.2.2. 运行Maven项目

项目打包

mvn package

启动tomcat

mvn tomcat:run

启动jetty

mvn jetty:run

转化为eclipse项目

mvn -Dwtpversion=1.5 eclipse:eclipse

这样生成wtp插件的web项目。

打开eclipse,菜单选择:file>import>general>existing projects into workspace,在对话框中选中目录,导入即可。

另外,需要在eclipse里创建一个classpath变量,名称为:M2_REPO,值为系统用户下.m2/repository目录。

 

3. POM文件的基本配置

3.1. POM介绍

3.1.1. 什么是POM

Project Object Model,项目对象模型。

通过xml格式保存的pom.xml文件。

作用类似ant的build.xml文件,功能更强大。

该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

3.1.2. 快速浏览

一个完整的pom.xml文件,放置在项目的根目录下。

<?XML:NAMESPACE PREFIX = "[default] http://maven.apache.org/POM/4.0.0" NS = "http://maven.apache.org/POM/4.0.0" ?>

  4.0.0

  
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...

  
  ...
  ...

  
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...

  
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...

3.2. 基本设置

3.2.1. 协作关系

  4.0.0

  org.codehaus.mojo
  my-project
  1.0
  war

  • groupId : 组织标识,例如:org.codehaus.mojo,在M2_REPO目录下,将是: org/codehaus/mojo目录。
  • artifactId : 项目名称,例如:my-project,在M2_REPO目录下,将是:org/codehaus/mojo/my-project目录。
  • version : 版本号,例如:1.0,在M2_REPO目录下,将是:org/codehaus/mojo/my-project/1.0目录。
  • packaging : 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par

3.2.2. POM间关系

3.2.2.1. 依赖关系

依赖关系列表(dependency list)是POM的重要部分。

  
    
      junit
      junit
      4.0
      test
    
    ...
  
  • groupId , artifactId , version :
  • scope : compile(default),provided,runtime,test,system
  • exclusions

如何查到依赖的类库?

一般可以通过这个网站:http://www.mvnrepository.com

比如查询hibernate,可以找到结果列表中的hibernate类库条目。

点击:http://www.mvnrepository.com/artifact/org.hibernate/hibernate,

选择版本,比如3.2.6ga,即:http://www.mvnrepository.com/art ... /hibernate/3.2.6.ga

复制文章中的:

    org.hibernate
    hibernate
    3.2.6.ga

到pom.xml文件中即可。

是否还需要找到hibernate依赖的pom?

不需要,hibernate也会有pom,maven会通过它的pom自动找到它依赖的类库。

3.2.2.2. 继承关系

继承其他pom.xml配置的内容。

maven提供了一个类似java.lang.Object的顶级父pom.xml文件。

可以通过下面命令查看当前pom.xml受到超pom.xml文件的影响:

mvn help:effective-pom

创建一个各种项目可复用的pom.xml文件:http://easymorse.googlecode.com/svn/trunk/pom/pom.xml

部署要复用的pom.xml文件:

mvn install

在自己的pom文件中继承上述pom:

        
                com.easymorse
                pom
                0.1
        
3.2.2.3. 聚合关系

用于将多个maven项目聚合为一个大的项目。

比如目录结构如下:

.
|-- pom.xml
|-- module-a
    `-- pom.xml
|-- module-b
    `-- pom.xml
|-- module-c
    `-- pom.xml
|-- foo-all
    `-- pom.xml

 

那么总的pom.xml文件类似:

...
    
        module-a
        module-b
        module-c
        foo-all
    

参考文档:http://maven.apache.org/plugins/maven-eclipse-plugin/reactor.html

原文示例有误,见:modules.rar

 

3.2.3. 其他配置

maven的属性,是值的占位符,类似EL,类似ant的属性,比如${X},可用于pom文件任何赋值的位置。

有以下分类:

  • env.X:操作系统环境变量,比如${env.PATH}
  • project.x:pom文件中的属性,比如:1.0,引用方式:${project.version}

  • settings.x:settings.xml文件中的属性,比如:false,引用方式:${settings.offline}

  • Java System Properties:java.lang.System.getProperties()中的属性,比如java.home,引用方式:${java.home}
  • 自定义:在pom文件中可以:c:/apps/cargo-installs,引用方式:${installDir}

3.3. 其他

3.3.1. 设置离线

在.m2目录下创建settings.xml文件(如果没有的话)

        true

3.3.2. 安装第三方包

经常有第三方包,因为一些原因,在网上repository上没有,需要自己动手安装。

比如sun某些版本的jar文件,比如oracle的驱动。

已oracle驱动程序为例,比如驱动路径为c:/driver/ojdbc14.jar,是10.2.0.3.0版本

在该网址能够查到:http://www.mvnrepository.com/artifact/com.oracle/ojdbc14 artifactId和groupId。

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=c:/driver/ojdbc14.jar

这样就可以在pom中依赖引用了:

    com.oracle
    ojdbc14
    10.2.0.3.0

3.3.3. 部署到tomcat

tomcat配置有管理权限的用户:conf\tomcat-users.xml

  
  

 

在pom文件的tomcat插件中添加:

                        
                                org.codehaus.mojo
                                tomcat-maven-plugin
                                
                                        http://localhost:8080/manager
                                        myserver
                                        /mycontext
                                
                        

 

在.m2/settings.xml文件中增加:

        
                
                        myserver
                        marshal
                        password
                
        

运行打包部署,在maven项目目录下:

mvn tomcat:deploy

然后访问:http://localhost:8080/mycontext/ 即可。

撤销部署:

mvn tomcat:undeploy

启动web应用:

mvn tomcat:start

停止web应用:

mvn tomcat:stop

重新部署:

mvn tomcat:redeploy

部署展开的war文件:

mvn war:exploded tomcat:exploded

3.3.4. 未讲到的内容

分享到:
评论

相关推荐

    nexus搭建maven介绍.doc

    nexus搭建maven介绍.doc

    maven的简单介绍.html

    ### 一、Maven是什么 Maven是一款基于服务Java平台的自动化构建工具 **构建**就是以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去生产一个可以运行的项目的过程 ### ...

    Maven介绍及安装和配置Maven

    这里面有Maven的下载路径及环境配置的步骤等等,为之后做项目blog做好铺垫。如果和我有相同爱好的可以下载看看。

    Maven介绍与安装和配置

    Maven 简介 Maven 是一款基于 Java 平台的项目管理和整合工具,它将项目的开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需要做一些简单的配置,Maven 就可以自动完成项目的编译、测试、打包、发布以及...

    Maven介绍及应用

    Maven基本介绍及应用,Maven主要服务于基于java平台的项目构建、依赖管理、项目信息管理

    Maven介绍安装配置坐标依赖等等

    Maven简介,maven与ant比较,windows下安装配置,坐标依赖,仓库,部署第三方构建

    Maven介绍安装和配置详解

    Maven是一个自动化构建工具,主要用于Java项目的构建和管理。它使用一种基于项目对象模型(POM)的概念,使得开发者能够使用一种统一的方式来管理项目的构建、报告和文档。 以下是Maven的一些主要特点和功能: 1. ...

    maven介绍及配置详解

    maven详解

    项目管理与SSM框架——Maven学习与案例练习

    此文章包含Maven介绍与安装、Maven在工程开发中的相关配置、Maven如何进行工程测试、Maven的以来冲突调节原则、Maven的聚合开发,以及用一个简单的实操案例对Maven进行练习。 适用于任何学习项目管理与SSM框架中,...

    maven的优缺点 项目

    maven介绍: Eclise: 缺点: Jar包: 版本管理,解决jar包冲突:删除老的jar包,保留新的jar包 不同的项目,jar包要复制一份;Users Library 羡慕yum的好处,安装软件,自动下载,自动验证,自动安装,自动测试;镜像网站 ...

    高效构建Java应用:Maven入门和进阶

    - [1.1 Maven介绍](#11-Maven介绍) - [1.2 Maven主要作用理解](#12-Maven主要作用理解) - [1.3 Maven安装和配置](#13-Maven安装和配置) - [二、基于IDEA的Maven工程创建](#二基于IDEA的Maven工程创建) - [2.1...

    Maven入门巨无霸视频教程(2.24G)

    任亮系列-maven介绍.mp4202.任亮系列-maven架构分析.mp4303.任亮系列-maven安装和配置.mp4404.任亮系列-maven的第一个案例.mp4505.任亮系列-maven的第二个案例.mp4606.任亮系列-maven的eclipse的maven插件安装.mp...

    maven基础入门教程

    maven 入门教程PDF,包括maven介绍,配置,项目创建,eclipse创建maven项目等

    Maven介绍文档

    maven是一个跨平台的项目管理工具。 作为Apache组织中一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建,依赖管理,项目信息管理。无论是小型的开源类库项目,或者是大型的企业级应用,无论是传统的...

    自己做的一个maven的ppt资料

    自己做的一个关于maven介绍的ppt 总体介绍了一下maven 想迅速了解maven 的可以看看

    Maven入门培训

    Maven3入门培训 Maven介绍、安装、常用命令 Eclipse下Maven项目开发

    Maven介绍和搭建

    本书将介绍Maven这一跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是...

    任务一 项目介绍与后台系统搭建.md

    maven介绍

    maven eclipse 培训教程

    Maven_介绍培训.pptx Maven学习指南.pdf Maven实战.doc Maven实战.pdf Maven构建并管理Flex项目入门.pdf Maven简单实用教程.docx OTNVD_WebLogicServerDevelopment_CN.pdf 《Maven实战》(国内首本Maven著作)(Maven的...

Global site tag (gtag.js) - Google Analytics