maven实战——pom文件解析

前言

pom.xml文件是maven项目的核心文件,通过对怕pom文件的解析,何以获取项目的一些基本信息以及所依赖的jar包等信息。

pom文件项目信息的设定

一个简单项目的pom文件内容

<?xml version="1.0" encoding="UTF-8"?>                                 ----指定版本和编码
<project xmlns="..."  
               xmlns:xsi="..."
               xsi:schemaLocation="...">
         <modelVersion>4.0.0<modelVersion>                             ----指定当前pom的版本,对于maven2和maven3来说他只能是4.0.0
         <groupId>com.csdn.mvnbook</groupId>                           ----groupId指定项目属于哪个组,往往与公司或组织存在关联
         <artifactId>hello-world</artifactId>                          ----artifactId指定当前maven项目在组中的唯一Id
         <version>1.0-SNAPSHOT</version>                               ----指定hello world的版本
         <name>Maven Hello World Project</name>                        ----指定项目有一个友好的项目名称,不是必须的
</project>

pom文件中依赖的添加

<pre name="code" class="html"><project>
    <dependencies>
        <dependency>   
            <groupId>org.sonatype.nexus</groupId>              ----当前项目隶属的实际项目,maven项目与实际项目并不是一一对应的方式
            <artifactId>nexus-indexer</artifactId>             ----该元素定义实际项目中的一个模块,使用项目名作为前缀
            <version>2.0.0</version>                           ----定义该项目所处版本
            <packaging>jar</packaging>                         ----指定maven项目的打包方式
        </dependency>
    </dependencies>
</project>

pom文件中添加的依赖其实也是maven项目形式的,通过groupId,artifactId,version等元素来定位jar包的位置。

dependency子元素的解释

<dependency>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <type>...</type>
    <scope>...</scope>
    <optional>...</optional>
    <exclusions>
        <exclusion>
            ...
        </exclusion>
    </exclusions>
</dependency>

groupId,artifactId,version是依赖的基本坐标;type对应项目坐标定义的packaging,默认为jar;scope:以来的范围;optional依赖是否可选;exclusion依赖是否可选。



scope依赖的范围

maven在编译项目的时候也需要自己的一套classpath,依赖范围就是用来控制依赖于这三种的classpath(编译classpath,测试classpath与运行classpath),maven有以下几种依赖的范围:

(1)compile:编译依赖范围,如果没有指定,就会默认使用这个范围。使用次依赖范围对编译,测试与运行都有效。

(2)test:编译依赖范围,使用此范围的依赖只会在测试classpath有效,典型的是Junit依赖。

(3)provided:已提供依赖范围,在编译与测试时有效,在运行时无效。例如servlet-api在编译和测试时需要改依赖,在运行时容器会提供次依赖。

(4)runtime:运行时依赖,对于测试与运行时有效,编译时无效,例如数据库连接驱动依赖,在运行时才有有效。

(5)system:系统依赖范围。使用此依赖范围需要通过systemPath元素显示的指定依赖所在的路径,不通过maven仓库解析,与本机系统有关。

如:

<dependency>
    <groupId>javax.sql</groupId>
    <artifactId>jdbc-stdext</artifactId>
    <version>2.0.0</version>
    <scope>system</version>
    <systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值