Maven使用入门
Maven作为目前主流的编译打包工具已经成为Java开发者不得不学的工具。
之所以写这篇文章是为了给同组的新人做科普使用,同时也复习一下Maven的基本操作。9
1. Maven是什么
Maven是一个项目构建工具,主要集成了打包,测试,发布等流程。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
2. 常用命令
mvn compile 编译源代码
mvn deploy 发布项目
mvn test 运行应用程序中的单元测试
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn tomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,
跳过测试类
3. 命令和生命周期
编译-> 测试->打包-> 发布-> 运行
compile test package (deploy) run
Maven项目可以是一个普通的Java项目,也可以是JavaEE项目,它和具体的技术无关,只关心项目的构建。
最简单的认为Maven是一个Jar管理工具。
传统的项目中是由开发者手动导入jar包及相关依赖,但是这样有个问题
如果需要改变jar版本,你就得直接替换jar包。在Maven中我们只需要配置一下版本即可自动化的进行版本更新。
4. 具体实例
- eclipse插件m2eclipse(首先要保证安装了maven)
- maven project是maven module的父集。一个project包含了若干的module
一般是定义一个父应用project,只进行jar的定义,包含了整个工程可能用到的所有jar而不进行逻辑开发。 其他的项目继承这个项目然后进行具体的依赖管理。(目的是为了统一版本和集中管理)
配置GAV
Group ID 组织名 一般是公司域名倒写 com.hispeed artifact ID 原型名,也就是项目名 项目名 test-maven version 本项目当前版本 默认0.0.1-snapshot 1.0.0
项目目录
src/main/java 项目java代码 src/main/resources 资源文件包括配置文件 src/test/java 测试java代码 src/test/resources 资源文件包括配置文件 target 编译打包的目录
核心: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"> <modelVersion>4.0.0</modelVersion> <groupId>com.hispeed</groupId> <artifactId>test-maven</artifactId> <version>1.0.0</version> <name>测试一下名字</name> <description>这是个测试项目</description>
</project>
添加依赖
父工程GAV坐标<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent>
当前项目配置
<properties>
<project.build.sourceEncoding>GBK</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
</properties>
具体依赖
<dependencies>
<!-- thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- spring-boot-start-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring-boot-devtools -->
<!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId>
optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 <optional>true</optional>
</dependency> -->
<!-- OKhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.2.0</version>
</dependency>
<!-- common-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
</dependencies>
构建配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
其他命令
如果项目是一个webapp,需要通过tomcat容器进行部署,则运行tomcat的命令为
项目右键-->maven-->maven build... 输入
(mvn)tomcat7:run
点击run即可启动容器