`
min12605
  • 浏览: 55017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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工程的时候,使maven2在下载依赖包的同时下载其源代码包的方法:

    1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码,该命令可以单独使用,会检索pom.xml中的<dependency>依赖的包,并将其源代码都下载下来。

    2. 使用参数: -DdownloadSources=true 下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包(与  
        命令$mvn elipse:eclipse --DdownloadSources=true -DdownloadJavadocs=true)。

 

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

分享到:
评论

相关推荐

    Mybatis和Maven简单入门示例

    Mybatis和Maven是Java开发中的两个重要工具...通过这个简单的入门示例,你可以快速掌握Mybatis和Maven的基础用法,并为后续更复杂的项目开发打下基础。记得动手实践,理论与实践相结合才能更好地理解和掌握这些知识点。

    spring与maven简单入门示例2018年11月22日博客资源

    在这个"2018年11月22日博客资源"中,你将找到关于如何使用 Maven 来管理 Spring 入门程序的示例。下面我们将深入探讨这两个工具的使用和相互配合。 1. **Maven 的基本概念** - `pom.xml`:Maven 的核心配置文件,...

    maven + springmvc 入门实例

    1. **安装Maven**: Maven的安装过程相对简单,首先从Apache官方网站下载最新版本的Maven,解压到指定目录,然后配置环境变量`Maven_HOME`和`Path`,确保系统能够找到Maven的bin目录。 2. **配置Maven**: Maven的...

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心...通过这个入门级的HelloWorld实例,我们可以快速理解这两个工具的基本用法,为进一步深入学习和实践打下坚实的基础。

    maven入门到精通

    maven入门到精通 用 Maven 做项目管理 在 Java世界中我们很多的开发人员选择用 Ant来构建项目,一个 build.xml能够完成编译、测试、打包、部署等很多任务,但我们也碰到了很多的问题,如 jar文件管理混乱,各个...

    HIbernate+Maven入门demo

    本篇文章将详细介绍如何使用Hibernate和Maven进行一个简单的入门级项目搭建。 ### 1. Hibernate简介 Hibernate是Java世界中的一款主流ORM框架,它通过提供API和配置文件将Java对象与数据库表对应起来,实现了对象...

    Netty+maven的入门程序

    在本入门程序中,我们将深入探讨如何结合 Maven 和 Eclipse 创建一个简单的 Netty 项目。 首先,让我们了解 Maven。Maven 是一个项目管理和综合工具,它通过提供一组规则和标准化的构建过程来简化 Java 项目的构建...

    Maven 3 入门 -- HelloWorld

    Maven 3 入门 -- HelloWorld Maven 是一个强大的项目管理工具,主要用于构建、管理和部署Java项目。在Java开发领域,Maven 已经成为标准的构建工具,它通过简化项目构建过程,使得开发者能够专注于代码本身,而不是...

    maven快速入门笔记

    通过以上学习,你将对Maven有基本的了解,并能进行简单的项目管理。随着深入实践,你会发现Maven在自动化构建、依赖管理和项目协作方面的强大功能,极大地提高了开发效率。现在,你可以尝试创建自己的第一个Maven...

    Apache Maven入门篇(上)

    在“Apache Maven入门篇(上)”中,我们将探讨Maven的基本概念、安装步骤以及如何创建和管理一个简单的Java项目。 1. Maven的核心概念: - **POM(Project Object Model)**:POM是Maven项目的核心,是一个XML文件...

    Maven实战- 入门

    第 3 章 Maven 使用入门 16. 3.1 编写 POM 17. 3.2 编写主代码 18. 3.3 编写测试代码 19. 3.4 打包和运行 20. 3.5 使用 Archetype 生成项目骨架 21. 3.6 m2eclipse 简单使用 22. 3.7 NetBeans Maven 插件简单使用 ...

    Maven从入门到精通的吐血之作.pdf

    Maven从入门到精通;Maven——web 应用进阶——简单多模块项目;

    maven 入门demo

    ** Maven 入门指南 ** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过标准化项目构建过程,使得开发人员可以更轻松地管理依赖、构建、测试和部署项目。本教程将引导初学者了解 Maven 的...

    maven-class.md

    maven简单入门

    Maven2.09+ 入门指南

    ** Maven 2.0.9 入门指南 ** Maven 是一个强大的项目管理工具,主要应用于Java项目构建、依赖管理和项目信息管理。Maven 2.0.9 是该工具的一个版本,虽然现在已经有了更高级的版本,但对于初学者来说,它仍然是一个...

    maven+springside 开发入门

    4. 最后,参考`springside+maven(入门).doc`,这是一个针对初学者的Maven和Springside入门教程,将指导你从零开始搭建和运行一个简单的项目。 在学习过程中,不断实践是关键,通过创建自己的项目并应用所学知识,你...

    Maven3应用入门session

    **Maven3应用入门Session** 在软件开发领域,Maven是一个强大的项目管理和综合工具,尤其在Java开发中占据着核心地位。Maven3是Maven系列的第三个主要版本,它在Maven2的基础上进行了改进,提供了更高效、更稳定、...

    Maven 3 入门 -- 如何创建一个web应用程序

    ** Maven 3 入门 — 创建 Web 应用程序指南** Maven 是一款强大的项目管理和构建工具,尤其在Java开发领域广泛使用。它通过提供一套标准化的构建过程和依赖管理机制,使得开发者能够更高效地管理项目。在本文中,...

    maven 简单使用教程

    【Maven简单使用教程】 Maven是一个基于Java的构建工具,专为管理和构建Java项目而设计。它简化了项目的构建过程,通过一个统一的构建生命周期和依赖管理机制,使得项目构建更加规范和高效。Maven的最新版本为2.0.9...

Global site tag (gtag.js) - Google Analytics