maven笔记保存

在慕课网学了下项目管理利器——maven课程,笔记记录一下

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

1、maven 目录结构
src
----main
-------java
----------package
----test
-------java
----------package
----source

2、maven命令
mvn     
    -v             查看maven版本
    compile         编译
    test             测试
    package         打包
    
    clean            删除target(字节码文件、测试报告)
    install         安装jar包到本地仓库中,其他的项目就可以引用该jar包

    archetype:generate     archetype插件:用于创建符合maven规定的目录骨架
        1、按提示    groupId:com.imooc.maven03
                artifactId:maven-service
                version:1.0.0SNAPSHOT
                package:com.imooc.maven.service
        2、一次性    archetype:generate -DgroupId=组织名,公司网址的反写+项目名
                        -DartifactId=项目名-模块名
                        -Dversion=版本号
                        -Dpackage=代码所存在的包

3、maven 坐标和仓库
    pom.xml 中 groupId、artifactId、version 构成坐标
    仓库:本地仓库和远程仓库
        中央仓库查看:G:\maven\apache-maven-3.5.0\lib\maven-model-builder-3.5.0.jar\org\apache\maven\model\pom.xml
            <url>https://repo.maven.apache.org/maven2</url>
    镜像仓库
    更改仓库位置

4、maven生命周期
    clean        清理项目
        pre-clean 执行清理前的工作
        clean 清理上一次构建生成的所有文件
        post-clean 执行清理后的文件
    default        构建项目(核心)
        compile test package install
    site        生成项目站点
        pre-site 在生成项目站点之前要完成的工作
        site 生成项目的站点文档
        post-site 在生成项目站点后要完成的工作
        site-deploy 发布生成的站点到服务器上

5、maven插件
    使用maven的插件在pom.xml中配置:
    build  --顾名思义
        plugins --多个插件
            plugin  --具体插件
                groupId --指定插件具体坐标
                artifactId --指定插件具体坐标
                version --指定插件具体坐标
                executions --需要执行的多个指令
                    execution --需要执行的具体指令
                        phase --阶段
                        goals --目标指令
                            goal --具体目标

6、依赖冲突( B C 依赖了不同版本的 A , D 依赖了 B C ,D 选择依赖那个版本的 A )
    短路优先:选路径短的
        A -> B -> C -> x(jar)
        A -> D -> x(jar)    选择该版本
    先声明先优先(路径相同)

7、聚合和继承
    
    聚合:将项目放到一起运行
        新建maven项目,packaging改为pom
        <modules>中把要聚合的项目声明,然后运行该项目即可

    继承:通用的依赖通过继承
        新建maven父亲项目,packaging改为pom,main和test可删除
        <dependencyManagement>放入通用的依赖

        子项目通过<parent>标签引入父项目的标签
        dependency中依赖的版本号可以删除

8、pom.xml配置说明

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- 指定了当前pom的版本 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- 反写的公司网址+项目名 -->
  <groupId>com.imooc.hi</groupId>
  <!-- 项目名+模块名 -->
  <artifactId>hi</artifactId>
  <!-- 当前项目的版本号0.0.1
          0大版本号
          0分支版本号
          1小版本号
            snapshot快照版本  alpha内部测试  beta公测  release稳定  GA正式发布
   -->
  <version>0.0.1-SNAPSHOT</version>
  <!-- 默认是jar
      war zip pom等打包方式
   -->
  <packaging>jar</packaging>

  <!-- 项目名 -->
  <name>hi</name>
  <!-- 项目地址 -->
  <url>http://maven.apache.org</url>
  <!-- 项目描述 -->
  <description></description>
  <!-- 开发者信息 -->
  <developers></developers>
  <!-- 许可证信息 -->
  <licenses></licenses>
  <!-- 组织信息 -->
  <organization></organization>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- 依赖列表 -->
  <dependencies>
      <!-- 依赖项-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <!--  <type></type> -->
      <!-- 依赖范围,只有test中有效
          compile:默认的范围,编译、测试以及运行阶段都有效
          provided:在编译和测试时有效
          runtime:在测试和运行时有效
          test:只在测试范围有效
      -->
      <scope>test</scope>
      <!-- 设置依赖是否可选,默认false可继承,true要显示引用 -->
      <optional></optional>
      <!-- 排除依赖传递列表 -->
      <exclusions>
          <!-- A依赖B,B依赖C,A不想依赖C -->
          <exclusion></exclusion>
      </exclusions>
    </dependency>
  </dependencies>
  <!-- 依赖的管理 -->
  <dependencyManagement>
   <!-- 方便子模块继承使用,本身不用
      <dependencies>
          <dependency></dependency>
      </dependencies>
      -->
  </dependencyManagement>

  <build>
  <!-- 插件列表 -->
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <version>3.0.1</version>
              <executions >
                  <execution>
                      <phase>package</phase>
                      <goals>
                          <goal>jar-no-fork</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>
  <!--  
  <parent></parent>
  -->
  <!-- 指定多个模块编译 -->
  <modules></modules>
</project>

9、maven部署web项目

在pom.xml中加上

<build>
    <finalName>webdemo</finalName>
     <plugins>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <executions>
              <execution>
              <!-- 在打包成功后使用run运行tomcat -->
                 <phase>package</phase>
                  <goals>
                      <goal>run</goal>
                  </goals>
              </execution>
          </executions>
        </plugin>
      </plugins>
  </build>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值