Maven in action 读书笔记

第三章

maven complier插件默认只支持编译java1.3,需要在pom中指定jdk版本。
是插件支持java5

<project>
··· 
    <build>
        <plugins>
            <groupId>org.apache.maven.plugins</...>
            <artifactId>maven-compiler-plugin</...>
            <configuration>
                <source>1.5</...>
                <target>1.5</...>
            </...>
        </....>
    </...>
...
</project>

第五章

pom的基本元素

加粗为必选
groupId: maven 项目隶属的实际项目
artifactId: maven 实际项目中的一个maven项目(模块)
version: maven 项目的版本
packaging: maven 项目的打包方式(默认jar)
classifier: 定义构建输出的一些附属构件。比如生产jar文件时,可以通过插件实现同时生产doc包和source包
ps.项目构建的文件名的默认规则为【artifactId-version[-classifier].packaging–>[]表示可选】
##依赖的配置

<project>
    <dependencies>
        <dependency>
            <groupId>xxx</groupId>
            <artifactId>xxx</artifactId>
            <version>0.0.65</version>
            <type>pom</type>
            <scope>import</scope>
            <optional>xxx</optional>
            <exclusions>
                <exclusion>
                   ···
                </exclusion>
                ···
            </exclusions>
        </dependency>
    </dependencies>
···
</project>

groupId, artifactId, version: 依赖的基本坐标元素
type: 依赖类型,与packaging对应,默认值为jar
scope:依赖的范围,compile(编译),test(测试),provided(编译和测试),runtime(测试和运行),system(与provided一样,但是需要使用systemPath显示指定依赖文件的路径),import(第八章介绍)
主要正对编译,测试,运行时classpath不一样的情况。
optional:依赖是否可选
exclusions:排除传递性依赖

scope编译classpath测试classpath运行时classpath
compileYYY
testY
providedYY
runtimeYY
systemYY

依赖性传递

依赖的依赖,比如,项目依赖spring-framework,又需要引入spring-framework的依赖。
通过依赖项目的pom文件实现传递性依赖的解决。
传递性依赖范围规则。
最左边的行表示第一依赖范围,第一行表示第二依赖范围

compiletestprovidedruntime
compilecompileruntime
testtesttest
providedprovidedprovidedprovided
runtimeruntimeruntime

依赖调解

第一原则:路径最近者优先
第二原则:第一声明者优先(A->B->Y(1.0), A->C->Y(2.0))若在项目A中B的声明在C的前面则依赖于Y(1.0)
可选依赖不会传递
对于两个可选依赖要指定一个的时候需要在项目中显示声明

最佳实践

排除依赖

由于版权因素和SNAPSHOT的不稳定性,需要排除第三方依赖,并在项目指定依赖。

归类依赖

<project>
    <properties>
        <springframework.version>2.5.6</springframework.version>
    </properties>
    ···
    <dependencies>
        <dependency>
            <version>${springframework.version}</version>
        </dependency>
        ···
    </dependencies>
</project>

优化依赖

mvn dependency:list 查看依赖
mvn dependency:analyze 分析依赖
需要注意

  1. Used undeclared dependencies
    使用但是未直接声明,直接依赖传递进来的,在直接依赖升级时会导致该依赖发生变化,引起项目编译错误,不易察觉,建议所有使用到的项目依赖都直接声明,方便版本控制
  2. Unused declared dependencies
    maven只会分析主代码和测试代码的依赖,执行测试和运行时的依赖发现不了,建议谨慎处理

第六章

构件路径的构成:
groupId/artifactId/version/artifactId-version-classifier.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值