新时代的IO处理利器
私服 大部分公司都会搭建私服,私服就是一种特殊的远程仓库,它是架设在局域网内的仓库 。比如公司搭建局域网,公司也搞个仓库,然后开发人员就直接使用公司搭建的私服就行了,这样大大减少了网络开销以及开发成本(有时候外网访问很慢,会浪费大家开发时间的)。 这样开发人员每次需要每个jar包就直接从公司的私服里拉取,不需要使用外网去中央仓库里拉取了。总之节约时间和节约网络开始。并且有些企业还是不给外网的,这时候你就知道这个私服的重要性了。
增加了私服后,本地仓库+私服+中央仓库的关系图: 依赖范围 所谓的依赖范围就是指我们在什么需要依赖的jar。有的是在编译的时候就需要,有的是测试的时候需要等。 依赖范围scope有以下6种: 「compile」 默认编译依赖范围。对于编译,测试,运行三种classpath都有效。即在编译、测试和运行的时候都要使用该依赖jar包; 「test」测试依赖范围。只对于测试classpath有效。而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要; 「provided」已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api.jar,这个在编译和测试的时候需要用到,但是在运行的时候,web容器已经提供了,就不需要maven帮忙引入了。 「runtime」运行时依赖范围,使用此依赖范围的maven依赖,对于编译测试、运行测试和运行项目的classpath有效,但在编译主代码时无效,比如jdbc驱动实现,运行的时候才需要具体的jdbc驱动实现。
「system」系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植(即就是在你的电脑上可能没问题,但是到别人电脑上那就说不清楚了),有点类似provided ,注意这个system谨慎使用。 packaging 标签默认是jar,所以通常我们在没有指定打成jar包还是war的时候,最终打成的就是jar包。 Maven坐标的组成 「groupId」组织标识(包名)。定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一的关系。比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向一一对应。上例中,groupId为junit,是不是感觉很特殊,这样也是可以的,因为全世界就这么个junit,它也没有很多分支。 「artifactId」项目名称。该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。比如上例中的junit,junit就是实际的项目名称,方便而且直观。在默认情况下,maven生成的构件,会以artifactId作为文件头,如junit-3.8.1.jar,使用实际项目名称作为前缀,就能方便的从本地仓库找到某个项目的构件。 「version」项目的当前版本或者我们要依赖jar的版本。该元素定义了使用构件的版本,如上例中junit的版本是3.8.1,你也可以改为4.0表示使用4.0版本的junit。 「packaging」项目的打包方式,最为常见的jar和war两种,默认是jar。定义Maven项目打包的方式,使用构件的什么包。首先,打包方式通常与所生成构件的文件扩展名对应,如上例中没有packaging,则默认为jar包,最终的文件名为junit-3.8.1.jar。也可以打包成war等。 「classifier」 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为junit-3.8.1.jar,该项目可能还会通过一些插件生成如junit-3.8.1-javadoc.jar,junit-3.8.1-sources.jar, 这样附属构件也就拥有了自己唯一的坐标。 上述5个元素中,groupId、artifactId、version是必须定义的,packaging是可选的(默认为jar),而classfier是不能直接定义的,需要结合插件使用。 Maven为什么使用坐标呢? Maven世界里拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范。 拥有了统一规范,就可以把查找工作交给机器。 maven依赖管理 依赖 依赖通常表现为:我需要你的东西,就像情侣之间相互依赖,夫妻之间相互依赖,人依赖于水,人依赖于粮食等。 在Maven中则表现为:项目中用到b.jar包的每个类,此时的项目就依赖b.jar。
复杂点关系就是多层依赖:a.jar包依赖b.jar包,还有可能b.jar包依赖c.jar。这种现象也可以称之为依赖传递性。 (编辑:淮南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |