myeclipse下maven的配置和使用

之前一直留了一个空白在这里忘记写内容,抱歉了

之前一直都是使普通的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中一般都已经集成了那些插件,所以就可以直接配置了。

猜你喜欢

转载自blog.csdn.net/bokerr/article/details/81388615
今日推荐