1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22mvn clean compile
mvn clean test
mvn clean package
mvn clean install
1. maven的约定:在项目的根目录放置pom.xml,在 src/main/java目录中放置项目的主代码,在src/test/java中放置项目的测试代码
2. maven定义了一组规则:世界上任何一个构件都可以使用maven坐标唯一标识,maven坐标的元素包括:groupId、artifactId、version、packaging、classifier
groupId: 定义当前maven项目隶属的实际项目。maven项目和实际项目不一定是一对一的关系,一个实际项目往往会被划分成很多模块。groupId不应该对应项目隶属的组织或公司。groupId的表示方式和java包名的表示方式类似,通常与域名反向一一对应
artifactId: 该元素定义实际项目中一个maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀,方便寻找实际构件。默认情况下,maven生成的构件,其文件名会以artifactId作为开头
version: 该元素定义maven项目当前所处的版本
packaging: 该元素定义maven项目的打包方式。打包方式通常与所生成构件的文件扩展名对应。比如packaging为jar,则文件名为xxx.jar,而使用war打包方式的maven项目,最终生成的构件会有一个xxx.war文件,不过这不是绝对的。其次,打包方式会影响到构建的生命周期。当不定义packaging的时候,maven会默认值jar
classifier: 该元素用来帮助定义构建输出的一些附属构件。附属构件与主构件对应,如主构件是nexus-indexer-2.0.0.jar,该项目可能还会通过使用一些插件生成如nexus-indexer-2.0.0.-javadoc.jar、nexus-indexer-2.0.0-sources.jar这样的一些附属构件,其包含了java文档和源代码。javadoc和sources就是这两个附属构件的classifier。注意:不能直接定义项目的classifier,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的
注:groupId、artifactId、version是必须定义的,packaging是可选的(默认为jar),而classifier是不能直接定义的
项目构件的文件名是与坐标相对应的,一般的规则为artifactId-version[-classifier].packaging,[-classifier]表示可选。强调packaging并非一定与构件扩展名对应。
<scope>test</scope>:用来定义依赖范围
3. 依赖的配置
根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个项目依赖。每个依赖可以包含的元素有:
(1) groupId、artifactId、version: 依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,maven根据坐标才能找到需要的依赖
(2) type: 依赖的类型,对应于项目坐标定义的packaging。大部分情况该元素不必声明,其默认值为jar
(3) scope: 依赖的范围
(4) optional: 标记依赖是否可选
(5) exclusions: 用来排除传递性依赖
首页 | 归档 | 分类 | 标签 | 关于 |
|