Java系列七 maven小录

maven

maven是基于Java的自动化构建工具。

how to install

On Win

  1. Download

在这里插入图片描述

  1. UnZip

在这里插入图片描述

  1. Move

在这里插入图片描述

  1. Update setting in /apache-maven/conf/setting.xml

在这里插入图片描述

  1. Add path

在这里插入图片描述
在这里插入图片描述

  1. Change preferences

在这里插入图片描述

On Mac

  1. Download
    在这里插入图片描述

  2. UnZip

在这里插入图片描述
3. Move

在这里插入图片描述

  1. Update setting in /Aplications/apache-maven/conf/setting.xml
    在这里插入图片描述

  2. Add path

ls -a
open -e .bash_profile

在这里插入图片描述
6. Change preferences

在这里插入图片描述
在这里插入图片描述

maven project directory display

- project
  - src
  	- main
      - java
      - resource
      - [webapp]
      	- [WEB-INF]
      	  - [web.xml]
      	- [index.jsp]
  	- test
  	  - java
  	  - resource
  - pom.xml

maven command

mvn compile
mvn test
mvn package
mvn install
mvn deploy

maven concept

GAV包唯一定位

Maven下的所有工程在中央仓库中,要想准确找到一个开源项目,则需要使用三个坐标,即GAV,中文翻译为组织名、项目名、版本号。

GAV写法
<groupId>me.dongqinglin</groupId>
<artifactId>helloMaven</artifactId>
<version>1.0</version>
作用域

scope通常翻译成作用域,当然也有一些艰深的翻译方法。

作用域主要有三个,compile, test and provide。作用域默认为compile。

作用域compiletestprovide
源码区
测试区
打包时

其中,涉及不同项目的传递继承,则当且仅当引用项目的引入库为compile时,才能成立。

其中provide作用域只有在网络服务器环境提供的情况下才适用,不需要打包进项目。

排除
<dependencies>
  <dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    <exclusions>
      <exclusion></exclusion>
    </exclusions>
  </dependency>
</dependencies>

项目工作流

maven管理项目是以工作流的形式进行的。有部分也将之称为生命周期,但笔者认为生命周期应该专指项目生命周期,在下面论述。

工作流意味每个mvn命令时严格遵循运行条件的。举个例子,在下面的mvn命令中,运行 package命令就会自动运行先前的compiletest命令,如果前面的两个命令通不过,则package命令也无法通过。

需要注意的是,如果项目第一次运行这个命令,则需要安装mvn运行必要环境,可能时间后稍慢。

mvn compile
mvn test
mvn package
mvn install
mvn deploy

项目生命周期

maven定义了一系列项目的生命周期,主要有验证、初始化、源代码、编译、打包、安装和部署。

主要可以分为四个阶段。

pre-site -> site -> post-site -> site-deploy

生命周期描述
Pre-site项目开始前准备
Site项目及源码构建
Post-site项目发布前准备
Site-deploy项目发布

项目继承与聚合

在这里插入图片描述

在IDEA中创建maven的父工程会默认一并创建src目录,需要删除。子工程可以在项目中通过new module创建,IDEA会自动调整pom文件,如下。

parent/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>me.dongqinglin</groupId>
    <artifactId>parent</artifactId>
    <version>1.0</version>

    <packaging>pom</packaging>
    <modules>
        <module>child</module>
    </modules>

    <!-- 版本统一声明 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--  use${java.version}  -->
    </properties>

    <dependencyManagement>
        <dependencies>

        </dependencies>
    </dependencyManagement>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
parent/child/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>parent</artifactId>
        <groupId>me.dongqinglin</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>child</artifactId>

</project>

继承关系通俗易懂,即是父工程的依赖性会传递给子工程。但是子工程需要显式声明用哪些包,在书写时必须声明父工程pom文件相对路径,只用书写GA,而不用书写版本坐标。

maven deploy

项目部署,暂时还没有更新到这一步。// todo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值