Maven实战指南 07

来源:互联网 发布:腾讯软件 编辑:程序博客网 时间:2024/06/16 21:08

第六章企业级Web应用的套路

  6.1 企业web应用套路简介

通过前面的研究,咱们算是能自己独立基于Maven+Eclipse开发JSP/ServletWeb应用了,但是在企业中,还是会遇到同咱们自己学习中不一样的情况。比如需要使用框架开发;一个项目需要分成多个模块开发,最后合并集成;新项目重用以前搭建好的框架;开发的时候,要减少对外网的依赖(我们一起的开发,都必须时刻同外网连通的)等等。

接下来我们还是以用户CRUD为例子,分别使用Struts+Spring+Hibernate框架和SpringMVC+Spring+MyBatis框架进行实现。

其中包括:

1、Maven私服搭建和使用

2、Maven的聚合管理

3、Maven的继承

4、以及SSHSSM两大流行框架的搭建

  6.2 搭建Maven私服

在我们以前的案例开发过程中,强烈要求同外网保存连接,为什么呢?

因为一旦我们需要的依赖,在本地环境中没有存在的化,maven会很聪明的,自动到网上的资源仓库中查找,并且下载(有些它自动下载最新版本,有的需要我们在pom.xml中指定坐标,maven根据坐标去查找下载)。

当我们是一个个体去开发的时候,这是允许的,但是如果我们是一个团队,特别是有历史的团队,开发过很多项目的团队。这样的团队,因为历史悠久,肯定在以前项目中用到了很多构件,这些构件也肯定下载过。如果每次下载都没有保存,或至少保存到每个程序员的本地电脑里面,那就意味着团队中的每个程序员都需要时刻连接外部资源仓库,下载自己的构件资源。全世界那么多程序员,想象一下资源仓库服务器的压力,是不是好大呢。另外网络稳定、速度也快还好说,如果不稳定,很慢,下载一个1M的构件,都要十几分钟,请问程序员怎么开发?太不顺畅了吧。

基于这种情况,我们需要在公司里面搭建一个服务器,程序员需要构件的时候,先看本地有没有,没有,找公司服务器要,公司服务器再没有,再从外网下载。下载后,在公司服务器保存,再自动在程序员本地电脑保存。这样就可以在公司内网,重复使用下载下来的构件,从而减少对外网的依赖。

另外因为是内网,肯定要比外网要稳定快速得多吧。如果贵公司内网比外网还要慢,那麻烦请我这菜鸟去帮你吧 ^_^

 

目前常用的搭建Maven私服的服务器有三个:

Apache基金会的ArchivaJFrogArtifactorySonatypeNexus。作为咱们这刚入门的求学者,就不要太考虑它们有啥子区别,琢磨着选哪个最好了。直接是能用,开源免费就OK,所以接下来咱们一起研究Apache基金会的Archive服务器的搭建。

 

1、下载Archiva

下载连接是:http://archiva.apache.org/download.cgi

目前最新版本是2.2.1的,有三种内容下载:一个是tar.gz,一个是war包,还有一个是source源代码。

我这下载的是tar.gz包:apache-archiva-2.2.1-bin.tar.gz

该版本里面包含自己的web服务器,直接解压,独立web服务器启动。

2、解压Archiva,启动服务器

用压缩工具解压压缩文件,目录结果如下:

 

bin目录下有个archiva.bat文件,该文件是在win操作系统下的服务启动程序。

 

安装配置好JDK1.7以上)

 

打开cmd窗口,切换到archiva.bat所在的目录,输入archiva console命令回车,启动Archiva服务器。如图:

 

最后显示当前的Web请求端口是8080

 

3、初始化和配置Archiva服务器

   1)初始化管理员用户

      在浏览器中输入 http://localhost:8080,打开页面如下:

 

点击右上角的 Create Admin User的红色按钮,在显示的页面上输入管理员的用户名和密码,点保存创建。如图:

 

 

   2)添加其它用户

选择页面左边的Manage,点击Add,在输入框中输入要添加的用户信息,如图:

 

点击 Save按钮,创建一个新的用户。

根据项目团队的需要,可以给每个开发人员创建访问私服的用户名和密码。

   3)配置本地仓库位置

选择页面左边 Repositories菜单,页面会显示本地仓库和远程仓库的配置,如图:

 

点击图上的Add,我们可以添加一个本地仓库位置,具体填写的信息,参考已有的配置就行,当然,咱们也可以修改现在有的,比如idinternal的本地仓库,点击Edit图标,会显示如下界面:

 

其它都没什么太重要,主要是idDirectory

Id在开发人员客户端进行配置的时候,需要使用

Directory是仓库保存构件的路径。

 

4)添加远程仓库

Archiva装好后,有个默认的远程仓库,连接是:
https://repo.maven.apache.org/maven2

我们当然可以去发现其它的远程仓库,配置到咱们的私服里面来。需要的时候,Archiva自动会从这些私服中找需要的构件。

比如我们现在配置一个阿里云的远程仓库:

点击当前页面中,Remote Repositories Management中Add按钮,输入阿里云仓库的信息如图:

 

后面当然还有很几个输入框,这里就截取了关键信息。

Id随便输入,输入后不能再修改的,需要唯一

Name是名称,随意

Url是远程仓库的连接,这就不能随意了 哈哈

Usernampassword是连接url远程仓库的用户名和密码,有些仓库提供公共的共享访问,比如我们现在配置的,它就不需要输入,否则就得获得用户名和密码许可才行。

点击 Save后,出现如下界面,表示OK

 

其中就有我们刚刚添加上去的alimaven

5)

4、在开发员端配置对私服的使用

   在本地用户目录下的.m2目录下,找到settings.xml,我电脑上目录是C:\Users\Noble\.m2\settings.xml。如果您电脑是第一次使用,可能没有settings.xml文件,不过没什么,还记得apache-maven-3.3.9的安装目录不,里面有个conf/settings.xml,把这文件copy到用户的.m2目录下就行。

解析来咱们就按步骤,在settings.xml中完成开发员电脑同私服连接的配置。

 

第一步:配置同服务器的认证信息

   根据前面对私服的搭建,咱们应该可以得出结论,私服就是web服务器,里面提供了构件资源,我们可以通过web访问下载下来。既然要连接web服务器访问,而且我们前面好像有对web服务器设置用户吧^_^,所以第一步,是不是应该在我们的本地,配置能访问Web服务器的认证信息(用户名和密码)呢?!

   对,就是配置认证信息。

   settings.xml文件中,找到servers标签,在里面添加一个server的认证信息配置,格式如下:

<server>

<id>archivaServer</id>

<username>admin</username>

<password>admin123</password>

</server>

说明:

Id是要认证的服务器名称,因为可以配置多个,它是用来标记服务器的,要唯一

Usernamepassword不用说了吧,就是所谓的用户名和密码,我这里直接是初始化Archiva私服服务器的时候,创建的admin用户和密码。

我们如果要连接多个私服,可以类似的配置多个server,每个server是一个私服的认证信息

 

第二步:配置要连接的私服服务器信息

   前面我们在自己的settings.xml中,配置了连接私服服务器的认证信息,那这认证信息对应哪个私服服务器呢?接下来咱们在settings.xml中配置私服服务器信息。

   很简单,直接在settings.xml中找到mirrors标签,在该标签中插入如下内容:

<mirror>

      <id>archivaServer</id>

      <mirrorOf>*</mirrorOf>

      <name>MyOwnRepo2</name>

      <url>http://localhost:8080/repository/internal</url>

</mirror>

 

说明:

  Id是私服映射的标记,该标记要同serverid一样。如果连接私服需要认证信息的化,Maven同过id找对应的server,用server的认证信息进行认证。

  mirrorOf 指定哪些内容需要通过私服下载,*表示所有构件都需要从私服下载

  Name是私服的名称,随意取,方便自己的记忆和理解

  Url,指定私服的url,注意格式:http://<私服ip/名称>:<web端口>/repository/<仓库id>

 

就这么两步辛苦,当咱们需要依赖的时候,就直接可以从搭建的私服中获取了。当然,不能保证私服有现成的,不过不要紧,私服自己会去网络中找到对应的依赖给我们,同时它也会在自己的仓库中有备份保存,以备咱们其它开发人员需要。

 

第三步:配置本地工程的发布

前面我们可以将私服上的依赖下载到我们本地,进行项目开发了,那我本地的模块开发好了,怎么样把它们打包,以构件的形式,发布到私服上去,让同项目组的组员,能以添加其它构件一样的,添加咱们的构件,进一步开发其他项目或模块的功能呢?

这一步就是解决本地项目打包,在私服上发布成构件的问题。

要完成这样的功能,需要做两个事情:编写配置文件和运行发布命令。

1、编写配置文件

   前面两步,咱们都是在settings.xml中进行的配置,这步的配置文件不同了,需要在咱们工程的pom.xml文件中,在project标签内,添加distributionManagement配置,指定要发布的目标地(私服),具体内容如下:

  <distributionManagement>

     <repository>

        <id>archivaServer</id>

        <url>http://localhost:8080/repository/internal</url>

     </repository>

     <snapshotRepository>

        <id>archivaServer</id>

        <url>http://localhost:8080/repository/snapshots</url>

     </snapshotRepository>

  </distributionManagement>

 

说明:

   上面的信息,配置了两个仓库url,一个是repository,一个是快照repository。每个respository中,都有一个url。不用过多罗嗦,url就是咱们要发布的私服仓库url,同我们在settings.xml中配置mirror中的url一样。同样,有两个id,这两个id就需要注意了,要同我们在settings.xml中,用server配置的验证信息中的id对应。因为咱们发布无非就是上传文件,上传文件前,需要安全认证的,maven就是通过id,将server中的验证信息发送给私服,私服认证通过了,才允许咱们将本地构件发布上去的。

 

2、运行发布命令

前面咱们将配置信息都配置好了,怎么运行命令,按配置信息将工程当构件发布到私服上去呢?简单着呢:

在工程上点击右键 Run As-Maven build...,在弹出框的Goal后面,输入deploy,点击Run就行,它们就会自动发布到咱们的私服上去。

 

版权所有,转载请注入 视频地址http://cyedu.ke.qq.com

0 0
原创粉丝点击