Maven教程2(Eclipse配置及maven项目)java
Maven项目,依赖,构建配置,以及构件:全部这些都是要建模和表述的对象。这些对 象经过一个名为项目对象模型(Project Object Model, POM)的XML文件描述。这个POM 告诉Maven它正处理什么类型的项目,如何修改默认的行为来从源码生成输出。一样 的方式,一个Java Web应用有一个web.xml文件来描述,配置,及自定义该应用,一个 Maven项目则经过一个 pom.xml文件定义。该文件是Maven中一个项目的描述性陈述;也 是当Maven构建项目的时候须要理解的一份“地图”。web
<dependencies> <!-- 由于是web项目因此须要servlet --> <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> </dependencies>
在dependencies标签中添加须要依赖的jar对应的maven坐标spring
一个dependency标签表示一个maven坐标apache
团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以建立这个项目的组织名称的逆向域名(reverse domain name)开头。来自Sonatype的项目有一个以com.sonatype开头的groupId,而Apache Software的项目有以org.apache开头的groupId,一个maven坐标必须包含一个groupId必须的api
在groupId下的表示一个单独项目的惟一标识符。好比咱们的tomcat, commons等。不要在artifactId中包含点号(.) ,必须的tomcat
一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目能够用一个特殊的标识,这种标识给版本加上一个"SNAPSHOT"的标记。 虽然项目的打包格式也是Maven坐标的重要组成部分,可是它不是项目惟一标识符的一个部分。一个项目的 groupId:artifactId:version使之成为一个独一无二的项目;你不能同时有一个拥有一样的groupId, artifactId和version标识的项目。必须的dom
依赖范围 依赖范围|编译有效|测试有效|运行时有效|打包有效|例子 --|--|--|--|--|-- Complie|√|√|√|√|spring-core test|×|√|×|×|Junit provided|√|√|×|×|servlet-api runtime|×|√|√|√|JDBC驱动 system|√|√|×|×|本地maven仓库
以外的类库maven
构建索引便于在maven本地仓库中检索 window --> show --> other -->maven
ide
上图中a jar包经过b和d间接依赖到的c jar包版本不一致,出现了冲突 依赖关系|实例 --|-- 直接依赖|a和b的依赖关系 间接依赖|a和c的依赖关系 好比:测试
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency>
先定义的先使用
直接声明使用
排除掉两个冲突中的一个,那么另外一个就天然使用了