`
jun0112
  • 浏览: 22207 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

目录
Maven介绍
简介
Maven资源
Maven和Ant的区别
Maven的基本功能
Maven使用
Maven的安装和配置
Maven的基本使用
实现Java项目
创建Maven项目
运行Maven项目
实现Web项目
创建Maven项目
运行Maven项目
POM文件的基本配置
POM介绍
什么是POM
快速浏览
基本设置
协作关系
POM间关系
依赖关系
继承关系
聚合关系
其他配置
其他
设置离线
安装第三方包
部署到tomcat
未讲到的内容

Maven简明课程

主要目的:方便开发人员快速上手 

1. Maven介绍

1.1. 简介

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

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

1.2. Maven资源

见官方网站; 

The 5 minute test,官方简易入门文档; 

Getting Started Tutorial,官方入门文档; 

Build Cookbook,官方的cookbook; 

POM Reference,POM文件的设置参考 

Settings Reference ,settings文件的设置参考 

Better Builds with 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容器的插件: 

  <build>
  <plugins>
  <plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>tomcat-maven-plugin</artifactId>
  </plugin>
  <plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <version>6.1.6</version>
  </plugin>
  <plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
  <source>1.6</source>
  <target>1.6</target>
  <encoding>UTF-8</encoding>
  </configuration>
  </plugin>
  </plugins>
  </build>
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文件,放置在项目的根目录下。 

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

  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>

  <!-- Build Settings -->
  <build>...</build>
  <reporting>...</reporting>

  <!-- More Project Information -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>

  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

3.2. 基本设置

3.2.1. 协作关系

<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>org.codehaus.mojo</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>
</project>
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的重要部分。 

  <dependencies>
  <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.0</version>
  <scope>test</scope>
  </dependency>
  ...
  </dependencies>
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 

复制文章中的: 

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.6.ga</version>
</dependency>

到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: 

  <parent>
  <groupId>com.easymorse</groupId>
  <artifactId>pom</artifactId>
  <version>0.1</version>
  </parent>

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文件类似: 

...
  <modules>
  <module>module-a</module>
  <module>module-b</module>
  <module>module-c</module>
  <module>foo-all</module>
  </modules>
</project>

参考文档: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文件中的属性,比如:<project><version>1.0</version></project>,引用方式:${project.version} 

settings.x:settings.xml文件中的属性,比如:<settings><offline>false</offline></settings>,引用方式:${settings.offline} 
Java System Properties:java.lang.System.getProperties()中的属性,比如java.home,引用方式:${java.home} 

自定义:在pom文件中可以:<properties><installDir>c:/apps/cargo-installs</installDir></properties>,引用方式:${installDir} 

3.3. 其他

3.3.1. 设置离线

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

<settings 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/settings-1.0.0.xsd">
  <offline>true</offline>
</settings>

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中依赖引用了: 

<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc14</artifactId>
  <version>10.2.0.3.0</version>
</dependency>

3.3.3. 部署到tomcat

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

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <user username="marshal" password="password" roles="manager"/>
</tomcat-users>

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

  <plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>tomcat-maven-plugin</artifactId>
  <configuration>
  <url>http://localhost:8080/manager</url>
  <server>myserver</server>
  <path>/mycontext</path>
  </configuration>
  </plugin>

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

<settings 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/settings-1.0.0.xsd">
  <servers>
  <server>
  <id>myserver</id>
  <username>marshal</username>
  <password>password</password>
  </server>
  </servers>
</settings>

运行打包部署,在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. 未讲到的内容
settings.xml的配置 
pom.xml的详细配置 

自定义插件的方法:http://maven.apache.org/plugins/maven-archetype-plugin/examples/archetype.html 

自定义goal的执行:<preGoal><postGoal> 
插件的查询和使用 
搭建镜像repository 
在maven中调用ant 

work/training/java/maven/get start (2008-05-28 21:07:26由marshal编辑)

分享到:
评论

相关推荐

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    ** Maven 概述** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一个统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务。Maven 3.5.2是Maven的一个稳定版本,包含了众多...

    开源工具Maven3.9.4版本压缩包

    Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...

    Maven全版本资源,Maven 3.0.5-3.8.5,每个版本包含4个文件,Maven3全资源打包下载,Maven全集

    apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-bin.tar.gz apache-maven-...

    apache-maven-3.6.0_apache-maven-3.6.0_maven压缩包_maven3.6.0下载_

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和文档。Maven 3.6.0是该工具的一个稳定版本,提供了许多改进...

    Windoiws的maven3.8.8

    **Windows环境下Maven 3.8.8的安装与配置** Maven是Apache软件基金会开发的一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和文档生成。Maven 3.8.8是Maven的一个版本,它包含了对之前版本的一些改进和...

    apache-maven-3.6.2_maven_

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和依赖关系。Maven 的核心理念是通过标准化的构建生命周期和...

    maven 3.8.8 解压安装版

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    maven3.6的安装包

    ** Maven 3.6 安装与配置指南 ** Maven 是一个强大的项目管理工具,主要应用于Java开发领域。它简化了构建、依赖管理和项目生命周期的管理,通过使用一种标准化的项目对象模型(Project Object Model,POM)来描述...

    Maven3.6.3安装与配置以及IDEA2022.2.3部署Maven的教程

    ### Maven 3.6.3 的安装与配置详解 #### 一、Maven 3.6.3 的安装步骤 **1.1 确保 Java 环境已安装** - **前提条件**: Maven 是 Java 项目构建工具,因此在安装 Maven 之前,请确保您的计算机上已经正确安装了 ...

    maven3.2.5安装包下载

    Maven最新版是款项目管理和构建自动化工具。Maven包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)。 安装...

    Mac的maven安装包apache-maven-3.6.3.zip

    在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装Apache Maven 3.6.3。 Apache Maven是一个基于项目...

    最新Maven版本:apache-maven-3.6.0

    Apache Maven 是一个强大的Java项目管理工具,它极大地简化了构建、依赖管理和项目文档的生成过程。Maven 3.6.0是该工具的一个稳定版本,提供了多项改进和新特性,旨在提高开发效率和增强项目的可维护性。 Maven的...

    超全面搭建Maven仓库

    ### 超全面搭建Maven仓库 Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。本文将详细介绍如何搭建Maven环境、配置Maven仓库以及在Eclipse中集成Maven。 #### 一、下载安装Maven...

    maven.rar apache-maven-3.5.4

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、报告和文档,通过一套统一的构建生命周期和插件系统,极大地简化了软件...

    maven3.1、maven3.2安装包、源码及eclipse整合插件

    Maven是Java开发中的一款强大的构建工具,它管理项目依赖、构建生命周期和工件发布。这里我们关注的是Maven 3.1和3.2版本的安装包和源码,以及如何将Maven与Eclipse集成的插件。下面将详细介绍这些内容。 1. Maven ...

    maven历史版本下载

    Maven是Java开发领域中不可或缺的项目管理和构建工具,由Apache Software Foundation开发并维护。它通过一套规范化的构建过程,使得Java项目管理变得简单而高效。本篇文章将深入探讨Maven的历史版本以及如何下载这些...

    MavenRunHelper.zip

    《MavenRunHelper:构建与管理Java项目的专业助手》 MavenRunHelper,正如其名,是一款专为Java开发者设计的Maven辅助工具,旨在简化Maven项目的运行和管理过程。Maven作为Java世界中广泛使用的项目管理和构建系统...

    maven资源 apache-maven-3.3.9-bin.zip

    Apache Maven 是一个强大的Java项目管理和综合工具,它简化了构建过程,通过标准化构建生命周期和依赖管理,使得开发者能够更高效地构建、测试和部署Java应用程序。Maven 3.3.9是Maven的一个稳定版本,它包含了多个...

    maven版本:apache-maven-3.5.4-bin

    Apache Maven 是一个强大的项目管理工具,它主要用于构建、管理和组织Java项目。在Java开发领域,Maven已经成为事实上的标准,因为它极大地简化了构建过程,并通过依赖管理和项目信息管理提供了标准化的构建生命周期...

    apache-maven-3.5.2

    Apache Maven 是一个强大的项目管理工具,广泛用于Java应用程序的构建、管理和依赖管理。Maven 3.5.2是该工具的一个稳定版本,专为Mac操作系统优化。在本文中,我们将深入探讨Maven的核心概念、功能以及如何在Mac...

Global site tag (gtag.js) - Google Analytics