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
| compile | test | provided | |
|---|---|---|---|
| 对主程序是否有效 | 是 | 否 | 是 |
| 对测试程序是否有效 | 是 | 是 | 是 |
| 是否参与打包 | 是 | 否 | 否 |
| 是否参与部署 | 是 | 否 | 否 |
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>

浙公网安备 33010602011771号