美文网首页
Maven 笔记

Maven 笔记

作者: loneliness_ec7d | 来源:发表于2018-12-11 17:47 被阅读0次

    maven 项目常用结构

    src

        -main

            -java

                -package

        -test

            -java

                -package

        resources


    maven 常用命令

    maven -v 查看maven版本

    maven compile 编译

    maven test 测试

    maven package 打包

    maven clean 删除target

    maven install 安装jar包到本地仓库

    maven archetype:generate 按照提示创建目录

    maven archetype:generate -DgroupID=组织名称(公司网址反写+项目名) -DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=代码所存在的包名

    版本号命名习惯:

    第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号。(0.0.1)

    snapshot 快照版本, alpha 内部测试版本, alpha 公测版本, Release 稳定版本, GA 正式发布版本

    eg:0.0.1snapshot


    maven 概念

    坐标

    仓库(本地仓库和远程仓库)

    镜像仓库


    maven 生命周期

        clean 清理项目

             pre-clean 执行清理前的工作

            clean 清理上一次构建生成的所有文件

            post-clean 执行清理后的文件

        default 构建项目(最核心)

            compile 编译

            test 测试

            package 打包

            install 安装

        site 生成项目站点

            pre-site 在生成项目站点前要完成的工作

            site 生成项目的站点文档

            post-site 在生成项目站点后要完成的工作

            site-deploy 发布生成的站点到服务器上

    POM.xml 文件元素介绍

        <project>

            <modelVersion>当前pom版本</modelVersion>

            <groupId>反写公司网址+项目名</groupId>

            <artifactId>项目名+模块名</artifactId>

            <version>版本号</version>

            <packaging>打包方式,默认jar</packaging>

            <name>项目描述名</name>

            <url>项目地址</url>

            <description>项目描述</description>

            <developers>开发人员</developers>

            <licenses>许可证</licenses>

            <organization>组织信息</organization>

            //依赖列表

            <dependencies>

                <dependency>

                    <groupId></groupId>

                    <artifactId></artifactId>

                    <version></version>

                    <type></type>

                    <scope>依赖范围(6种)

                        compile:默认范围,编译、测试、运行时都有效;

                        provided:编译、测试时有效;

                        runtime:测试、运行时有效;

                        test:只在测试时有效(Junit);

                        system:编译、测试时有效,与本机系统相关联,可移植性差;

                        import:导入的范围,只在dependencyManagement中,表示从其他pom中导入dependency的配置。

                    </scope>

                    <optional>设置依赖是否可选</optional> 

                    <exclusions>//排除列表

                        <exclusion></exclusion>

                    </exclusions>

                </dependency>

            </dependencies>

            //依赖管理,作为父类抽象子类继承,不会直接编译

            <dependencyManagement>

                <dependencies>

                    <dependency></dependency>

                </dependencies>

            </dependencyManagement>

            <build>

                //插件列表

                <plugins>

                    <plugin>

                        <groupId></groupId>               

                        <artifactId></artifactId>

                        <version></version>

                    </plugin>

                </plugins>

            </build>

            <parent>继承父类</parent>

            <modules>用于聚合多个模块一起编译

                <module><module>

            </modules>

        </project>

    依赖相关问题

        依赖传递

            多个项目传递依赖时,依赖的上层模块必须编译compile和安装install到本地仓库,依赖的下层模块才能正常编译。

        依赖冲突

            短路优先

                A -> B -> C -> X(1)

                A -> D -> X(2)

                上述两种情况,A模块依赖X的第二个版本。

            先声明优先

                A -> B -> X(1)

                A -> D -> X(2)

                上述情况,由于依赖路径长度相同,则看A中pom文件dependency中B和D声明的位置,如果B先声明,则A依赖X的第一个版本,反之依赖第二个版本。

    相关文章

      网友评论

          本文标题:Maven 笔记

          本文链接:https://www.haomeiwen.com/subject/fqnhvftx.html