《maven实战》学习札记(1)
导入作者的代码以后,发现有的jar包实在是下载不下来,速度太慢,就结合书上的知识,做了如下操作:
(1)在settings.xml文件中用了代理,这里的标签代表具体代理的是哪个标签,这里的例子是代理maven中央仓库
<mirrors>
<mirror>
<id>central_mirror</id>
<name>internal central_mirror epository</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
(2)在pom.xml文件中配置外部仓库,即配置 标签, 代表是否可以从这个仓库下载稳定版的构件,意思同理代表是否支持下载快照版的构件。
<repositories>
<repository>
<id>oschinaRepository</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
通过上述的操作之后,jar包的下载就比较快了。
针对作者的5.9.3节优化依赖的内容,我也尝试了一下,觉得很不错,依次在图中goals输入下列命令
1. dependency:list
得到如下的结果,可以看到整个项目的已解析依赖的情况
2. dependency:tree
相比list的情况,这个命令会把依赖情况解析为依赖树,通过依赖树就能很清楚的看到某个依赖是通过哪条传递路径引入的。
3. dependency:analyze
按照书上的步骤,故意去掉一个spring-context的依赖,就会出现下图的情况
出现used undeclared dependencies:表示项目用到的,但没有显式声明的依赖,这种情况需要重视,一旦这些依赖发生变化,比如升级依赖(代码接口变化等细节),就会导致编译失败。
而unused declared dependencies ,指的是项目中没有用到的依赖,但却显式声明的依赖。但我们不能直接删除这些依赖,因为dependency:analyze只会分析编译主代码和测试代码用到的依赖,对于运行阶段用到的依赖无法察觉,spring-core和spring-beans是运行springFrame项目必要的类库!所以个人感觉不要管这些unused declared dependencies,除非你非常确定(反正我是不管<( ̄3 ̄)> )。
快照版本的理解
我对快照版本的理解:假设小王和小孙两个人分别开发两个A,B模块,但是B模块依赖A模块,那样小王只要将A模块大致完成后,声明为snapshot形式,并发布到仓库,而小孙在B模块的pom.xml引入这个A模块的snapshot版本,那样小王可以不断完善A模块的功能,而小孙基本不用管,B模块始终是A模块的最新版(因为是由Maven来管理识别A模块的最新版),当A模块开发完成后,将A模块的release版发布到仓库中,小孙同样修改pom,使B模块依赖A的release版即可,通过上面的例子可以看出,快照版在开发阶段可以省去很多麻烦。