Java的项目构建工具Maven的配置和使用教程

一、Maven是什么

Maven是一个用java开发的项目构建工具, 它能使项目构建过程中的编译、测试、发布、文档自动化, 大大减轻了程序员部署负担。

二、安装Maven

安装maven非常简单,访问Maven官方页下载即可:http://maven.apache.org/download.cgi
下载完后配置M2_HOME环境变量, 然后终端运行mvn --version, 看到正确的输出提示,Maven就安装完成了。

三、Maven基本概念
Maven的核心思想是POM, 即Project Object Model(项目对象模型)。POM文件是以XML文件的形式描述一个Maven项目所用到的资源(源码、依赖、测试等)。下图描述了POM文件的结构, 以及Maven是如何调用POM文件的。

当执行一条Maven命令时, 会传入一个pom文件, Maven会在该pom里面的描述的资源上执行

POM文件:

<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/xsd/maven-4.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>

modelVersion是POM模型版本, 4.0.0支持Maven2和3
Maven Coordinates(Maven坐标)

(1)groupId: 它是一个组织或者项目的唯一ID, 大多数情况下会使用项目的java包的根名作为groupID, 例如com.pastqing

(2)artifactId:它是正在构建的项目名称, 例如一个支付系统artifactId是web-pay。artifactId 是Maven仓库中groupId目录下的子目录名

(3)version:顾名思义项目发行的版本号

以上三项都是构建结果名称的一部分, 在项目构建后会生成一个jar包,位于Maven仓库的路径就是MAVEN_REPO/com/pastqing/web-pay/1.0/web-pay-1.0.jar

四、一个用Maven构建的Hello World java项目

利用Maven插件archetype构建一个项目:
在终端中打开工作目录
运行命令:

mvn archetype:generate

, 第一次运行时比较慢,原因是第一次需要从Maven中央仓库中下载相关项目原型。下载完毕后,会选择项目模型,以及输入groupId, artifactId,version等,构建完毕后会有成功提示。
打包项目:切换到项目根目录,运行mvn package。打包成功之后,项目会生成一个target文件夹,里面有生成好的jar文件和class文件。
运行jar文件:

java -cp target/helloWorld-1.0-SNAPSHOT.jar com.pastqing.App

至此一个最简单Maven构建的java项目就完成了。

五、一个用Maven构建的java-web项目

生成一个web项目与生成java项目基本类似,只是用的模型不同而已。这里不再阐述。下面我们具体说说如何使用Tomcat或者jetty插件运行web项目。这里我们以tomcat举例。

Maven Tomcat插件安装:  http://tomcat.apache.org/maven-plugin-2.2/ 
我们将如下插件信息加入到web项目中的POM文件中

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat6-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>

这样我们集成了这个tomcat的Maven插件, 只需要一个命令就可以部署、启动服务了。命令如下:

mvn tomcat:run

(tomcat6)

mvn tomcat7:run

(tomcat7)

使用tomcat Maven插件自动部署到外部tomcat
以上自动部署,会使用Maven内嵌的Tomcat, 下面我们修改POM文件, 让项目部署到外部的Tomcat中。

修改项目POM文件,添加服务器配置信息

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
  <url>http://localhost:8080/manager/text</url>
  <server>tomcat7</server>
  <username>admin</username>
  <password>admin</password>
</configuration>
</plugin>

其中server, username, password的值与%Maven_HOME中的setting.xml中的server, username, password一一对应。

启动外部tomcat, 运行命令mvn tomcat7:redeploy

六、如何用Maven构建多模块项目

1.父POM

所有的Maven pom文件都继承自一个父POM, 如果没有指定父pom, 则该pom文件继承自根POM。pom文件的集成关系如下图所示:

可以让一个pom文件显式地继承另一个pom文件。这样,可以通过修改公共父pom文件的设置来修改所有子pom文件的设置。这里我们使用parent标签来定义父pom。下面我们具体搭建一个多模块Mavne项目

2.构建项目目录结构

我们创建一个maven-web项目, 名字叫EducationCloud, 接下来我们在项目目录下创建几个文件夹用来划分我们的模块。它们分别是Education-parent(父模块), Education-core(业务), Education-entity(实体), Education-web(web服务)

目录的划分可以根据需要进行, 我的划分如上

3.修改pom文件

我们用module标签来进行划分模块。打开根目录下的pom文件, 添加moudle标签。

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.EducationCloud</groupId>
  <artifactId>EducationCloud</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
    <module>Education-parent</module>
    <module>Education-core</module>
    <module>Education-entity</module>
    <module>Education-web</module>
  </modules>
  <name>EducationCloud</name>
</project>

这里我们说下packaging标签:最常见的就是打包为jar, war了。任何一个Maven项目都需要定义pom文件中的packaging元素, 如果不声明该元素, 则默认打包为jar, 如果定义值为war那么就打包为war包。如果值为pom,那么什么包都不生成(通常用于父模块)。

给各个模块添加parent标签:
parent标签用来定义父POM的坐标位置的, 定义如下:

<parent>
  <groupId>com.EducationCloud</groupId>
  <artifactId>EducationCloud-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath></relativePath>
</parent>

groupId, aritfactId, version是常规表示父pom位置信息的元素, relativePath是表示父pom位置的相对路径, 默认为../pom.xml, 这里需要注意的是groupId, aritfactId, version必须与父pom文件中的对应起来

使用dependencyManagement管理项目所有依赖
为了统一管理依赖,我们在父项目模块的pom文件中使用dependencyManagement来声明项目的所有依赖, 这样在其他的子项目中引用依赖时就可以省略版本号的编写, 修改起来也很容易。
编写**父项目模块**educationCloud-parent的pom文件, 添加如下:
使用pluginManagement管理项目中的Maven插件
为了统一管理项目中的Maven插件, 如Maven编译插件, 打包插件等及其配置信息, 在父项目 pom文件中添加pluginManagement来管理, 这样在所有子模块中引用的插件都会统一处理, 添加如下:

<pluginManagement>
  <plugins>
  <!-- complile插件的配置 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-complier-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
      </configuration>
    <plugin>
  </plugins>
</pluginManagement>

上面我们添加了maven编译插件的配置,用jdk1.7编译, 保存后我们可以在各个子模块的Effective pom中看到相应的修改。

使用properties标签定义常量:
我们将各个依赖的版本号定义为不同的常量,这样方便以后的修改:

<properties>
  <jdkVersion>1.7</jdkVersion>
  <servletVersion>3.1.0</servletVersion>
  <mysqlVersion>5.1.34</mysqlVersion>
  <junitVersion>4.12</junitVersion>
  <defaultEncoding>UTF-8</defaultEncoding>
</properties>

引用时用${jdkVersion}的形式引用即可。

注,以上操作均可在IDE中操作, 更加方便简单。

(0)

相关推荐

  • maven学习-初窥门径

    最近在一个公司实习,由于刚出校门对公司开发流程还是不太清楚.对Maven知之甚少,最近我就在恶补Maven. Maven定义 Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑. 当你使用 Maven 的时候

  • 配置pom.xml用maven打包java工程的方法(推荐)

    最近由于项目需要,研究了一下maven的打包,项目要做到 1,生成3个目录/lib,/conf,/bin目录 2,把所有的jar目录编译.拷贝到/lib目录(包括maven的jar包和lib目录下的jar,以及编译的jar包) 3,把所有的启动脚本从工程根目录拷贝到/bin目录 4,把所有的配置文件从src/main/resources拷贝到/conf 下面是配置的pom.xml,我把相关的配置都加了注释,一看就能明白,把build节点拷贝到你们的项目中,就基本可以用了:) <project x

  • maven搭建java ee项目图文教程

    一.开发环境 jdk1.7  tomcat7 eclipse-jee-luna-R-win32 maven2.2.1 二.搭建步骤 1.点击File->New->Other,选择maven project 2.选择maven project,点击Next,,而后再点击next,进入如下界面 如图选择最后一个,点击next 3.看到以下界面 输入Group Id跟Artifact Id,点击finish完成基本创建 4.创建好的项目结构如图所示(Java视图) 如果是Java EE视图,看到的项

  • Java的项目构建工具Maven的配置和使用教程

    一.Maven是什么 Maven是一个用java开发的项目构建工具, 它能使项目构建过程中的编译.测试.发布.文档自动化, 大大减轻了程序员部署负担. 二.安装Maven 安装maven非常简单,访问Maven官方页下载即可:http://maven.apache.org/download.cgi 下载完后配置M2_HOME环境变量, 然后终端运行mvn --version, 看到正确的输出提示,Maven就安装完成了. 三.Maven基本概念 Maven的核心思想是POM, 即Project

  • Maven实现项目构建工具

    目录 1.Maven介绍 1.1Maven是什么 1.2为什么要使用maven 2.Maven安装 2.1下载Maven: 2.2解压并配置 2.3编辑Maven环境变量 3.Maven配置 3.1仓库类型 3.2本地仓库配置 3.3远程镜像配置 4.Maven常用命令 4.1 通过命令来构建项目 4.2 对项目进行打包 4.3 将项目安装到本地仓库 1.Maven介绍 1.1Maven是什么 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件

  • Scala项目构建工具sbt和IntelliJ IDEA环境配置详解

    1 Scala 安装 1.1 Windows (1)安装 Java 进入网址 https://www.oracle.com/java/technologies/javase-jdk15-downloads.html ,下载文件 jdk-15.0.1_windows-x64_bin.exe 运行下载好的文件,选择安装路径,以 E:\Program Files\Java\jdk-15.0.1\ 为例 配置环境变量( Windows 特有): 计算机 -- 右键 -- 属性 -- 高级系统设置 --

  • 基于Node.js的JavaScript项目构建工具gulp的使用教程

    npm install gulp --save-dev 什么是gulp? gulp是新一代的前端项目构建工具,你可以使用gulp及其插件对你的项目代码(less,sass)进行编译,还可以压缩你的js和css代码,甚至压缩你的图片,gulp仅有少量的API,所以非常容易学习. gulp 使用 stream 方式处理内容.Node催生了一批自动化工具,像Bower,Yeoman,Grunt等. gulp和grunt的异同点 易于使用:采用代码优于配置策略,Gulp让简单的事情继续简单,复杂的任务变

  • Java+Spring+MySql环境中安装和配置MyBatis的教程

    1.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介       MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等"一站式"ORM解决方案而言,Mybatis 是一种"半自动化"的O

  • Node.js的项目构建工具Grunt的安装与配置教程

    Grunt 基于 Node.js ,用 JS 开发,这样就可以借助 Node.js 实现跨系统跨平台的桌面端的操作,例如文件操作等等.此外,Grunt 以及它的插件们,都作为一个 包 ,可以用 NPM 安装进行管理. 所以 NPM 生成的 package.json 项目文件,里面可以记录当前项目中用到的 Grunt 插件,而 Grunt 会调用 Gruntfile.js 这个文件,解析里面的任务(task)并执行相应操作. 安装 Grunt-cli 其实是安装 Grunt-cli ,这里安装Gr

  • Java使用自动化部署工具Gradle中的任务设定教程

    tasks 下面的代码展示了三个Gradle task,稍后会讲解这三者的不同. task myTask { println "Hello, World!" } task myTask { doLast { println "Hello, World!" } } task myTask << { println "Hello, World!" } 我的目的是创建一个task,当它执行的时候会打印出来"Hello, World

  • Java Maven构建工具中mvnd和Gradle谁更快

    目录 1.mvnd 简介 2.Gradle 简介 2.1 Gradle 优点简述 3.Gradle 使用 3.1 更换 Gradle 为国内源 3.2 项目依赖文件对比 3.3 settings.gradle VS build.gradle 3.4 打包项目 4.mvnd 5.性能对比 5.1 Maven 打包性能 5.2 mvnd 打包性能 5.3 Gradle 打包性能 6.扩展:Gradle 打包文件存放目录 总结 前言; Maven 作为经典的项目构建工具相信很多人已经用很久了,但如果体

  • 一文掌握Java开发工具Maven(简单上手)

    Maven 如果作为一个Java程序员,那么在日常的开发过程中,maven是很常见的项目构建工具.maven可以极大的提高我们的开发效率,帮助我们简化开发过程中一些解决依赖和项目部署的相关问题,所以学习掌握maven的相关知识是非常有必要的. 本文从入门安装开始,逐步深入讲解maven的相关知识. 1.安装maven 首先我们需要准备好安装包,这里推荐在官网下载:maven官网下载地址 我这里下载的是3.8.1版本的maven,不同版本的maven配置过程基本是一样的. 1.1 Windows安

  • 使用IntelliJ IDEA 15和Maven创建Java Web项目(图文)

    1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工作,其常用命令如下: - mvn compile - mvn test - mvn clean - mvn package - mvn install            //把新创建的jar包安装到仓库中 - mvn archetype:generate //创建新项目 中央工厂URL:http

随机推荐