Maven使用笔记(三)

pom(project object model)项目对象模型

<!-- 依赖管理 -->
<dependency>
    <!-- 通过坐标管理jar包 -->
    <!-- 项目所在组 -->
    <groupId>junit</groupId>
    <!-- 当前项目在组中的唯一标识 -->
    <artifactId>junit</artifactId>
    <!--
        版本号,
        SNAPSHOT版本,指此项目还在开发中,不稳定
        LATEST版本,指最新发布,这个发布可能是发布版也可能是SNAPSHOT版具体看哪个在最后。
        RELEASE版本,指仓库中最后的一个非快照版本
    -->
    <version>4.11</version>
    <!-- 依赖的范围 -->
    <scope>test</scope>
</dependency>
  • maven通过gav坐标(groupID artifactID version)来确定一个jar包,在本地仓库中可以看到jar包在对应的 groupID/artifactID/version/ 文件夹下

依赖范围

  1. compile : 编译,测试,运行都有效,默认的选择
  2. test : 测试有效,例如junit
  3. provided : 编译,测试有效,例如 servlet ,运行时容器会提供实现
  4. runtime : 运行和测试有效,例如 jdbc,编译时只需相应的接口,测试和运行时才需要具体的实现
  5. system : 编译,测试有效。使用此范围的依赖必须通过systemPath元素显式的指定依赖文件,因而此类依赖是不通过Maven仓库解析的,一般适合于本机测试环境下,依赖本地起的服务。

通过父模块进行jar包管理

父模块的pom文件

<!-- 版本号管理 -->
<properties>
    <junit.version>4.12</junit.version>
    <spring.version>RELEASE</spring.version>
</properties>
<!-- 依赖声明 -->
<!-- dependencyManagement
    只是声明依赖,并不实现引入,子项目需要显式的声明需要用的依赖(groupID和artifactID)
    未指定其他值时version和scope都读取自父模块的值
    如果子项目中指定了其它值,那么会优先使用子项目中指定的值。
-->
<dependencyManagement>
    <dependencies>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

子项目的pom文件

<!-- 依赖管理 -->
<dependencies>
    <!-- 按需要添加依赖,版本被父模块控制,可以自行声明,优先级比父模块更高 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。