一、Maven的简介
(一)、什么是Maven
Maven是apache下的开源项目,项目管理工具,管理java项目。
1、项目对象模型(Project Object Model)
POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包,本工程的坐标、打包运行方式。
2、依赖管理系统(基础核心)
maven通过坐标对项目工程所依赖的jar包统一规范管理。
3、maven定义一套项目生命周期、清理、初始化、编译、测试、报告、打包、部署、站点生成。
4、maven管理项目生命周期过程都是基于插件完成的
5、一组标准集合
强调:maven工程有自己标准的工程目录结构、定义坐标有标准
(二)、Maven仓库
1、中央仓库
包含日常开发所常用的jar包,由专业团队(maven团队)统一维护。中央仓库的地址:http://repol.maven.org/maven2/
2、本地仓库
相当于缓存,工程第一次会从远程仓库(互联网)去下载jar包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
3、私服
在公司内部架设一台私服,其他公司架设一台仓库,对外公开。二、Maven环境搭建
(一)、Maven下载
可以到maven的官网下载
http://maven.apache.org/download.cgi
(二)、本地仓库配置
1、拷贝本地仓库
将资料中的reposity_ssh.zip解压到 D盘
2、配置本地仓库
打开maven的安装目录中conf/settings.xml文件,在这里配置本地仓库。
< localRepository >D:\reposity_ssh< /localRepository >
这里的意思就是配置本地仓库的目录为D:\reposity_ssh
(三)、eclipse配置Maven
1、配置Maven的安装目录
进入eclipse,选择菜单windows-Preferences,在左侧的树状导航中
点击add按钮,弹出窗口后选择maven的安装目录
然后点击Apply
2、配置User Stetrings
选择左侧树形导航的User Settings,选择Maven目录下conf下的settingsxml然后点击Update Settings、Reindx和Apply按钮
(四)、重建本地仓库索引
选择菜单window->showView
选择Rebuild Index重新创建索引
三、Maven入门
(一)、创建工程
1、选择菜单 File->new->Other
选择Maven下的Maven Project Next
2、选中下图红框部分的复选框(跳过骨架),next
3、定义工程坐标
maven对所有工程管理基于坐标进行管理。
坐标包括:
Group Id:项目的名称,项目名称以域名的倒序,比如com.baidu.mavendemo
Artifact Id :模块名称(子项目名称)
Version:模块的版本,snapshot(快照版,没有正式发行)、release(正式发行版本)
输入后,Finish。完成后如下图
工程目录结构说明
project
/src/main/java 主体程序java源文件(不要放配置文件)
/src/main/resources 主题程序所需要的配置文件(不要放java文件)
/sec/test/java 单元测试程序java文件
/src/test/resources 单元测试程序所用的配置文件
/target 编译输出目录
pom.xml Maven进行工作的主要配置文件
4、编写代码
(1)、在 /src/main/java目录下创建com.baidu.mavendemo
(2)、在包com.baidu.mavendemo下创建HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
(二)、设置编译版本
我们现在的Maven工程默认的是JDK1.5,我们需要将编译版本改成JDK1.7
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
将上边的配置信息黏贴到pom.xml中。
点击工程右键Maven->Update Project
弹出窗口后OK操作后,编译版本改为1.7
(三)、添加依赖
右键点击工程Maven->Add Dependency
添加后打开pom.xml,发现多了以下信息
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.7.Final</version>
</dependency>
</dependencies>
再看看工程下的Maven Dependecies下又多了很多jar包
我们只加了一个hibemate的核心包,为什么会多出这么多jar包?
这是因为hibemate的核心包本身又会依赖其他的jar包,所以导入hibemate包自动会添加hibemate所依赖的包。·
(四)、常见命令
maven通过命令对工程进行清理、编译、测试、打包、部署。
点击工程右键,Run As(或Debug As) ->Maven Build
常用命令如下:
compile:编译
clean:清理,将target下的class文件清理
test:执行单元测试类,执行src/test/java下的类
package:将java工程打成jar、war
install:安装命令,将工程的jar发布到本地仓库
发布到仓库,目录按照本工程定义的坐标生成目录
扩展:
其实我们所执行的这些命令是对maven原生命令的封装,我们可以在命令提示符下直接通过这些命令来对代码进行编译打包等操作,格式如下:
mvn命令名称 运行不调试
mvnDebug 命令名称 调试运行
我们要在命令提示符下执行maven命令必须配置下面俩个环境变量
MAVEN_HOME D:\apache-maven-3.39
PAHE %MAVEN_HOME%\bin
四、创建SSH2工程
(一)、创建war工程
1、选择菜单File->new->Other
选择Maven下的Maven Project:next
2、选中下图红框部分的复选框,next
3、定义工程坐标
注意打包方式选择war工程
4、手动添加web.xml
(1)在src/main/webapp目录下手动创建WEB-INF目录
(2)将资源文件夹下的web.xml拷贝至WEB-INF目录
5.添加插件
将下列配置拷贝至pom.xml
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
点击工程右键Maven->Update Project
6、在pom.xml中添加servlet-api
因为我们创建的是war工程,需要response和request等对象,而这些对象是在servlet-api中的,所以我们需要添加servlet-api才能保证工程正常编译。
注意:必须指定scope为provided,这是设置依赖范围。
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
添加后更新工程
7.创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Maven测试页面</title>
</head>
<body>
欢迎进入神秘的Maven世界。
</body>
</html>
部署运行测试执行命令
tomcat7:run
(二)、添加SSH依赖
SSH2框架需要添加的依赖
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
<exclusions>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>