`

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. 未讲到的内容

分享到:
评论

相关推荐

    Maven介绍与安装和配置

    **Maven介绍** Maven是一款强大的Java项目管理和整合工具,由Apache软件基金会开发。它引入了一个项目对象模型(Project Object Model,简称POM),通过POM文件,Maven能够理解和管理项目的构建、报告和文档生成等...

    maven介绍及配置详解

    ### Maven介绍及配置详解 #### 一、Maven概述 Maven是由Apache软件基金会支持的一款项目管理和理解工具,主要用于Java项目的构建与管理。Maven通过一个中心信息来管理项目的构建、报告和文档,大大简化了Java项目...

    Maven 介绍、安装配置及Nexus使用

    Maven 介绍、安装配置及Nexus使用

    maven的简单介绍.html

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

    Maven介绍及安装和配置Maven

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

    Maven介绍安装和配置详解

    Maven是一个广泛使用的Java项目管理和自动化构建工具,它极大地简化了构建、依赖管理和文档生成的过程。Maven的核心概念是项目对象模型(Project Object Model,简称POM),这是一个XML文件,包含了项目的元数据,如...

    maven相关工具介绍

    【标题】:“maven相关工具介绍” 【描述】:“包含如下文件:hudson-V1.doc,maven-definitive-guide_zh.pdf,Maven技术分享.ppt,全面介绍Maven” 【标签】:“maven 介绍” 【压缩包子文件的文件名称列表】:...

    Maven 使用入门.pdf

    #### Maven 介绍与优势 Maven 是一款流行的 Java 项目管理和构建工具,它通过一套标准化的方法来简化项目的构建过程。Maven 的核心价值在于它能够简化项目构建过程,使得开发者能够更加专注于业务逻辑的开发。以下...

    Maven整合SSM示例

    一、Maven介绍 Maven是一个基于项目对象模型(POM)的概念,用于管理项目的构建、报告和文档。它通过POM文件定义项目依赖、构建过程和插件,简化了项目构建和管理。Maven的中央仓库包含了大量的开源库,开发者可以直接...

    Maven培训课件.ppt

    **Maven介绍** Maven的主要功能包括: 1. **依赖管理**:Maven通过读取POM文件来管理项目的依赖关系,自动解决jar包冲突,确保所有依赖项的正确版本。 2. **构建工具**:提供了一系列的生命周期(如compile、test、...

    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 by example

    1. Maven介绍 - Maven是什么? Maven是一个项目管理工具,主要服务于Java项目的构建,它依赖于项目对象模型(POM)的概念,通过POM文件来定义项目的配置信息,如项目依赖、构建配置等。 - 基于约定优于配置的原则...

    maven制作本地宝1

    #### Maven 介绍 Maven 是一个项目管理和综合工具,主要用于 Java 项目的构建、依赖管理和项目信息管理。通过 Maven 可以自动化项目的构建过程,包括编译、测试、打包、部署等,并且能够管理项目的依赖关系,简化...

    Maven入门培训

    Maven介绍** Maven是由Apache软件基金会开发的项目管理工具,主要功能包括项目构建、依赖管理、文档生成、源码编译、测试、部署等。Maven通过POM文件统一管理项目配置,使得项目构建变得标准化,减少了重复工作,...

    springmvc maven工程

    ### Maven介绍 Maven是一个项目管理工具,它主要用于构建、依赖管理和项目信息管理。Maven通过POM(Project Object Model)文件来管理项目的构建、报告和配置。其主要功能包括: 1. **依赖管理**: 自动下载并管理...

Global site tag (gtag.js) - Google Analytics