简介
maven是一个项目管理工具,它的核心功能是:
- 项目构建:统一开发规范与工具
- 依赖管理:统一管理jar包
我们通过配置pom.xml来使用maven的这些功能:
它可以解决项目开发中常遇到的一些问题:
1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?
2、为什么在我的机器上可以正常打包,而配置管理员却打不出来?
3、项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。
4、我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?
5、这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧
6、现在是第三次,再复制一次吧 ----- 这样真的好吗?
7、我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组,这不是一个好的分发机制,太多的环节可能导致出现bug
8、项目进入测试阶段,每天都要向测试服务器部署一版。每次都手动部署,太麻烦了。
----此段摘自 https://blog.csdn.net/it_lihong/article/details/79088030
安装配置
mac上安装配置maven:
1.下载maven:下载完成后解压,放到想放的位置。
2.配置maven环境变量:
# java,tomcat,maven
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
CATALINA_HOME=/Library/java/tomcat/apache-tomcat-8.0.50
M2_HOME=/Library/Java/maven/apache-maven-3.5.3
PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$M2_HOME/bin:$PATH:.
CLASSPATH=JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export CATALINA_HOME
export M2_HOME
export PATH
export CLASSPATH
按esc :wq回车,保存退出后
在终端输入 source ~/.bash_profile 以使文件生效。(勿忘这一步)
3.验证:终端输入: mvn -v
4.eclipse中配置maven
preferences->maven->installations 添加自己安装的maven
5.国内配置淘宝镜像:~/.m2/setting.xml(.m2是隐藏目录,shift+command+.显示隐藏目录)
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
Windows上安装配置maven:
1.下载maven:下载完成后解压,放到想放的位置。
2.配置maven环境变量:
M2_HOME=/Library/Java/maven/apache-maven-3.5.3
在path中添加%MAVEN_HOME%\bin;
3.验证:终端输入: mvn -v
4.eclipse中配置maven
preferences->maven->installations 添加自己安装的maven
5.国内配置淘宝镜像:用户文件夹/.m2/setting.xml(.m2是隐藏目录,win10文件浏览器菜单栏->查看->勾选隐藏的目录)
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
项目构建
maven项目结构
Maven在进行项目构建时,它对项目目录结构拥有约定,知道你的源代码在哪里,类文件应该放到哪里去。
Project
|-src
| |-main
| | |-java —— 存放项目的.java文件
| | |-resources —— 存放项目资源文件,如spring, hibernate配置文件
| |-test
| |-java ——存放所有测试.java文件,如JUnit测试类
| |-resources —— 测试资源文件
|-target —— 目标文件输出位置例如.class、.jar、.war文件
|-pom.xml ——maven项目核心配置文件
创建及运行maven项目
step1:New->maven project
step2:选择工程模板
step3:填写maven坐标
step4:配置pom.xml : 添加servlet依赖,解决jsp报错问题。
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.leon</groupId>
<artifactId>demo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 版本常量 -->
<properties>
<!-- junit依赖 -->
<junitVersion>3.8.1</junitVersion>
<!-- jstl,servelt依赖 -->
<jstlVersion>1.2</jstlVersion>
<servletVersion>2.5</servletVersion>
</properties>
<!-- 依赖管理 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstlVersion}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servletVersion}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>demo</finalName>
</build>
</project>
step5:运行项目
方式一:使用 Maven Build发布运行
右键项目->run as ->maven build …->goals输入tomcat:run ->run
方式二:当作普通javaWeb发布运行
servers视图->new server->新建一个Tomcat server->将maven项目add->启动服务器
导入maven项目
import->Existing Maven Projects->选择导入的maven项目的pom.xml->执行maven install
Maven搭建SSH(Spring MVC + Spring +Hibernate)框架
准备工作
1/安装并配置java运行环境
2/数据库的安装配置(Mysql)
3/安装并配置服务器(Tomcat)
4/安装并配置Maven
5/安装 springsource-tool-suite(可选插件)
6/ eclipse创建MAVEN web项目
导包
配置好pom.xml后,系统会自动到maven的中央仓库去下载相应的包.
/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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.leon.app</groupId>
<artifactId>egg</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Getting Started with Spring on JBoss</name>
<!-- 版本信息常量-->
<properties>
<encodeType>UTF-8</encodeType>
<jdkVersion>1.7</jdkVersion>
<mavenCompilerPluginVersion>3.1</mavenCompilerPluginVersion>
<mavenWarPluginVersion>2.3</mavenWarPluginVersion>
<jstlVersion>1.2</jstlVersion>
<taglibVersion>1.1.2</taglibVersion>
<servletVersion>2.5</servletVersion>
<springVersion>4.3.1.RELEASE</springVersion>
<hibernateVersion>4.3.5.Final</hibernateVersion>
</properties>
<dependencies>
<!-- jsp页面使用的jstl支持-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstlVersion}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibVersion}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servletVersion}</version>
<scope>provided</scope>
</dependency>
<!-- spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springVersion}</version>
</dependency>
<!-- spring web + spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springVersion}</version>
</dependency>
<!-- hibernate配置-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernateVersion}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${mavenCompilerPluginVersion}</version>
<configuration>
<source>${jdkVersion}</source>
<target>${jdkVersion}</target>
<encoding>${encodeType}</encoding>
</configuration>
</plugin>
</plugins>
<finalName>egg</finalName>
</build>
</project>
SpringMVC配置
1、/egg/src/main/resources/spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- 启用spring mvc 注解 -->
<mvc:annotation-driven />
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.leon" />
<!-- 页面路径解析:在请求时模型视图名称添加前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /><!--默认,可不配。 决定视图类型,如果添加了jstl支持(即有jstl.jar),那么默认就是解析为jstl视图 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
</bean>
<!-- 对静态资源文件的访问 -->
<mvc:resources mapping="/images/**" location="/static/images/" />
<mvc:resources mapping="/js/**" location="/static/js/" />
<mvc:resources mapping="/css/**" location="/static/css/" />
</beans>
2、/egg/src/main/webapp/WEB-INF/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_3_0.xsd" version="3.0">
<display-name>egg</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- spring MVC DispatcherServlet config start -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 此处指向的的是SpringMVC的配置文件 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--配置容器在启动的时候就加载这个servlet并实例化 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- spring MVC DispatcherServlet config end -->
</web-app>
参考文献
框架篇:Spring+SpringMVC+hibernate整合开发
Spring Tool Suite(STS)和Maven建立的Spring mvc 项目
Maven常见问题及解决
1、Web Version修改
将web version由默认的2.3修改为3.0
首先看到这个下面这个界面(没有这个view的话,Window->Show View->Navigator
打开我选中的org.eclipse.wst.common.project.facet.core.xml这个文件
原内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>
修改jst.web这个属性如下:
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>
这样就可以将Web version从默认的2.3修改成3.0
2、JDK Version修改
修改jdk版本为1.8
打开pom.xml文件,找到标签
添加如下标签:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
3、maven提示需要更新Maven项目
项目右击-》Maven-》Update Project完成。
参考文献
后记: 好记性不如烂笔头,写这篇maven教程,主要是为了备忘,如果能帮到新入坑的小伙伴,那就更好了。
Thank you for reading.