配置Maven到IDEA,我的配置经历
配置Maven到IDEA,我的配置经历
今天本小白终于接触到了经常在大佬口中听到的,Maven,了解一番后发现确实是让人眼前一亮的工具,但是在配置的过程中,碰到了非常多让人头疼的Exception!,不知道将来还有多少人会和我一样被这个配置中的一些问题气到,所以在这里记录下我配置Maven到顺利运行的全过程,希望能给第一次配置的你一份参考!!
首先Maven的作用我就不过多赘述了,直接开干!
1、安装Maven
安装Maven是很轻松的一件事,他和Tomcat一样,下载到压缩包,直接解压即可,但是要注意路径中不能出现中文
目录结构这就是Maven的目录结构啦,conf里装的是配置文件,maven_repository是我自己配置的本地库,Maven有本地库和远程库,远程库就是你的本地库里没有需要的jar包时,Maven会自动帮你去远程库下载,当然,不翻墙能下一年~~
2、远程库
所以啦,一定要将远程库改为国内的,阿里巴巴的Maven库就是很不错的选择
首先打开conf文件夹下的settings.xml,先将默认本地库路径改为你自定义的路径,默认在C盘,你也不想你的C盘分分钟挤满吧
settings.xml修改最后一行,中间填你的地址就可以了
然后将远程库改为阿里巴巴的,可以提升下载速度
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
将这段代码添加到147行(大概)的<mirrors></mirrors>标签中就可以啦
3、在IDEA中添加Maven
设置IDEA的Maven在设置里直接搜索maven,如图设置,就是你解压maven的路径,之后建议将Runner下的VMoption设置为
-DarchetypeCatalog-internal,可以不用每次都下载,有本地的就直接使用本地的
4、创建Maven的Web项目,Maven的Java项目我没有遇到什么问题,一路通畅,感觉不是很麻烦,所以只演示创建Web项目
创建项目使用骨架创建Web项目,左边选择Maven,将Create……的那个选项勾上,选择webapp的骨架,点击next
设置名称之后第一个是企业名称,第二个是项目名称,之后一路next即可,进入IDEA后,会自动下载,因为更换了阿里巴巴的Maven库,下载的还是很快的
5、创建文件
使用骨架创建web项目,目录结构中缺少一个java包,需要手动创建,并右键,点击Mark Directory as,选择Sources Root,这样java文件夹就可以创建java文件了
无法继承此时创建servlet类,是继承不了HttoServlet的,因为还没有引入jar包的坐标,在Maven中,jar包不再和项目放在一起,而是放在本地库中,只需要在项目中,设置jar包的坐标,即可正常使用,所以大大减小了因为jar包带来的项目容量
打开pom.xml,添加以下代码
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope> //表示该jar包只在编译时使用
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
因为自带的Tomcat插件内有关于servlet和jsp的jar包,若不将此处的坐标设置为<scope>provided</scope>,则会出现第一个错误,无法识别该类为servlet类
写好一段简单的跳转代码,跳转到写好的jsp页面,此时点击
侧边栏这个Maven,再点击那个大大的M
大大的M输入tomcat:run,就可以运行项目啦
啊哦,报错了,为啥呢?
首先你创建的servlet类在web.xml文件中并没有正确配置,IDEA自己帮你配置的Web.xml没有配置<Servlet-mapping>,其次,如果你使用注解配置,那么需要导入3.0的Servlet,而内置的tomcat6.0是不支持3.0的servlet的,此时你需要导入tomcat的配置,最好在导入jdk1.8的配置,我们一个一个来
首先如果你不打算使用注解配置servlet,那么你需要自己补上servlet-mapping的配置
<servlet-mapping>
<servlet-name>myServlet</servlet-name>-->
<url-pattern>/myServlet</url-pattern>-->
</servlet-mapping>
若你打算使用注解配置,则需要导入servlet3.0的坐标,同样设置为provided
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
之后你需要导入tomcat7的配置,在最末尾的<build>标签内导入
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<!-- tomcat7的插件, 不同tomcat版本这个也不一样 -->
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 通过maven tomcat7:run运行项目时,访问项目的端口号 -->
<port>80</port>
<uriEncoding>utf-8</uriEncoding>
<path>/myMaven</path>
</configuration>
</plugin>
还有jdk1.8的配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>utf-8</encoding>
</configuration>
</plugin>
这样你就可以顺利运行啦
这只是我个人配置时遇到的错误,也许你不会遇到任何错误,也许你会碰到别的错误,但是当你碰到错误时,可以看看这些配置你是否都做了,如果还是不行,面向百度编程,你懂吧