目录结构:
1,MAVEN简介
MAVEN是一个项目构建工具,参与项目创建、导入jar包、编译、发布、测试、打包等过程。它的使用方式有两种:用户命令行和可视化界面。用户命令行就是直接在DOM窗口中输入指令进行管理,可视化界面比如MAVEN和Eclipse整合。
2,MAVEN安装
2.1 下载MAVEN
在安装MAVEN之前应该把JDK安装好,关于JDK的安装和配置可以参见详解JDK的安装和配置。MAVEN和JDK类似,都是压缩包,下载完成后解压,配置环境变量即可,APACHE MAVEN下载。在下载之前应该先确定相应版本的MAVEN需要的JDK版本。MAVEN 3.3+需要JDK1.7及其以上,笔者下载的是MAVEN 3.5,JDK版本是1.8。
下面就是笔者的解压后MAVEN路径: D:\Program Files (x86)\EXE\apache-maven-3.5.0
2.2 配置环境变量
MAVEN_HOME =D:\Program Files (x86)\EXE\apache-maven-3.5.0
MAVEN_OPTS = -Xms128m -Xmx512m(可选)
然后再在path环境变量中追加MAVEN的配置: %MAVEN_HOME%\bin;
2.3 测试
配置好之后,我们来到DOM窗口,输入 mvn -v 。如果出现一些版本信息,那么MAVEN就是安装成功了。
3,MAVEN仓库
3.1 MAVEN仓库的工作原理
MAVEN给我们带来的最大的好处就是管理jar包,MAVEN管理jar包的模式是从远程仓库中把jar包下载到本地仓库中。仓库可以理解为缓存的地址,就是缓存项目需要的jar包,那么随着项目的扩大,本地仓库肯定为越来越大。
3.2 修改MAVEN本地仓库
本地仓库默认是在 C:\Users\用户名\.m2\repository 下,为了节约C盘的空间,我们将这个仓库的地址改为: D:\Program Files (x86)\EXE\apache_maven_local_repository 。找打MAVEN的安装目录下的 conf/settings.xml 文件。然后我们在<settings>节点下,加上<localRepository>节点:
<localRepository>D:/Program Files (x86)/EXE/apache_maven_local_repository</localRepository>
然后再在DOM控制台中输入: mvn help:system ,回车后,我们就可以看到一些下载信息,等下载结束后,我们再到 D:\Program Files (x86)\EXE\apache_maven_local_repository目录下,我们就可以看到许多文件了。
3.3 使用阿里云的Maven仓库
在墙内开发,下载速度一般比较慢,这时候可以使用阿里云的Maven仓库.
直接在的 conf/settings.xml。里面加上阿里云的映射文件就可以了。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
4,Eclipse和MAVEN的整合的配置
在Eclipse上整合MAVEN非常简单,我们只需要进行两个简单的设置就可以了。
在Eclicpse的Window->Preferences->Maven->Installations下面,我们将maven添加进来。
在Eclispe的Window->Preferences->Maven->User Settings中,我们将User Settings选项调换到MAVEN安装目录下的settings.xml文件夹。如果读者的setting.xml文件,也配置了 <localRepository></localRepository> 节点,那么可以看到Local Responsitoy的值就是 <localRepository> 节点下面的值。如果没有配置 <localRepository></localRepository>,那么Local Responsitory的值就是 C:\Users\用户名\.m2\repository 。
就设置这两个地方,然后就可以在Eclispe中创建MAVEN项目了。
5,Eclipse上创建MAVEN项目
我们在Eclipse菜单栏中点击File->New->Other->Maven,在弹出的对话框中会看到,如下图所示:
点击Maven Project,然后可以看到:
勾选create a simple project(skip archetype selection),点击next>后,我们可以看到:
这里有几个参数Group Id、Artifact Id、Version、Packaging。其中Group Id表示组的id,在一些大型的分组开发中会使用。Artifact Id就是以前项目名。Version代表版本。Packaging有三个值jar、pom和war,其中jar代表普通java项目,war代表web项目,pom用于集合MAVEN组件的时候使用的。
5.1 Eclispe中使用Maven搭建Spring MVC项目
下面我们使用Maven构建一个Spring MVC,我们选择Packaging为war,然后点击Finish。
src/main/java 里面是存储的java代码的地方
src/main/resources 是存储配置文件的地方
src/test/java 是测试java代码的地方
src/test/resources 是测试配置文件的地方
需要说明一些,这些文件都是是Eclipse分配给我们的可视化界面,是为了方便我们分类的。这是不是包!在tomcat中没有上面的这些的文件夹的。
新建好的web项目下面是没有web.xml的,需要在右击Deploymeny Descriptor,然后点击Generate Deployment Descriptor,生成web.xml文件。
Maven最大的好处就是自动管理相关的jar包,我在这里是搭建Spring webmvc框架,那么我们只需要打开pom.xml文件,然后在搜索spring-webmvc
然后选择一个版本的Spring-webmvc。保存后,Eclipse就会开始下载相关的jar包了。如果Eclispe没有下载,那么可以右击项目,然后run->Maven install。
进行下载相关的依赖包。如果在Libraries下出现Maven Dependencies包。
如果报出错误: The superclass " javax.servlet.http.HttpServlet" was not found on the java build path. ,那么有两种解决方法,第一种就和上面导入Spring-webmvc的方式一样,直接在输入框中搜索servlet-api,然后选择一个版本的。不过这种方式可能会引起导入的servlet-api.jar和原来的Tomcat不兼容,这个问题最好是从本地tomcat中添加,通过build path把本地的servlet-api.jar添加进来。
到这里位置,一个简单的SpringMVC所需要的所有jar包就搞定了。然后我们像往常一样写代码和配置就可以了。
项目总结构:
HelloController.java 文件
package cn.test.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class HelloController { @RequestMapping(value="/hello.do")
public String hello(Model model){
model.addAttribute("helloinfo", "HELLO WORLD");
return "hello";
}
}
HelloController.java
applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"> <context:component-scan base-package="cn"></context:component-scan> <mvc:annotation-driven></mvc:annotation-driven> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
<!--jsp存放的目录-->
<property name="prefix">
<value></value>
</property>
<!--jsp文件的后缀-->
<property name="suffix">
<value>.jsp</value>
</property>
</bean> </beans>
applicationContext.xml
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>mavenSpringMVC</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> </web-app>
web.xml
hello.jsp文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
${helloinfo}
</body>
</html>
hello.jsp
welcome.html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="hello.do">hello</a>
</body>
</html>
welcome.html
运行welcome.html文件后,打开连接就可以看到如下的界面:
到这里表示我们数据请求就成功了。目前一个使用MAVEN管理的SpringMVC项目就完成了。Maven最主要的一个功能就是管理jar包,如果程序员手动导入jar包,很有可能就会遇到版本不兼容,报一大堆错,像这种各种jar包版本不兼容的问题是比较头疼的。Maven就使程序猿从中解放出来了,使得无需关系jar的版本问题。
6,Eclipse中使用MAVEN管理的Web分布式开发
在上面第5点,笔者介绍了如何利用Maven创建Web项目。Maven除了管理jar非常方便,它在模块开发方面也强大。完全支持开闭原则(对扩展开发,对修改关闭)。下面笔者就来介绍一下在Eclipse中使用Maven管理的web分布式开发。
关于创建Maven项目的细节,笔者就不在这里赘述了,可以参见上面第5点。
1,创建父模块(Project)
其实这里的父模块指的就是一种Maven项目,在上面创建MAVEN项目时候说了,jar、war和pom的区别,如果我们需要使用Maven进行模块开发,那么packaging的类型就需要指定为pom。
2,创建模块(Module)
上面创建的父模块可以关联多个子模块,这里为了举例就只创建两个子模块(model1和model2)。在new->other->Maven中选中Maven Module,
建立的Module名称为model1,关联的父模块的packaging的类型必须是pom。
这里演示的是web分布式开发,所以Packaging选择了war。第二个model2同理第一个model1,到这里为止我们就完成了一个简单分布式web开发部署了。如果在model1或是model2里面编译程序,那么结果会立即同步到manager中去,因此可以在manager中对model1和model2进行分布式管理。
三着在项目中的结构:
我们可以看出在项父块中,有对两个子模块的关联。
到这里关于Eclipse中进行MAVEN开发部署就讲解完了,如果读者觉得还不错,请点个赞。