maven入门下
来源:互联网 发布:www.47es.com最新域名 编辑:程序博客网 时间:2024/06/05 18:35
上一篇博文写了怎么安装配置和怎么在myeclipse里面使用maven,我的宗旨是先得会用,然后再去深入探究其核心内容。所以这篇文章在前一篇的基础上讲讲maven更深入的东西,主要介绍几个我们经常接触到的概念。
在 pom.xml中,groupId, artifactId, packaging, version称为maven的坐标,它能唯一的确定一个项目。有了 maven坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。
大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM会继承父项目的 POM。
Maven依赖管理
在 POM 中,依赖关系是在 dependencies部分中定义的。比如前一篇博文中,示例默认建了一个对junit的依赖,如下
这个例子很简单,但是实际开发中我们会有复杂得多的依赖关系,因为被依赖的 jar文件会有自己的依赖关系。那肯定有人会和我一样要问,那那些间接依赖的 jar文件怎么办?
maven官网现在也也提供这个功能了,所以新手看哪个方便就用哪个吧。
在 POM 的 dependencies 部分中,scope 决定了依赖关系的适用范围。我们的例子中 junit 的 scope 是 test,那么它只会在执行 compiler:testCompile and surefire:test 目标的时候才会被加到 classpath 中,在执行 compiler:compile 目标时是拿不到 junit 的。
我们还可以指定 scope 为 provided,意思是 JDK 或者容器会提供所需的jar文件。比如说在做web应用开发的时候,我们在编译的时候需要 servlet API jar 文件,但是在打包的时候不需要把这个 jar 文件打在 WAR 中,因为servlet容器或者应用服务器会提供的。
scope 的默认值是 compile,即任何时候都会被包含在 classpath 中,在打包的时候也会被包括进去。
Maven 库
首次运行maven的时候,它会从 maven 默认的远程库(http://search.maven.org/) 下载的相关jar包。(注意一点,一般大公司都有自己定制的jar,所以并不是所有的包都是从这个默认库下载的)POM (Project Object Model)
一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler标签,让它使用 java 1.7来编译。在 pom.xml中,groupId, artifactId, packaging, version称为maven的坐标,它能唯一的确定一个项目。有了 maven坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。
大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM会继承父项目的 POM。
Maven依赖管理
在 POM 中,依赖关系是在 dependencies部分中定义的。比如前一篇博文中,示例默认建了一个对junit的依赖,如下
这个例子很简单,但是实际开发中我们会有复杂得多的依赖关系,因为被依赖的 jar文件会有自己的依赖关系。那肯定有人会和我一样要问,那那些间接依赖的 jar文件怎么办?
不用担心,因为 maven 提供了传递依赖的特性,即 maven会检查被依赖的 jar 文件,把它的依赖关系纳入最终的依赖链中,也就是我们上面说的pom的依赖。这种依赖,在myeclipse里面还能以图形界面显示出来(打开pom文件的dependency Graph视角)。
这里我无意中发现了个网站(好像是在github上找某个开源软件源码和jar的时候找到的),http://mvnrepository.com/ 这里可以看到每个jar依赖的jar,同时还可以下自己想要的jar包(强烈鄙视那些把jar传到CSDN还要分的人!)maven官网现在也也提供这个功能了,所以新手看哪个方便就用哪个吧。
在 POM 的 dependencies 部分中,scope 决定了依赖关系的适用范围。我们的例子中 junit 的 scope 是 test,那么它只会在执行 compiler:testCompile and surefire:test 目标的时候才会被加到 classpath 中,在执行 compiler:compile 目标时是拿不到 junit 的。
我们还可以指定 scope 为 provided,意思是 JDK 或者容器会提供所需的jar文件。比如说在做web应用开发的时候,我们在编译的时候需要 servlet API jar 文件,但是在打包的时候不需要把这个 jar 文件打在 WAR 中,因为servlet容器或者应用服务器会提供的。
scope 的默认值是 compile,即任何时候都会被包含在 classpath 中,在打包的时候也会被包括进去。
阅读全文
0 0
- maven入门下
- Apache Maven 入门篇 ( 下 )
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Maven入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- Apache Maven 入门篇(下)
- SQL 与 Oracle SQL常用语句
- 适配器模式
- 在Word2013中如何将PDF文件转换为Word文件?
- IOS视频压缩功能实现
- czl蒻蒟的OI之路3
- maven入门下
- 慕课课程《进击Node.js基础(二)》的小爬虫
- UI组件库jQWidgets更新至v5.2.0,新增Angular枢轴网格
- segment python
- 分支的新建与合并
- 9月6日
- android应用层-activity启动方式
- Java集合类源码详解
- hash一致性java实现