maven入门及使用

1.maven为我们提供了一个archetype插件,用于创建符合maven规范的目录骨架。

    maven规定是:
    ---src
        ---main
            ---java
                ---主代码
        ---test
            ---java
                ---测试代码
    命令:
        mvn -v   查看maven版本
        compile  编译
        test     测试
        package  打包
      
        clean     删除target
        install   安装jar包到本地仓库中
        
        
        创建目录的两种方式:
        1.archetype:generate 按照提示进行选择
        2.artchetype:generate -DgroupId=组织名,公司网址的反写+项目名
                              -DartifactId=项目名-模块名
                              -Dversion=版本号
                              -Dpackage=代码所存在的包名

3.在maven世界中任何一个依赖、插件、项目构建的输出都可以被称为构建,构
件通过坐标作为其唯一标识。

    坐标
        构件
    仓库
        本地仓库和远程仓库
        在maven的安装目录中---lib---maven-model-builder-3.3.3.jar中有pom.xml
    镜像仓库
        在maven的安装目录中--config--settings.xml--mirrors标签(145行)
        <mirror>
            <!--镜像仓库的ID-->
            <id>maven.net.cn</id>
            <!--为哪个仓库配置镜像,中央仓库名为central,也可以使用通配符*-->
            <mirrorOf>central</mirrorOf>
            <name>central mirror in china</name>
            <url>http://maven.net.cn/content/groups/public</url>
        </mirror>
    更改仓库的位置
        找到settings.xml---<localRepository>标签(注意路径是/)
        <localRepository>J:/test/repository</localRepository

4.在Eclipse中使用maven(如果是4.0以上或者Myeclipse就不必安装插件)
1.找到Eclipse的dropins文件夹,把maven插件放入即可
2.修改Eclipse的jvm:找到eclipse.ini文件,打开添加-vm:c:\java...\javaw.exe
3.修改Eclipse中jre的配置
4.修改maven中的路径设置

    1.一个完整的项目构建过程包括:
        清理、编译、测试、打包、集成测试、验证、部署
    2.maven生命周期:
        clean    清理项目,分为三个阶段
             pre-clean  执行清理前的工作
             clean      清理上一次构建生成的所有文件
             post-clean 执行清理后的文件
             
        default  构建项目(最核心)包括:
            compile、test、package install
        
        
        site     生成项目站点包括以下阶段:
            pre-site  在生成项目站点前要完成的工作
            site      生成项目的站点文档
            post-site 在生成项目站点后要完成的工作
            site-deploy 发布生成的站点到服务器上
    3.maven支持的插件简单介绍:(https://maven.apache.org/plugins/index.html)
        source  可以将项目的源码进行打包
            举例:在pom.xml中配置
                <build>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.4</version>
                        <!--绑定source命令到packge命令生命周期中,
                        执行package命令时,自动执行source命令-->
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <!--运行的目标-->
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </build>
            然后执行  clean package命令

5.pom.xml介绍

    <modelVersion>4.0.0</modelVersion>是一个固定的版本,是一个必须的元素,指定了当前pom的版本
    坐标的信息
    
    <!--主项目的标识,用来定义当前maven属于哪个实际的项目的,以反写的公司网址+项目名-->
    <groupId>com.hbtt.test.a</groupId>
    <!--表示一个模块的标识,实际项目中的一个模块,一般使用时间的项目名+模块名-->
    <artifactId>haha</artifactId>
    <!--表示当前项目的版本号-->
    <!--0.0.1
        第一个0表示大版本号
        第二个0表示分支版本号
        第三个0表示小版本号
        snapshot 快照版本
        alpha    内部测试
        beta     公测
        Release  稳定
        GA       正式发布
    -->
    <version>0.0.1-SNAPSHOT</version>
    
    <!--maven项目的打包方式-->
    <!--
        默认是jar
        war zip pom
    -->
    <packaging>jar</packaging>
    <!--项目的描述名,在产生项目文档时使用-->
    <name>haha</name>
    <!--项目地址-->
    <url>http://maven.apache.org</url>
    <!--项目描述-->
    <description></description>
    <!--开发人员列表-->
    <developers></developers>
    <!--许可证信息,比如用到开源框架时-->
    <licenses></licenses>
    <!--组织信息-->
    <organization></organization>
    <!--依赖信息-->
    <dependencies>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <!--依赖的范围,test表示junit只在测试依赖范围内有用,在主代码中会报错
            maven提供了三种classpath:1.编译2测试3运行
            scope有六种级别:
            1.compile:默认的范围,编译测试运行都有效
            2.provided:在编译和测试时有效,比如servlet API
            3.runtime:在测试和运行时有效 比如JDBC驱动,编译时只需要jdbc主代码提供的API,只有在
            测试和运行时才需要jdbc的实现代码
            4.test 只在测试范围有效
            5.system:与本机系统相关联,可移植性差,编译测试时有效,比如引入本地的JAVAHOME可能
            会因为改变系统,路径不一致而报错
            不一致
            6.import:一个导入的范围,只用在<dependencyManagement>标签中表示从其他的
            pom中导入dependecy的配置
         -->
         <scope>test</scope>
         <!--设置依赖是否可选,只有两个值true和false,默认false,子项目默认是继承的,
         如果true,子项目必须显示的继承-->
         <optional></optional>
         <!--排除依赖传递列表-->
         <exclusions>
            <exclusion></exclusion>
         </exclusions>
    </dependencies>
    <!--依赖管理,可以包含多个依赖,但是它不会被运行,引入到实际的依赖中,这个标签用于
    定义在父模块中,供子模块继承。比如junit放在父模块中,其他继承即可-->
    <dependencyManagement>
        <dependencies>
            <dependency></dependency>
        </dependencies>
    </dependencyManagement>
    <!--通常为构件行为提供相应的支持-->
    <build>
        <plugins>
            <plugin>
                groupId ,artifactID version等标签
            </plugin>
        </plugins>
    </build>
    <!--通常用于子模块对父模块pom的继承-->
    <parent></parent>
    <!--用来聚合运行多个的maven项目,如果有多个maven需要编译,使用此标签,可以指定多个模块一起编译-->
    <modules></modules>

6.修复JDK版本

        1.找打maven的settings文件中的profiles标签
        2. 按如下格式书写,必须按如下写
        <profile>
              <id>jdk-1.7</id>

              <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.7</jdk>
              </activation>
              
              <properties>
                <maven.compiler.source>1.7</maven.compiler.source>
                <maven.compiler.target>1.7</maven.compiler.target>
                <maven.compiler.compilerVesion>1.7</maven.compiler.compilerVesion>
              </properties>
         </profile>

7.用maven构件web项目

    注意:
    1.选择archetype-webapp选项
    2.对于index报错,添加servlet依赖
    3.检查文件的输出路径:build Path-->configure build path-->source选项
    4.改成web项目
        选择项目属性-->maven-->project Facets 中勾选上Dynamic web services选项
    5.修改部署时的默认配置:
    点击项目属性--->选择Deployment Assembly选项-->删除掉测试的文件
    6.使用jetty启动web项目:引入jetty插件依赖,然后运行时输入jetty:run
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容