(二)Maven的坐标和依赖&利用Maven实现邮件发送

本文中将《Maven实战》中对坐标和依赖的定义展示给初学Maven的程序猿们,并加上书中实例展示,具体详细请购买《Maven实战》--许晓斌著,更加详细的学习Maven。

坐标详解

groupld:定义当前Maven项口隶属的实际项口。首先,Maven 项目和实际项目不一定是一对一的关系。比如SpringFramework这实际项目, 其对应的Maven项口会有很多,如spring-core、spring-context 等。这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupld不应该对应项目隶属的组织成公同。原因很简单,一个组织下会有很多实际项目,如果groupld 只定义到组织级别,而后面我们会看到、arifactld 只能定义Maven项目(模块),那么实际项目这个层将难以定义。最后,groupld 的表示方式与Java包名的表示方式类似,通常与域名反向一一对应。 上例中,groupld 为ong. sonatype. nexus, ong sonatype 表示Sonatype公司建立的一个非盈利性组织,nexus 表示Nexus这实际项目,该groupld 与城名nerus sonatype. ong对应。
artifactld: 该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactld的前级。比如上例中的artifaectld是nexus-indexer,使用了实际项目名nexus作为前级,这样做的好处是方便寻找实际构件。在默认情况下,Maven生成的构件,其文件名会以artifaetld作为开头,如nexus-indexer-2.0.0. jar,使用实际项目名称作为前缀之后,就能方便从一个lib文件夹中找到某个项目的组构件。考虑有5个项目,每个项目都有一个core模块,如果没有前级,我们会看到很多core-1.2. jar这样的文件,加上实际项目名前级之后,便能很容易区分foo-core-1.2. jar、bar-core-1. 2. jar...... 

 

version:该元素定义Maven项目当前所处的版本,如上例中nexus-indexer的版本是2.0.0。需要注意的是,Maven 定义了一套完整的版本规范,以及快照(SNAPSHOT)的概念。
packaging:该元素定义Maven项目的打包方式。首先,打包方式通常与所生成构件的文件扩展名对应,如上例中packaging为jar,最终的文件名为nexus-indexer-2.0.0. ar,面使用war打包方式的Maven项目,最终生成的构件会一个.war文件,不过这不是地对的。其次,打包方式会影响到构建的生命用期,比如jar打包和war打包会使用不同的命令。最后,当不定义packogne的时候,Maven会使用默认值jar。

上述4个元素中,goupld. arifaeld version 是必须定义的,packaging 是可选的(默认为jar)。
同时,项目构件的文件名是与坐标相对应的,一般的规则为 atifactld-version [ -classifi-er] . packaging, [-classifer] 表示可选。比如上例nexus-indexer的主构件为nexus-indexer-2.0.0. jar,附属构件有nexus-indexer-2.0.0-javadoc. jar。这里还要强调的一点是,packaging非一定与构件扩展名对应,比如packaging为maven-plugin的构件扩展名为jar.

依赖范围

compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依精范围的Meven依赖,对于编译、测试、运行三种classpath 都有效。典型的例子局spring-core,在编译、测试和运行的时候都需要使用该依赖。
test:测试依赖范围。使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码成者运行项目的使用时将无法使用此类依赖。典型的例子基JUnit,它只有在编译测试代码及运行测试的时候才需要。
provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试claerpath有效,但在运行时无效。典型的

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值