maven快捷使用说明

发布时间:2020-06-10 11:42:23 作者:NopSmile
来源:网络 阅读:362

1、下载maven : https://maven.apache.org/download.cgi

 配置环境变量:M2_HOME:D:\apache-maven-3.5.4
                :path:%M2_HOME%\bin;
    测试maven:cmd  mvn -v

2、groupId的值就是项目的包名

   artifactId的值就模块名
   version版本

   例如:
    <groupId>com.maven.demo</groupId>
    <artifactId>maven01-model</artifactId>
    <version>0.0.1SNAPSHOT</version>

    maven的目录结构
        project
            src
                -main
                    -java
                        -package
                -test
                    -java
                        -package
                resources
        mvn compile
        mvn test
        mvn package

3、maven常用构建命令

    mvn -v 查看maven版本
        compile 编译
        test 测试
        package 打包
        clean 删除target
        install 安装jar包到本地仓库中(先找pom.xml依赖,在找本地库,最后找网上中央库)

maven自动建立目录骨架
第一种方式 mvn archetype:generate

第二种方式 mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名 
                                      -DartifactId=项目名-模块名 
                                      -Dversion=1.0.0SNAPSHOT 
                                      -Dpackage=代码存在的包

maven 坐标和仓库
        基本坐标:
            构件
            <groupId>com.maven.demo</groupId>
            <artifactId>maven01-model</artifactId>
            <version>0.0.1SNAPSHOT</version>
        仓库:
            本地仓库
            远程仓库(maven-model-bulider)
        镜像仓库
            \apache-maven-3.5.4\conf\settings.xml (152行)
            <mirror>
                <id>maven.net.cn</id>
                <mirrorOf>central</mirrorOf>  <!--可以用通配符*-->
                <name>central mirror in china</name>
                <url>http://maven.net.cn/content/groups/public</url>
            </mirror>
        更改仓库位置(默认路径:C:\Users\CHUAN\.m2)
            \apache-maven-3.5.4\conf\settings.xml (53行)
            <localRepository></localRepository>

eclipe安装maven插件以及创建maven项目
        Preferences-Maven-Installations 添加maven目录
                         -User Settings 添加maven的setting.xml(.\apache-maven-3.5.4\conf\setting.xml)

maven的生命周期和插件
        完整的项目构件过程包括:
        清理、编译、测试、打包、集成测试、验证、部署
        maven生命周期
        clean 清理项目
            pre-clean 执行清理前的工作
            clean 清理上一次构建生成的所有文件
            post-clean 执行清理后的文件
        default 构建项目(最核心)
            compile test package install
        site  生成项目站点
            pre-site 在生成项目站点前要完成的工作
            site 生成项目的站点文档
            post-site 在生成项目站点后要完成的工作
            site-deploy 发布生成的站点到服务器上

maven生命周期
        clean、compile、test、package、install

maven中pom.xml解析
        <modelVersion>4.0.0</modelVersion> 指定当前pom的版本
        坐标信息
        <groupId>组织名,公司网址的反写+项目名</groupId> 主项目的标识
        <artifactId>项目名-模块名</artifactId> 模块的标识
        <!--
        第一个0表示大版本号
        第二个0表示分支版本号
        第三个0表示小版本号
        0.0.1
        snapshot快照版本
        alpha内测版本
        beta公测
        release稳定
        GA正式发布
        -->
        <version></version> 当前项目的版本号
        <!--
        默认是jar
        也可以是war,zip,pom
        -->
<packaging></packaging> 打包的方式

<name></name> 项目描述
<url></url>项目的地址
<description></description>项目描述
<developers></developers>项目开发人员
<licenses></licenses>许可
<organization></organization>组织

重要:依赖列表
        <dependencies>
            <dependency>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <type></type>
                <scope>test</scope> 依赖范围
                <optional>true/默认false</optional> 设置依赖是否可选,
                                                    如果是false子项目是默认继承的
                                                    如果是true子项目必须显示引入该依赖
                <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></modules>聚合多个模块

maven 依赖范围
        <scope></scope> 三种classpath: 编译  test测试  运行

        compile:默认的范围,编译测试运行都有效
        provided:在编译和测试有效
        runtime:在运行的时候有效
        test:只在测试有效 典型应用junit
        system:在编译和测试有效  与本机系统相关联,可移植性差
        import:导入的范围,它只使用在dependencyManagerment中,
               表示从其他的pom中导入dependecy的配置
        http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html      

    maven 是依赖传递特性的
        a-pom.xml
        b-pom.xml
        c-pom.xml
        如果b集成a,c会自动集成a。

        如果创建maven项目 jre system library 显示jre5 但是 jre里面是1.8
        修改setting.xml(188行)
        <profile>
                <id>jdk-1.8</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                    <jdk>1.8</jdk>
                </activation>
                <properties>
                    <maven.compiler.source>1.8</maven.compiler.source>
                    <maven.compiler.target>1.8</maven.compiler.target>
                    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
                </properties>
        </profile>

maven 依赖冲突
        1、短路优先
        A->B->C->X(jar)
        A->D->X(jar)优先解析
        例如:A依赖2.4jar B依赖A和2.0jar C依赖B 所以C依赖2.0jar

        2、先声明先优先
        如果路径长度相同,则谁先声明,先解析谁
        例如:A依赖2.4jar B依赖2.0jar C中pom A在B前  所以C依赖2.4jar

    Maven 聚合和继承
        maven聚合:
            父模块的pom文件修改
            <package>pom</package>
            <modules>
                <module>子模块项目名一</module>
                <module>子模块项目名二</module>
            </modules>

maven继承:
            如果每个module 也就是每个小的模块中的pom 有重复的 jar 
            比如junit 这样可以用继承。。 
            创建父类项目,<packaging>标签元素值修改为pom 
            然后加一个标签<dependencyManagement> 把依赖放到里面。。 
            其中的版本号, 可以通过引用来表示,需要添加 <properties>标签。

子类用<parent>标签 引用父pom.xml坐标
        例如:新建父类中pom.xml如下:
            <packaging>pom</packaging>
            <properties>
                <junitversion>3.8.1</junitversion>
            </properties>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junitversion}</version>
                <scope>test</scope>
            </dependency>

子类pom.xml
            <parent>
                父pom.xml的坐标
            </parent>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>

使用maven构建web项目
        添加java servlet api的坐标 scope为provide
        手动创建maven骨架文件
        检查 java build path outfolder 为/target/classes/目录
        项目转换成web项目,右键属性,project facets为Dynamic 勾选
        发布右键属性,deployment assembly 把test都去掉
        在pom.xml使用packaging命令打成war包
        添加jetty maven的插件到pom.xml
            <executions>
                    <execution>
                    <!-- 在打包成功后使用jetty:run 运行 jetty的服务 -->
                        <phase>package</phase><!--打包阶段-->
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>

总结:

maven下载和环境搭建
maven目录骨架说明

推荐阅读:
  1. AMM使用说明
  2. pgbackrest 简要使用说明

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

maven 使用 51cto

上一篇:java中char数据类型怎么用

下一篇:java和html有什么区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》