学习Maven也有一段时间了,现将MAVEN结合ECLIPSE的开发经验总结一下
1. 配置本地自定义仓库
找到MAVEN的安装目录,在conf文件夹下找到settings.xml,文件,修改内容如下(以我自己的操作为例):
<setting>
<localRepository>E:\maven\Repository</localRepository>
</setting>
然后,建立上面localRepository指定的文件夹E:\maven\Repository,同时将上面MAVEN安装目录下的settings.xml文件拷贝到E:\maven下,(注意,settings.xml文件必须和自定义仓库的文件夹在同一级,所以要放到E:\maven下)
至此,后续MAVEN下载的构件都将放到E:\maven\Repository下面
2. archiva私服搭建
首先要安装archiva,这个步骤略过,自行下载安装即可,下面直接进入主题,以我安装目录E:\server\apache-archiva-2.2.0为例
安装并系统archiva:
调出命令行,找到archiva的根目录,进入bin文件夹,然后输入archiva.bat console,archiva仓库服务就会启动WEB界面,第一次登陆系统会要求注册一个管理员帐号,自行注册即可,注意:邮箱地址是必填项,填一个自己的邮箱即可
配置archiva本地仓库:
登陆系统后,选中Repositories,系统会弹出上图界面,这有两个仓库,一个是Release仓库(即internal),用来存放正式构件的,另一个是snapshot仓库,用来存放快照版本的,个人一般用来做内部版本存放用。
我们以Release仓库为例,看下如何配置:
点击上图中的标记处按钮,会进入Release仓库的配置界面,如下图所示:
这里我们注意几个地方就好,Directory用来指定我们的仓库位置,Index Directory我个人习惯是将其指定到仓库下的子文件夹.indexer下,这个大家可以自行定义,其它选项不动即可,这几个配置好基本上就能保证私服能跑起来,有兴趣的可以自行研究其它选项。
对于snapshot的也是同样道理,这里不再赘述。
这样配置完后,私服就可以将构件存放到私服自定义的仓库位置,开发人员访问私服就可以找到自己想要的构件下载到本地进行开发。
用私服来代理远程仓库:
还是选择Repositories,不过这回我们要选Remote Repositories Management这个选项卡,进入后,我们可以看到上图界面所示:
其中central是archiva自带的远程仓库,系统默认访问这个仓库,sonatype-forge是我自己加的一个新仓库,在界面上点击Add这个链接可以新增加一个远程仓库,如果要修改某一个仓库配置,按本地仓库类似操作方法,选择Edit下的按钮,进入编辑界面,如下所示:
这里要注意三个东西,ID是远程仓库的唯一标识,不能弄错,Name可以自己随便写,建议跟远程仓库的NAME保持一致,Url不能错,自己要先搞清楚远程仓库的地址,添加即可,编辑好后,在下方有一个SAVE按钮,点击保存即可。
这样配置好后,archiva会依次检查所有的远程仓库,来寻找我们想要的构件,有两个就找两个,有三个就遍历三个,按照仓库配置的顺序挨个检查。
MAVEN指定访问私服进行构件下载:
archiva私服我们已经搭好了,它的远程代理仓库我们了设置好了,那如何告诉MAVEN通过私服来进行构件下载呢,以我个人设置为例,先找到E:\maven下的settings.xml文件,所有操作均在这个文件中完成
我们需要配置以下三个东西:
1. server
<server>
<id>internal</id>
<username>admin</username>
<password>admin123</password>
</server>
2. mirror
<mirror>
<id>internal</id>
<name>Archiva Managed Internal Repository</name>
<url>http://localhost:8081/repository/internal</url>
<mirrorOf>*</mirrorOf>
</mirror>
3. profile
<profile>
<id>archiva</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
4. activeProfiles
<activeProfiles>
<activeProfile>archiva</activeProfile>
</activeProfiles>
我们一一分析:
我们首先要告诉MAVEN通过哪个路径来访问archiva私服,如上面配置,我的archiva的服务器文件存放路径为http://localhost:8081/repository/internal/,8081是我修改后的端口,默认为8080,修改位置在archiva安装目录下的conf文件夹中的jetty.xml,自行解决即可,很容易。我将这个私服取名为internal,这样我们就完成了教MAVEN去哪找私服的工作。
如果我们的私服设有访问密码,那么server这个就要加上,id必须和mirror中配置的私服ID保持一致,设置好用户名跟密码后就可以工作了。
私服访问地址跟权限我们都设置好了,接下来就是要让MAVEN不直接访问远程仓库而是通过私服来下载构件了,我们需要告诉MAVEN,在什么情况下,通过私服下载而不是访问远程仓库,在mirror选项里面,我们将mirrorOf设置为*,这就告诉MAVEN,你只要是从远程仓库下载就转到私服上去请求,私服帮你下载并传给你。
这样我们的工作基本上就算完成了,但是我们访问哪个远程仓库需要走私服这条路呢,在profile里面我们配置了两个仓库,一个maven的*仓库,一个maven的插件仓库,这两个仓库我们都配置好,ID为central,这个不能错,仓库ID是不能错的,一定要仔细确认是否拼写正确且存在,这样配置好后,MAVEN访问这两个仓库就会直接访问私服,但是前提是私服有配置这个远程仓库,具体配置见上面私服配置部分。如果要加其它仓库,依葫芦画瓢加上即可。
这些都配置好后,为了让它生效,我们需要让这个profile配置变成活跃选项,最后
<activeProfiles>
<activeProfile>archiva</activeProfile>
</activeProfiles>
这个就是做这个工作的,这四步完成后,整个私服就搭建完毕,我们就可以通过MAVEN访问私服下载构件了。