在学习<Maven实战>时,按照书中的一个事例练习,其中需要依赖一个jar包,叫kaptcha-2.3-jdk15.jar,这个jar包是用来生成验证码的开源类库,由于没有上传到中央仓库,因此需要在项目中声明这个发布该类库的仓库地址,我将该地址直接在Nexus中进行了代理,但发现在MyEcplise中并不能找到该索引,但是在Nexus中明明可以搜索到这个jar包,一番资料查找后发现,原来M2Ecplise需要手动更新索引,否则,就需要重新启动MyEcplise,重建索引的步骤为:
- 打开window-Show View-Other,找到Maven选项,打开后可以看到如下图所示
- 选择"Maven Repositories",弹出页面如下图所示
- 右键点击nexus,选择"Rebuild Index",即可完成索引的重新构建
这次在M2Ecplise中搜索该插件,终于可以找到了,但是添加到POM文件中,文件报错,查看引用Jar包,发现这个Jar包还是没有被引入,查看项目属性中的Jar包引用列表,发现Jar包已经引入,但是Jar包标识上带有异常符号,在输出框中输出"Missing artifact com.google.code.kaptcha:kaptcha:jar:jdk15:2.3:compile",奇怪,明明可以搜索到了,为什么会找不到呢?于是,我打开本地仓库目录,在目录中发现该Jar包的目录已经建立了,但是所需要的jar包以及pom文件并没有下载下来,目录中出现的文件名称后缀名均是".lastUpdated",如"kaptcha-2.3-jdk15.jar.lastUpdated";难道是我开始的时候,并没有在Nexus加加入提供该Jar包仓库的代理,而直接添加了这个Jar包的依赖,导致该jar包下载失败,当我添加完毕该仓库的代理后,并重新建立了整个索引后,再进行加载该Jar包时,Maven并没有向Nexus发送请求,而是默认当前Jar包依然是不存在的? 为了验证这个想法,我就把本地仓库中这个Jar包的整个目录删除了,然后重新加载这个Jar包,
果然,加载成功,总算是解决了一个大难题!!!!
不过Maven在第一次加载失败后,下次加载时就不再向私服发送请求的问题,是因为我配置的问题?还是说这就是Maven本身的一个固定机制呢?仍然在寻找答案中........