Maven项目构建利器03——第一个Maven工程
1.Maven工程的结构
我们需要通过Maven进行自动化构建, 以编译为例, Maven要想自动进行编译, 那么它必须知道Java源文件保存在哪里,所以要遵守Maven的约定,也就是约定大于配置,配置大于编码,无论我们使用什么框架,如果我们自己定义的东西想要让框架知道,都需要遵守框架的约定。
1) Maven项目结构:

2) Maven项目各个部分的作用:
[1]根目录: 工程名
[2]src目录: 源码
[3]pom.xml文件 : Maven工程的核心配置文件
[4]main目录: 存放主程序
[5]test目录: 存放测试程序
[6]java目录: 存放Java源文件
[7]resources目录: 存放框架或其他工具的配置文件
2.创建第一个Maven项目
我们安装上面介绍的标准maven项目结构,创建一个maven项目。

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">
<modelVersion>4.0.0</modelVersion> <groupId>com.wzy</groupId>
<artifactId>Hello</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version> </project>
在main目录下面的java文件夹下创建一个Hello.java
public class Hello{
public static void main(String []args){
System.out.println("Hello world");
}
public static String getHello() {
return "getHello";
}
}
在test目录下的java文件夹下创建一个TestHello.java
public class TestHello{
public static void main(String []args){
System.out.println("Test Hello");
}
}
3.Maven的常用命令
经过上面的准备工作之后,我们就可以运行一些Maven命令,首先来看一下,常见的Maven命令有哪些:
[1]mvn clean: 清理
[2]mvn compile: 编译主程序
[3]mvn test-compile: 编译测试程序
[4]mvn test: 执行测试
[5]mvn package: 打包
[6]mvn install : 安装
[7]mvn site : 生成站点
需要注意的是,上述的这些命令,必须在pom.xml所在的目录执行
a)mvn compile命令:

在执行完mvn compile命令之后,我们可以看到在src同级目录生成了一个target文件夹,里面就保存编译之后.class文件,这里注意这个命令编译的是主程序test下的java代码并不会进行编译。


b)mvn test-compile

在执行完mvn test-compile命令之后,我们可以看到在src同级目录生成了一个target文件夹,里面就保存编译之后.class文件,这里要注意的是,这个命令于mvn compile不同,他会同时编译主程序和测试程序。

c)mvn clean命令:

执行完mvn clean命令之后,我们就会发现之前生成的target文件夹不见了,也就是说clean命令的作用是将我们编译的目标文件进行清除。
d)mvn test

执行mvn test命令maven会将 test目录下的junit单元测试类进行执行,并且会统计出测试报告。
e)mvn package

通过mvn package这个命令,我们可以对程序进行打包,打包的方式根据我们在pom.xml中设置的方式,这里可添加jar或者war。

打包成功之后就会在target文件夹生成一个jar包:

f)mvn install

mvn install这个命令是Maven特有的,它的作用是将我们项目打包的jar安装到本地仓库中,我们可以通过坐标进行引用(GAV后面会进行介绍),根据上图可以看到已经成功的将jar包安装到本地仓库。
下面我们以同样的方式建立一个名为Person的Maven项目,我们希望引入已经安装到本地仓库的Hello项目的jar包并调用其中getHello方法。在Person的src/main/java下创建Person.java,并编写如下代码:
public class Person{
public static void main(String []args) {
System.out.println(Hello.getHello());
}
}
之后在Person项目的pom.xml引入Hello项目的依赖:
<?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>com.wzy</groupId>
<artifactId>Person</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.wzy</groupId>
<artifactId>Hello</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies> </project>
之后在Person项目的pom.xml路径下运行mvn compile命令,对Person项目中的代码进行编译。

我们可以看到编译成功,说明我们成功从Maven本地仓库中引入了Hello项目的jar包。
g)mvn site
生成项目相关信息的网站,在项目中并不常用,生成时间比较长,这里不做介绍
Maven项目构建利器03——第一个Maven工程的更多相关文章
- Maven项目构建利器05——Maven的生命周期
Maven各个构建环节执行的顺序: 不能打乱顺序, 必须按照既定的正确顺序(编译,测试.打包.部署)来执行Maven的核心程序中定义了抽象的生命周期, 生命周期中各个阶段的具体任务是由插件来完成的,可 ...
- Maven项目构建利器04——Maven的一些核心概念
1.坐标 1)数学上的坐标: [1].在平面上. 使用X,Y两个向量可以唯一的定位平面上的任意一个点 [2]在空间中, 使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点 2)Maven中的坐标: ...
- Maven项目构建利器01——为什么要使用Maven
1.为什么要使用Maven a)一个项目就是一个工程 如果一个项目非常庞大,不适合用package(包)来划分模块, 最好是每一个模块对应一个工程 分工合作,借助于Maven就可以将一个项目拆分成多个 ...
- Maven项目构建利器02——安装Maven核心程序
1.Maven也是用Java编写的工具,同样运行在JVM上,所以我们在安装Maven之前需要确保已经安装了JDK,首先来检查电脑上是否安装JDK. 2.如上图说明电脑中已经安装了JDK,下面就要去官网 ...
- maven项目构建
Maven是apache的一个开源项目.是一个用来把源代码构建成可发布的构件的工具. Maven的功能非常强大,可以认为是一个项目管理工具,不仅仅是一个构建工具. Maven本身的核心很小,但是可以在 ...
- (转)Maven学习总结(二)——Maven项目构建过程练习
孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(二)——Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项 ...
- Maven(一)如何用Eclipse创建一个Maven项目
1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...
- Maven学习总结(2)——Maven项目构建过程练习
Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建 ...
- 有手就行4——jenkins项目构建类型(自由风格,maven风格)
有手就行4--构建Maven项目 Jenkins项目构建类型(1)-Jenkins构建的项目类型介绍 Jenkins项目构建类型(2)-自由风格项目构建 Jenkins项目构建类型(3)-Maven项 ...
随机推荐
- Unknown class xxx in Interface Builder file. / NSUnknownKeyException
Error: 2019-11-24 22:16:01.047997+0800 SingleViewDemo[22576:34699748] Unknown class FeedbackCell in ...
- Sublime text3 Version 3.2.2, Build 3211破解
一.修改hosts hosts地址: C:\Windows\System32\drivers\etc #sublimetext 127.0.0.1 www.sublimetext.com 127.0. ...
- 【flask】flask项目配置 app.config
[理论] 在很多情况下,你需要设置程序的某些行为,这时你就需要使用配置变量.在Flask中,配置变量就是一些大写形式的Python变量, 你也可以称之为配置参数或配置键.使用统一的配置变量可以避免在程 ...
- [Nova ERROR] InternalError: Nova requires QEMU version 2.5.0 or greater.
目录 文章目录 目录 问题 调查 解决 问题 nova-compute service 启动失败 InternalError: Nova requires QEMU version 2.5.0 or ...
- 阶段3 2.Spring_06.Spring的新注解_4 spring的新注解-Import
把Configuration的直接先注释掉 那么运行测试类的查询所有 并不影响我们的使用 不写同样可以执行的原因是因为这里把SpringConfiguration这个类作为方法传入进去了 新建 Spr ...
- MySQL 常用工具sysbench/fio/tpcc等测试
为什么要压力测试采购新设备,评估新设备性能开发新项目,评估数据库容量新系统上线前,预估/模拟数据库负载更换数据库版本,评估性能变化 关注指标 CPU %wait,%user,%sys 内存 只内存读 ...
- 【安卓开发】一个简单快递查询APP实例的实现摘要
前言 做毕业设计涉及到安卓开发,决定好好学习安卓开发.在正式做毕业设计之前,有必要先设计和完成一个与毕业设计最终成果相关的demo或者说样例APP.最终毕业设计需要实现的功能包括通过调用PHP端API ...
- String StringBuffer StringBuilder区别与联系
java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder都是字符串类型,是Java中用于处理字符串常用的三个类.它们主要有以下区别 ...
- ansible-playbook 案例
nginx的安装 编写nginx的自动部署文件nginx.yml hosts主机更改为自己定义的 访问目标主机组的IP地址,查看测试页面 测试页面:显示的是本机ip 1 <h1> ...
- 开启sentry权限控制hue
参考: cloudera官方授权:包括webui, ldap,sentry https://www.cloudera.com/documentation/enterprise/6/6.2/topics ...