Maven学习笔记(二)

Maven学习笔记(二)

1.Maven的生命周期和插件

clean\compile\test \package\install

完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
Maven包含三套独立生命周期,执行某个命令,会依次顺序执行前面的命令,但不会处罚另外两套命令。

1.clean 清理项目

pre-clean 执行清理前的文件啊
clean清理上一次构建生成的所有文件
post-clean 执行清理后的文件。

2.default 构建项目(最核心)

compile test package install

3.site 生成项目站点

pre-site    在生成项目站点前要完成的工作
site        生成项目的站点文档。
post-site   在生成项目站点后要完成的工作。
site-deploy 发布生成的站点到服务器上。

maven中的许多功能均是调用插件实现的。

例如:source插件可以将项目源码进行打包
步骤如下:
- 1.打开pom.xml,向其中加入如下代码

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.4</version>
            <!--绑定source到package阶段-->
            <executions>
                <execution>
                    <!--指定运行阶段-->
                    <phase>package</phase>
                    <!--指定运行目标-->
                    <goal>jar-no-fork</goal>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

之后,进行maven操作时,需要:选中项目右键-》run as -》 maven build…
在goals中填写需要的maven操作。之后,直接敲击shift+alt+x+m即可直接运行maven命令。

2.pom.xml的结构

<project xmlns="...">
    <!--指定当前pom的版本-->
    <modelVersion>4.0.0</modelVersion>

    <groupId>反写的公司网址+项目名</groupId>
    <artifactId>项目名+模块名</artifactId>
    <!--第一个0表示大版本号
        第二个0表示分支版本号
        第三个0表示小版本号
        0.0.1
        snapshot快照
        alpha 内部测试
        beta公测
        Release 稳定
        GA 正式发布
    -->
    <version></version>
    <!--
        默认是jar
        war zip pom
    -->
    <package></package>
    <!--项目描述名-->
    <name></name>
    <!--项目地址-->
    <url></url>
    <!--开发人员-->
    <developers></developers>
    <!--证书-->
    <licenses></licenses>
    <!--组织名-->
    <organization></organization>


    <!--依赖列表重中之重-->
    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
            <type></type>
            <!--依赖范围-->
            <scope>test</scope>
            <!--设置依赖是否可选,有两个值,true、false。默认是false,子项目是继承的。为true,子项目必须选择改该依赖-->
            <optional></optional>
            <!--排除依赖列表-->
            <exclusions>
                <exclusion>

                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <!--依赖管理模块,定义在父类模块,供子模块继承使用,定义的依赖并不会在该模块中使用-->
    <dependencyManagement>
        <dependency>
        </dependency>
    </dependencyManagement>
    <!--为构建行为提供相应的支持-->
    <build>
        <plugins>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
        </plugins>
    </build>
    <!--子模块对父模块pom的继承-->
    <parent></parent>
    <!--聚合运行多个的maven项目,使用此标签方便整体的打包-->
    <modules></modules>

</project>

3.依赖的范围

编写项目,应用某一jar包,须将jar包引用到项目的classpath中。
maven中为我们提供了三种classpath:编译、测试、运行
就是来控制依赖与三中的classpath的关系。
dependency Scope共有6种值可供选择
compile、 默认的范围,比那一测试运行都有效
provided、 在编译测试和测试有效,例如:jdbc
runtime、 测试运行有效
test、 在测试有效
system、 编译测试有效,与本机系统相关联,可以执行差
import、 导入的范围,只是用子啊dependencyManagement中,表示从其它的pom中导入dependecy的配置。
例如:

<project>
    <modelVersion>4.0.0<modelVersion>
    <groupId>maven</groupId>
    <artifactId>B</artifactId>
    <package>pom</package>
    <name>B</name>
    <version>1.0</version>
    <dependencyManagement>
        <dependencies>
            <dependency>
            <!--将A中依赖导入到B中-->
                <groupId>maven</groupId>
                <artifactId>A</artifactId>
                <package>pom</package>
                <version>1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
        <dependencies>
            <dependency>
                <groupId>test</groupId>
                <artifactId>d</artifactId>
                <package>pom</package>
                <version>1.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

通过exclusions可以取消传递依赖。

4.依赖冲突

假设:A->B->C
B依赖common-2.0
C依赖common-2.4
则如果,A的pom中只写了依赖B,那么,A依赖的common是2.0版本(就近原则依赖)
如果,A的pom写了以来B,同时有写了以来C,且先声明的对C的依赖。则A依赖的common是2.4版本的(先声明,先依赖)

5.聚合与继承

聚合,既同时打包整个项目的多个模块,

../A
../B

继承,在开发多个模块时,可能有些模块共用了同一个依赖,则只需顶一个被继承者,使其他模块进行继承即可。
继承者pom.xml

<project>
    <modelVersion>4.0.0<modelVersion>
    <groupId>maven</groupId>
    <artifactId>B</artifactId>
    <package>pom</package>
    <name>B</name>
    <version>1.0</version>
<!--参数可以写入配置标签中-->
    <properties>
        <d.version>1.0</d.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>test</groupId>
                    <artifactId>d</artifactId>
                    <package>pom</package>
                    <version>${d.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

继承者的pom.xml添加:

<parent>
    <groupId>maven</groupId>
    <artifactId>B</artifactId>
    <version>1.0</version>
</parent>

此处贴出博主编写的maven练习源码供大家参考学习,如有问题,欢迎大家共同讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹振坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值