Maven POM 解析

描述Maven的pom文件中各项配置作用

基础结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <!-- maven 版本号,是固定值 -->
    <modelVersion>4.0.0</modelVersion>

    <!-- 项目包名 -->
    <groupId>org.seckill</groupId>
    <!-- 项目名 + 模块名 -->
    <artifactId>seckill</artifactId>
    <!-- 打包类型,默认 jar -->
    <packaging>war</packaging>
    <!-- 版本号 0.0.0 大版本号.分支版本号.小版本号 -->
    <version>1.0</version>

    <!-- 项目描述名 -->
    <name>seckill Maven Webapp</name>
    <!-- 项目地址 -->
    <url>http://maven.apache.org</url>
    <!-- 项目描述 -->
    <description>product second kill system</description>
    <!-- 开发者信息 -->
    <developers>
        <developer>
            <name>ThkcDo</name>
        </developer>
    </developers>
    <!-- 许可证信息 -->
    <licenses>
        <license>
            <name>xxx</name>
        </license>
    </licenses>
    <!-- 组织信息 -->
    <organization>
        <name>ThkcDo</name>
    </organization>

    <!-- 依赖类库列表 -->
    <dependencies>
        <!-- 测试相关依赖,使用 junit4 ,因为 junit4 是基于注解的 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!-- 依赖范围,compile 默认类型,表示编译测试运行都有效 -->
            <!-- test 表示只在测试时使用 -->
            <!-- provided 表示在编译和测试时有效 -->
            <!-- runtime 表示在测试和运行时有效 -->
            <!-- system 表示在编译和测试时有效,但需要和本机系统关联,也就是依赖包的路径来自于本机,可移植性差 -->
            <!-- import 表示从其他 pom 中导入依赖 -->
            <scope>test</scope>
            <!-- 设置依赖是否可选,默认 false -->
            <optional>false</optional>
            <!-- 排除依赖传递列表 -->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <!-- 依赖管理,用于父模块声明公共依赖供子模块调用 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.dyuproject.protostuff</groupId>
                <artifactId>protostuff-runtime</artifactId>
            </dependency>
        </dependencies>
    </dependencyManagement>

	  <!-- 构建信息 -->
    <build>
        <finalName>seckill</finalName>
        <!-- 插件列表 -->
        <plugins>
            <!-- 具体插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
            </plugin>
        </plugins>
    </build>
</project>