maven入门

Maven

1.概念

meivn

软件工程:为了能够实现软件的流水线式生产,在设计和构建软件时能够有一种规范和工程化的方法

maven 是自动化构建工具

  • 整合多个项目之间的引用关系,根据业务和分层需要任意拆分

  • 提供规范的管理各个常用 jar 包及其各个版本,并且可以自动下载和引入项目中

  • 根据指定版本自动解决 jar 包版本兼容问题

  • 把 jar 包所依赖的其它 jar 包自动下载并引入项目

构建过程

  • ①清理:删除以前的编译结果,为重新编译做好准备。

  • ②编译:将Java源程序编译为字节码文件。

  • ③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

  • ④报告:在每一次测试后以标准的格式记录和展示测试结果。

  • ⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web

  • 工程对应war包。

  • ⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。

  • ⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行

核心概念

  • ①POM : 一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型。 maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。

  • ②约定的目录结构 : maven项目的目录和文件的位置都是规定的。

  • ③坐标 : 是一个唯一的字符串,用来表示资源的。

  • ④依赖管理 : 管理你的项目可以使用jar文件

  • ⑤仓库管理(了解) :你的资源存放的位置

  • ⑥生命周期 (了解) : maven工具构建项目的过程,就是生命周期。

  • ⑦插件和目标(了解):执行maven构建的时候用的工具是插件

  • ⑧继承

  • ⑨聚合

2.基础

2.1 目录

maven 中约定的目录结构:

Hello/
---/src
------/main           #放你主程序java代码和配置文件
----------/java       #你的程序包和包中的java文件
----------/resources #你的java程序中要使用的配置文件
------/test #放测试程序代码和文件的(可以没有)
----------/java       #测试程序包和包中的java文件
----------/resources #测试java程序中要使用的配置文件
---/pom.xml #maven的核心文件(maven项目必须有)

约定>配置>编码

maven 从 pom.xml 文件开始,按照助约定的工程目录编译,测试,打包,部署,发布项目。

建立工程

1.某个目录中创建文件夹 Hello

2.在 Hello 中创建子目录 src

3.拷贝 pom.xml 到 Hello 目录和 src 是同级放置的。

4.进入 src 目录,创建 main, test 目录

5.进入 main 目录,创建 java,resources 目录。

6.进入 java 目录,创建目录 com/bjpowernode/,在 com/bjpowernode/目录下创建 HelloMaven.java

7.进入到 Hello 目录在,执行 mvn compile

8.进入到 target/classes 目录执行 java com.bjpowernode.HelloMaven

2.2 POM文件

Project Object Model 项目对象模型

pom.xml 是 Maven 的灵魂

插件下载:

默认仓库(本机仓库)C:\Users\(登录操作系统的用户名)Administrator.m2\repository

执行mvn compile, 结果是在项目的根目录下生成target目录(结果目录) maven编译的java程序,最后的class文件都放在target目录中

坐标:唯一值, 在互联网中唯一标识一个项目

  • <groupId>公司域名的倒写</groupId>

  • <artifactId>自定义项目名称</artifactId>

  • <version>自定版本号</version>

packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war

依赖:dependencies 和dependency ,相当于是 java代码中import

log4j 日志依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
junit 单元测试依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>

properties:设置属性

build :maven在进行项目的构建时配置信息

2.3 仓库

在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件

maven把所有的构件统一存储在某一个位置,这个位置就叫做仓库

Maven 仓库存放的是:

  • Maven 的插件, jar 完成一定的功能

  • 自己开发项目的模块

  • 第三方框架或工具的 jar 包

本地仓库:为本机上所有的Maven工程服务

远程仓库:分为中央仓库、中央仓库镜像、私服

中央仓库是maven默认的远程仓库,其地址是:http://repo.maven.apache.org/maven2/

包含了绝大多数流行的开源Java构件,以及源码、作者信息、许可证信息等。

2.4 maven

maven的生命周期:构建项目的过程,清理,编译,测试,报告,打包,安装,部署

直接执行相应的命令即可

常用命令:执行命令必须在命令行进入 pom.xml 所在目录

  • mvn clean 清理(会删除原来 target 目录,仓库里的包不会删除)

  • mvn compile 编译主程序(当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)

  • mvn test-compile 编译测试程序(当前目录下生成一个 target,里边存放编译之后生成的字节码文件)

  • mvn test 测试(会生成一个目录surefire-reports,保存测试结果)

  • mvn package 打包主程序(会编译、编译测试、测试、按照 pom.xml 配置打包生成 jar 包或者 war 包)

  • mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)

  • mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,还会保存到私服仓库中自动把项目部署到 web 容器中)。

3.Idea 中的 maven

3.1 配置

file--settings ---Build, Excution,Deployment--Build Tools--Maven

  • Maven Home directory: maven的安装目录

  • User Settings File : 就是maven安装目录conf/setting.xml配置文件

  • Local Repository : 本机仓库的目录位置

  • Runner ---- VM Options : archetypeCatalog=internal 不下载模版文件; JRE: 你项目的jdk

使用模版创建项目 1)maven-archetype-quickstart : 普通的java项目 2)maven-archetype-webapp : web工程

pom.xml 添加依赖

<dependencies>
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.11</version>
       <scope>test</scope>
   </dependency>

   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>javax.servlet-api</artifactId>
       <version>3.1.0</version>
       <scope>provided</scope>
   </dependency>
   
   <dependency>
       <groupId>javax.servlet.jsp</groupId>
       <artifactId>jsp-api</artifactId>
       <version>2.1</version>
       <scope>provided</scope>
   </dependency>
   
</dependencies>

导入 Maven 工程

导入或移除 module

3.2 依赖管理

依赖的范围:compile、test、provided,默认采用 compile

 compiletestprovided
对主程序是否有效
对测试程序是否有效
是否参与打包
是否参与部署

 

3.3 常用设置

属性

<properties>
   <!--源码编译 jdk 版本-->
<maven.compiler.source>1.8</maven.compiler.source>
   <!--运行代码的 jdk 版本-->
<maven.compiler.target>1.8</maven.compiler.target>
   <!--项目构建使用的编码,避免中文乱码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <!--生成报告的编码-->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

全局变量

<!--pom.xml 文件中,<properties>用于定义全局变量-->
<properties>
<spring.version>4.3.10.RELEASE</spring.version>
</properties>
<!--通过${property_name}的形式引用变量的值-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

指定资源

把 src 目录下的文件包放到 target/classes 目录,作为输出的 jar 一部分。需要指定资源文件位置

<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!—-filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了-->
<filtering>false</filtering>
</resource>
</resources>
</build>

 

posted @ 2021-05-20 16:02  FremontUltimate  阅读(137)  评论(0)    收藏  举报