每次遇到Maven项目的搭建,就要去思考整个流程或者去翻翻之前的项目来找回点记忆 POM文件节点配置、仓库等,这次记录下Maven目的整体搭建流程。
1.先来介绍下什么是Maven(摘自百度百科)?
Maven是Apache的一个顶级的项目:http://maven.apache.org/
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于 是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行 定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者 自定义的)插件。
进入此界面后点击What is the POM?
Quick Overview:
<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>
The Basics:
<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>org.codehaus.mojo</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
project:
POM文件的顶级元素;任何你想build的事务,Maven都会把它当作是一个Project;这些Project被定义为POM(Project Object Model);一个Project可以依赖其它的Project,一个project也可以
有多个子project组成;
modelVersion:
所使用的object model版本,为了确保稳定的使用,这个元素是强制性的。除非maven开发升级模板,否则不需要修改
groupId:
是项目创建团体和项目的唯一标志符,通常是域名倒写
如:com.google 或者 com.google.mavenproject
artifactId:
是项目artifactId唯一的基地址名,通常指的是项目名或者模块名
如:mavenproject 或者 mavenproject-core
version:
artifact的版本,通常能看见类似0.01-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本
packaging:
artifact打包的方式,如jar、war、ear等等。默认为jar。这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle
name:
表示项目的展现名,在maven生成的文档中使用
url:
表示项目的地址,在maven生成的文档中使用,通常不用
description:
表示项目的描述,在maven生成的文档中使用
dependencies:
表示依赖,在子节点dependencies中添加具体依赖的groupId、artifactId 和 version
Maven在搭建工程时主要是编写依赖,编写依赖就是从官网上复制
build:
表示build配置
parent:
表示父POM
3. Repositories---仓库
Repositories是用来储存Artifact的。如果说我们的项目产生的Artifact是一个小工具,那么Repositories就是一个仓库,里面有我们自己创建的工具,也可以储存别人造的工具,我们在项目中需要使用某种
工具时,在POM中声明dependency,编译代码时就会根据dependency去下载工具(Artifact),供自己使用。
对于自己的项目完成后可以通过mvn install 命令将项目放到仓库(Repositories)中
仓库分为本地仓库和远程仓库,远程仓库就是指远程服务器上用于储存Artifact的仓库,
本地仓库是指本机存储Artifact的仓库,对于windows机器本地仓库地址为系统用户的
。m2/repository下面。
官网仓库 地址:http://mvnrepository.com/,进入官网之后,我们先选择junit4的jar包做为测试使用,如下界面:
点击进入之后,左侧标记为时junit4的版本,根据自己的所需,去选择所需要的版本,右侧标记为下载和使用的次数,如下:
我是选择使用2.5.1版本,做为举例:
复制以下依赖完整格式内容到POM.xml,更改groupId 、artifactId为本公司的
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.5.1</version>
<scope>test</scope>
</dependency>
一个依赖(dependency)的声明可以包含以下元素:
6.通过该链接http://maven.apache.org/download.cgi ,下载并安装maven的仓库,我下载到本地磁盘为apache-maven-3.5.3-bin.zip,解压出来为apache-maven-3.5.3,
因为我是解压在D盘,所以接下来就是配置环境变量 MAVEN_HOME 、path,如下:
环境变量配置完毕后,通过黑窗口进行测试,cmd mvn -version,看是否是安装成功,如果展示的是以下界面,证明已经成功;
然后打开apache-maven-3.5.3中的conf中的settings.xml文件,去设置本地的仓库位置,我是设置在D盘
7.准备完毕之后,我们就准备使用Eclipse新建maven项目
7.1选择工作空间,如下:
7.2根据自己的项目版本,选取已安装的JDK版本,我本地版本使用的是1.7版本,如下:
7.3调整字符编码格式,默认UTF-8,及Maven本地仓库设置,上边我们配置过的Repositories,您设置的位置是在哪里,就配置在哪里就好
7.4配置完毕,新建一个maven工程,依照下列步骤进行操作:
maven工程分为java工程和web工程,目前默认选择为quickstart,是java工程
,
以下为,根据自己的项目及公司项目版本及名称去定义
新建完成后的项目:
为了进行我们下边的项目,目录结构中需要新增resources,删除App.java,新建我们自己的HelloMaven类和HelloMaven测试类,
新建自动生成测试类的快捷方法如下:先选中HelloMaven类,然后Ctrl+N,输入junit,选择JUnit Test Case,然后更换Source folder的路径到test下,再次确认Package名称是否一致
首先我们先来测试一下,我们的测试类:
点着testMa1()这个方法,右键,选择Run As,JUnit Test测试:
出现上述颜色,证明JUnit测试出现错误,更改里边的期望值为jsp,重新做测试为:
目前来讲目录结构暂时也齐全了,接下来我们来配置pom.xml文件,pom.xml内容如下:
<?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.juancash.maven</groupId>
<artifactId>maven-01</artifactId>
<version>1.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
然后点着项目名称maven-01,右键Run As选择Maven test,出现以下界面证明成功:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
根据目前以上的,Maven java项目的搭建算是结束了,以下为扩充内容:maven项目打成jar包,放置在仓库中用于新的项目,做为引用
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8.把项目打成jar包放入仓库,并新建项目去引用该jar包
点击项目maven-01项目,右键Run As选择Maven install,如果Console出现BUILD SUCCESS,证明已经成功,并查看以下位置,确认是否真的已成功
查看本地仓库:
如果以上完成,证明已经成功讲项目打成jar包。
2.新建第二个项目maven-02,并把该jar包引入,下面讲述怎么引入jar包,修改pom.xml中的配置就ok了:
然后新建一个类,去确定是否已经引入了成功
通过Console显示,证明已成功。