之前一直留了一个空白在这里忘记写内容,抱歉了
之前一直都是使普通的web project进行开发,都是手动找jar包,其实那时习惯了觉得也挺容易的,直到用了maven。
maven web 项目于普通web项目最核心的区别就在于:
1、普通web项目的大部分jar包都需要我们自己去找,嗯,各种坑蒙拐骗,还是很容易集齐所有jar召唤项目的,同时我们把所有的jar包都加入了项目配置,我们同样也不能指定这些jar包的作用范围,这可能会造成依赖冲突;
举个例子,比如我们的项目中需要的servlet-api.jar(当然这个包myeclipse自带了),tomcat的lib目录同样包含这个jar包,(虽然实际上不存在下面猜想的问题)假如myeclipse没有自带servlet-api.jar,我们从本地导入了一个其它版本的servlet-api.jar,如果它的版本和tomcat自带的servlet-api.jar版本不一致,当我们把项目发布到tomcat后,我们在项目的lib目录添加的servlet-api.jar和tomcat/lib自带的serlet-api.jar就可能会发生冲突(我只是用这个大家比较熟悉的jar举个例子,而且其它情况的依赖冲突不见得是因为tomcat/lib);
实际的依赖冲突例子:A依赖B,且A依赖C.y.0,而且B依赖C.x.0,那么A存在了对C的不同版本的依赖
--------通过这点我们得到了两个矛盾:(1).寻找jar包不容易 (2).潜在的jar版本冲突
2、到了maven web项目中,没错maven解决了上面两个矛盾:
maven大致工作过程:
----通过这点我们认识到,在pom.xml里配置了依赖的jar包之后,maven就会自动联网把我们需要的jar包下载到本地仓库,然后给maven web项目使用,所以就不需要我们去各种官网找,或者去问别人要资源
---------------------PS:存在例外,例如有的公司没有对maven授权,所以需要自行下载对应的jar包,然后自己导入到maven仓库里(似乎使用maven的web项目下的WEB-INF目录下是没有lib目录的,所以我们只能通过maven的pom.xml(后面会讲)导入jar包,当然在本地我们可以直接在java build path添加,但是放到tomcat上了之后呢?所以还是要maven)
---------------------PS:把没有给maven授权的jar导入本地仓库的例子:oracle数据库连接用的ojdbc.jar就是没授权的,所以需要我们自行导入maven仓库;其实这也是部分,这里可以只是了解一下,有需要可以看下面的贴子:
----------------https://blog.csdn.net/maofachang/article/details/61932547
以下简单说说maven配置以及使用
一.首先解压maven,配置M2_HOME环境变量,并添加到PATH,这个没啥好说的
二.打开maven配置文件D:\apache-maven-3.3.9\conf\settings.xml
1、配置自定义本地仓库: 大概在50~60行
<localRepository>D:/WorkData/Maven/repo</localRepository>
我们本地安装的maven下载的jar就是同一保存在这里进行管理分发的
2、配置maven仓库镜像:大概在160行前后
由于中央仓库在国外,如果全都通过中央仓库下载,速度会很慢很慢,如果配置了国内的阿里云镜像,就是另一种感觉了。
<mirrors>
<!--阿里云镜像-->
<mirror>
<id>aliyun</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!--其它镜像-->
<mirror>
<id>ibiblio.org</id>
<name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, North Carolina -->
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
</mirrors>
3、代理配置:90多行前后
如果你在公司内部使用代理上网,maven并不能使用浏览器代理上网,你需要给maven配置代理服务器,不使用代理时把配置的代理注释掉就可以了
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<host>代理服务器IP</host>
<port>代理服务器端口</port>
<nonProxyHosts>不使用代理的ip,用"|"间隔</nonProxyHosts>
</proxy>
</proxies>
到此maven配置完成,只需要到mycelipse位mycelipse指定本地maven就可以了,
-----PS:这里需要注意一点,从下图中可以看出,我myeclipse自带的maven版本是3.3.9(第一行是自带的maven版本,第三行是我自己安装的),由于myeclipse集成maven同样也需要一些别的插件;所以我建议可以直接装跟它一样的版本,这样可以避免可能出现的插件不支持版本的问题,当然还是那句话,万事无绝对,你也可以试试其它版本的,插件不支持也是能解决的
三、接下来创建并使用maven web项目:
1、new->other->Maven->Maven Project->
next->
next->
next->
Finish
Group Id:组名,随意写,公司的话一般是公司域名反写
Artifact id:项目名
注意:advanced如果不选为[artifactId]的话建成的项目名会被自动加上多余的后缀" Maven Project",嗯,含有空格,在浏览器访问时输入带空格的项目名不知道能不能识别,,,,我也没试过。
点击Finish后会显示一个错误:
这个好像是因为myeclipse没有自带某几个jar,但是tomcat有,由于我们迟早都要把项目放到tomcat,所以给项目指定一个tomcat就好了,这样可以让我们在maven那边少干点活。
到此为止maven web项目创建成功,以下是maven web项目路径
src/main/java等价于普通web项目的src目录,他们都是根目录,可以直接在下面建立java代码包
webapp目录等价普通webRoot目录,不过由于有了maven,所以在WEB-INF下面就没有了存放jar包的lib目录
Maven Dependencies里存放我们通过maven导入的依赖jar包,类比普通web项目webRoot/WEB-INF/lib的作用。
接下来是重头戏了
2、maven的使用:
打开pom.xml
Maven Dependencies里显示的就是pom.xml里配置的junit-3.8.1.jar,<dependence></dependence>标签里的内容是需要导入的jar的定位座标,就像你上网用的IP,当然这是两码事;
<scope>test</scope>表示这个jar包只在测试时生效(这就是开头所说的控制作用范围的功能),当然还可以有其它范围,你自己出外边搜一圈就有了。
下面我新加入了一个standard的jar包的标签,刷新项目之后Maven Dependencies显示:
3、jar标签的获取:
中央仓库:http://mvnrepository.com/
阿里云:http://maven.aliyun.com/mvn/search,以阿里云仓库为例:选择jar类型,选择版本
把下面显示的标签贴到pom.xm刷新项目即可使用
pom.xml内容:
我这个帖子讲得很浅,你可以在理解之后去找专门关于pom.xm讲解的帖子看看,如果发现我讲错了,可以回来告诉我一声。
如果是在eclipse下,会稍微麻烦一点,需要在eclipse中安装maven相关的插件,但是myeclipse中一般都已经集成了那些插件,所以就可以直接配置了。