昨晚&今早学习了一下Maven部分的内容...
看老师做的贼丫容易,为啥我就跑不起来,这个那个的错一大堆...弄了n久看别人有没啥好的解决办法,然而结局你们应该也都知道了...肿么办,挺急的,在线等!!!⋉(● ∸ ●)⋊
目录
一、Maven简介
话说我为什么每次要写这个奇奇怪怪的简介...真的是,度娘不好吗emmm
所以,简单的一句话——Maven是用java编写的用于管理java项目的包管理工具~
我刚不死心又去试了其他方法!!!天呐~~成了~~鸡冻
突然有了继续写下去的动力~~ヾ(≧O≦)〃嗷~
使用Maven管理项目的好处有哪些呢?
我要告诉你的是~灰常多!首先最显而易见的一点就是——大大①节省项目的空间!我们来做个对比~
左边的是一般的工程,右边的是使用Maven管理的工程!!!占用空间差距大不大?
非常大~因为Maven没有把需要的jar包这些东西扔进工程当中,需要使用的时候到repository中去找就好~
它的第二个优点是能够②一键构建工程,我们在项目目录下进入命令行,使用 mvn tomcat:run 就可以直接跑起来,而不需要我们手动的开启tomcat,这是因为它使用了内置的tomcat,但是效果是一样的~
因为Maven是使用纯java代码写的,所以它跟java一样③可以跨平台
最后一点,由于Maven远程仓库的存在,我们在建立大型项目的时候,可以④极大的提高我们的开发效率~
二、Maven的安装配置
我们从官网上把Maven的压缩包下载下来,解压到一个没有中文名的目录中就可以了~
接下来配置Maven:
我们先在环境变量里面添加MAVEN_HOME,它的值就是你刚才的解压目录,然后把它的bin目录添加到Path里面去,这样我们就可以在任何地方直接使用mvn了~
我们可以用mvn -v来看一下是不是安装好了~PS:要先配好JAVA_HOME,不然报错
Maven的核心配置文件是conf目录下的settings.xml文件,我们现在进行配置~
我们添加 <localRepository>E:/repository</localRepository> ,这个是配置本地仓库的,我们所有Maven的依赖文件都在这里可以找到
为了下载方便,我换了国内阿里云的镜像,因为昨天晚上被坑的贼惨,国外的东西下载慢的一笔...
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
OK~到这里暂时就没什么事了,我们下一步给Demo~
三、建立Maven的HelloWorld工程
1、修改Eclipse的Maven相关配置
选择我们的Maven版本
然后把我们Maven的settings.xml文件导进去
这样第一步的准备就ok了~
2、创建一个Maven工程
我们勾上Create a Simple Project,这样会省事儿点~
然后就是填写项目的基本信息了~
我们看一下项目的包结构~
一开始可能会有小红叉出现,不要捉急~我们来干掉它们!
配置Tomcat7~
配置编译器插件~
添加一些后面要用到的jar包~
添加完之后就会自动添加Maven Dependencies~
手动加一个web.xml文件(随便copy一个最基本的web.xml文件就好了我一起给)qwq~~
下面我把pom.xml、web.xml和ServletTest.java给出来~
<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>cn.itcast.maven</groupId>
<artifactId>maven-helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>第一个maven工程</name>
<description>第一个maven工程</description>
<!-- 添加servlet-api,jsp-api -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
<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>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- Tomcat 插件配置 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 使用内置的模拟Tomcat服务器 -->
<path>/helloworld</path>
<uriEncoding>UTF-8</uriEncoding>
<port>8998</port>
<mode>context</mode>
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>resources</goal>
<goal>testResources</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<!-- 配置servlet -->
<servlet>
<servlet-name>servletTest</servlet-name>
<servlet-class>cn.itcast.maven.servlet.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<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>
</web-app>
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/jsp/test.jsp").forward(req, resp);
}
}
现在我们可以启动工程了~结果不出意外,就是我上面发出来的那个(^u^)
四、Maven进阶
1、配置依赖
1.我们添加Maven Repository视图~
我们来rebuild一下
我们在右击pom.xml,选择maven,添加依赖试试~
2.依赖相关
我们来简单介绍一下添加依赖时的Scope属性吧——
compile:表示编译时需要,测试时需要,运行时需要,打包时需要,比如struts2-core这些核心jar包
provided:表示编译时需要, 测试时需要,运行时不需要,打包时不需要,比如jsp-api、servlet-api这些相关的如tomcat中已经存在的jar包
runtime:表示编译时不需要,测试时需要,运行时需要,打包时需要,比如数据库驱动程序包
test:表示编译时不需要,测试时需要,运行时不需要,打包时不需要,比如junit的jar包
3.依赖传递
只添加了一个struts2-core依赖,发现项目中出现了很多jar包,这种情况叫依赖传递
4.依赖版本冲突解决
这里有四种方法~
· 第一申明优先原则
<dependencies>
<!-- spring-beans-4.2.4 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- spring-beans-3.0.5 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
</dependency>
</dependencies>
所以使用的是spring-beans-4.2.4的这个依赖
· 短路径优先原则
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
· 排除原则
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
· 版本锁定原则
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<struts.version>2.3.24</struts.version>
</properties>
<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
2、分模块开发
创建父工程对子工程进行统一管理~
创建子工程,选择建立Maven Module,填上对应的父模块名称即可。
3、私服
公司中通过使用私服,可以将service层、dao层等工作模块化,需要使用时直接从公司的私服中调用相应的模块即可。这一部分一般由项目经理负责搭建管理,不多解释了~~
女生节?
女生是去过节了,我们这些银就苦了...(啥?有妹子你还苦个pi!!!)
我是小昶,马达内~~
欢迎关注我们的公众号:落饼枫林,共同进步~~