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

一、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中操作, 更加方便简单。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
maven
maven构建java项目、maven配置构建项目、java maven 配置、maven java home 配置、maven配置java版本,以便于您获取更多的相关知识。

时间: 2024-09-01 08:32:05

Java的项目构建工具Maven的配置和使用教程_java的相关文章

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

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

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

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

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

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

Maven项目构建工具使用

(可知meven是我们开发过程中必不可少的一个构建工具,不过还是会有很多人不太了解如何使用,我是先接触的graidle构建工具的后来发现的其前生maven,用起来感觉差不多.) 1.检查%JAVA_HOME% 路径(毕竟maven本身就是java程序,需要JVM) 2.想要搭建maven环境自然少不了先下载maven必要文件: http://maven.apache.org/download.cgi (下载压缩包到电脑,现在一个无中文无空格的路径解压,后期避免不必要的麻烦,如:D:\maven\

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

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

Java的Spring框架中AOP项目的一般配置和部署教程_java

0.关于AOP面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP是OOP的延续. 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对

Eclipse使用maven搭建spring mvc图文教程_java

本文为大家介绍了Eclipse使用maven搭建spring mvc的详细步骤,供大家参考,具体内容如下 1. 环境配置 a). Java 1.7 b). Eclipse luna c). Maven3.2.5 d). Spring 4.1.4 2. 创建maven工程 a). 打开eclipse,file->new->project->Maven->Maven Project b). 下一步 c). 选择创建的工程为webapp,下一步 d). 填写项目的group id和art

在Java的Struts框架下进行web编程的入门教程_java

当点击一个超链接或提交一个HTML表单在Struts2 的 Web应用程序,输入所收集被发送到一个Java类称为操作控制器.当动作执行后,结果选择了一个资源来呈现响应.资源通常是一个JSP,但它也可以是一个PDF文件,Excel电子表格,或一个Java applet 窗口. 假设已经建立开发环境.现在让我们继续为第一个 "Hello World" 的 struts2 项目构建.这个项目的目的是建立一个Web应用程序,它收集用户的姓名,并显示"Hello World"

jboss配置方法简明教程_java

本文讲述了jboss配置方法.分享给大家供大家参考,具体如下: jboss-5.1.0.GA-jdk6.zip配置: 1. JDK安装后的配置: 在环境变量中添加JAVA_HOME变量,其值设置为:JDK的安装路径C:\Java\jdk6.0 在系统变量里添加CLASSPATH变量,其值设置为: .;%JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar; 然后在系统变量里找到path变量,在其值最后添加 ; %JAVA_HOME%\bin 2. 下载