【手把手教你Maven】构建过程

Maven是一款进行 依赖管理、项目构建、信息管理 为一体的工具。 它不像Make具有复杂的命令、也不像Ant需要手动编写大量的重复代码就能进行项目的构建; 还能提供强大的依赖库管理,避免jar包混乱与冲突; 还可以方便的管理项目的信息、知识产权等内容。 本篇的写作目的在于帮助那些之前没有使用过,或者是对maven还没有太多概念的朋友,学会使用maven,利用maven进行项目的构建。 通过讲解Maven的下载、安装、编写、执行任务,快速体验Maven的工作模式与使用技巧...

下载

目前高版本的Eclipse已经集成了Maven,但是考虑到插件的稳定性,还是推荐使用自己安装的Maven(需要在Eclipse中进行绑定)。

手动安装需要在官网下载Maven,目前最新的版本是3.3.9:http://maven.apache.org/download.cgi

一般windows下的用户下载这个zip就可以了,如果要学习源码,可以下载src那版的。

安装

1 首先需要安装JDK,在命令行中输入java -version验证版本:

2 然后解压下载好的压缩包:

3 配置环境变量

在“环境变量”中配置:

M2_HOME:xxxx/apache-maven-3.3.9

在path中添加:";%M2_HOME%/bin"

4 在命令行中输入 mvn -v测试

编写

如果使用过Ant都知道Ant是通过build.xml执行构建任务的,Maven中是通过pom.xml来执行任务。

POM,project object model,即项目对象模型,它通过这个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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xinoo.test</groupId>
    <artifactId>first-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>First Maven Project</name>
</project>

第一行指定了文档的XML版本和编码

第二行即每个pom.xml的核心元素——project

project下面有几个子元素,这几个子元素一般是每个项目都会使用到的:

1 modelVersion  这个元素指定了POM的版本,Maven2或者Maven3 都只能是4.0.0

2 groupId 是项目组的ID,一般是com.公司组织名.项目名

3 artifactId 是该项目在项目组中的ID,比如当前的项目是项目组的一个代理项目,就可以叫做myproxy

4 version 是项目的版本号,用于维护项目的升级和发布

5 name 一般没有实际的用处,只是用于标识该项目

比较重要的参数是 groupId、artifactId、version,这三个属性确定唯一的一个项目。

执行任务

一般的Maven项目会包含这样一个目录树:

project
    |-src--main--java--你的源代码
    |    |--test----java--你的单元测试代码
    |-target--编译出的文件和jar包
    |-pom.xml--项目信息以及任务定义

因此我们在上面的pom.xml同级目录中,创建

src/main/java/com/xingoo/test/firstmaven 文件夹

然后再该文件夹中创建HelloWorld.java

package com.xingoo.test.firstmaven;

public class HelloWorld{
    public String sayHello(){
        return "Hello Maven";
    }
    public static void main(String[] args){
        System.out.println(new HelloWorld().sayHello());
    }
}

然后再pom.xml所在的目录中运行mvn clean compile命令:

会发现目录中多了一个target文件夹,文件夹中增加了两个文件夹:

其中classes中是java编译出的class文件、maven-status是依赖的compile插件。

参考

【1】最后的任务执行样例:百度云盘文件mvn1127.zip

【2】《Maven实战》:百度云盘文件Maven实战教程

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CRPER折腾记

Vue 折腾记 - (14) Nuxt.js 2 正式版升级采坑以及部署姿势改动

整个配置文件分两部分: apps(启动应用的相关信息,环境变量,进程执行模式等) , deploy(部署区域)

66520
来自专栏一个会写诗的程序员的博客

Cookie 和 Session 机制原理分析 & 区别对比

Web application servers are generally "stateless":

17820
来自专栏Huramkin的归档库

ps命令常见用法

Linux中的ps命令用来列出系统中当前运行的那些进程,查看它们的运行状态,占用的资源

19710
来自专栏java一日一条

在 Java 中运用动态挂载实现 Bug 的热修复

大多数 JVM 具备 Java 的 HotSwap 特性,大部分开发者认为它仅仅是一个调试工具。利用这一特性,有可能在不重启 Java 进程条件下,改变 Jav...

16320
来自专栏北京马哥教育

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想. 于是整理一下~ ? 第...

66480
来自专栏数据和云

故障诊断 | 系统级追踪诊断方法及案例分享

所谓操作系统,是应用程序与服务器硬件进行沟通的中间层。应用程序的所有操作,都是和操作系统进行沟通交互。操作系统负责将所有交互转化为设备语言,进行硬件交互。 我们...

36230
来自专栏Laoqi's Linux运维专列

部署Java项目(Ⅰ)

40650
来自专栏Albert陈凯

2018-11-19 Neo4j百万级数据导入只能用neo4j-import

业务需要使用Neo4j出数据关系展示图,数据库里有2张表通过一个字段进行关联,数据量是90万和500万,关系量是150w;

16920
来自专栏V站

php://协议深入理解

今天晚上,听了漏洞银行的大咖公开课讲的内网渗透,感觉和大咖之间还有不少差距,不过搞到了一波工具,心里依然美滋滋~

62640
来自专栏阮一峰的网络日志

Systemd 入门教程:命令篇

Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。 本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍...

37560

扫码关注云+社区

领取腾讯云代金券