# 0.写在前面
首先回忆一下我们之前都做了什么:
    1.成功在本机安装Maven软件,并配置了环境变量
    2.成功配置了Maven的配置文件(conf/settings.xml文件),保证Maven能够通过我们指定的国内镜像下载jar文件,并将jar文件都保存在我们指定的文件夹当中
       并且在创建Maven项目的时候默认使用JDK 1.8版本进行创建
    3.成功配置了Eclispe下的Maven开发环境,并且保证能够快速创建一个基于Eclispe的Maven项目
    4.能够知道在基于Eclipse的Maven项目中,在什么位置编写Java代码,在什么位置编写测试代码,并能够成功运行这个Maven项目
但是在获取如上成就的同时,我们必须知道:Maven本身是一个平台无关的开源工程,也就是说:
Maven可以为创建在任何开发平台上的Maven项目提供jar文件支持
那么同样也就是说:即使脱离了Eclispe、IDEA这样的开发平台,Maven也是可以直接运行,为项目提供jar文件支持的
那么下面这篇文章,将带领大家一起手动创建并编译、运行一个独立的Maven项目
并经由这个项目,补充一些关于Maven本身的其他知识点
# 1.创建Maven项目的文件夹目录
首先我们来看一个目录结构:
Maven项目:|---src|----|---main|----|----|---java|----|----|---resources|----|---test|----|----|---java|----|----|---resources|---pom.xml
怎么样?眼熟不?没错!这个就是我们之前在使用Eclipse创建Maven项目的时候,曾经见到过的Maven项目的最简结构

那么我们首先按照这个最简结构,在自己的磁盘上手动创建一个用于保存Maven项目Java文件和测试文件的文件夹结构
并且在这个文件夹中编写代码、添加POM文件,并逐步将这个项目进行编译和运行
1.手动创建Maven的最简目录结构:
# 2.配置Maven工程的pom.xml文件
Maven工程的pom.xml文件是Maven工程的灵魂,一个Maven项目下所有重要的信息和对jar文件的支持都是通过这个文件进行配置的
下面我们来手(shou)动(si)配置这个pom.xml文件
1.在项目的根文件夹下创建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></project>
上述配置属于Maven项目中pom.xml文件的基本配置方式,其中:

<modelVersion></modelVersion>标签标示的是当前Maven项目使用的描述规范版本号,
这个标签大家不必纠结,目前比较主流的Maven项目使用的描述规范版本号是4.0.0版本
注意:实际上上述配置我们也可以从Maven软件下的lib/maven-artifact-3.6.0.jar这个jar文件中找到相应的pom.xml文件的模板,并能够拷贝其中一些说明和案例
但是这种方式比较繁琐,不容易找到这个模板pom.xml文件,所以我们还是使用笔记中的配置文件内容
2.配置pom.xml文件中的项目坐标:
每一个Maven项目必须在pom.xml文件中配置如下内容,因为Maven就是根据这些配置信息来确定一个项目的具体位置的
所以下面我们将要配置的信息,也称之为一个项目的项目坐标
如何理解项目坐标:在时机生活中,坐标的概念就很普及:同样是在杨国福麻辣烫订的餐,为什么外码小哥能够准确的将你的那一份送到你的手中,而不是别人的手中呢?
对了!就是使用坐标。现实生活中我们使用省、市、区、街道、小区、栋、单元、楼层、门牌号等信息标识我们自己的坐标
所以外卖小哥能够按照这个“坐标”将外卖正确的送到你的手中。
同样的,在我们一台计算机当中,可能同时存在多个Java项目,那么Maven是如何对这些项目进行区分的呢?同样是使用项目坐标
所以说:项目坐标是Maven软件用来识别一个Java项目的唯一标识
就像我吃麻辣烫一定要加墨鱼丸,并且从来不吃香菜一样,Maven软件也是根据项目坐标来区分这个项目需要哪些jar文件,不需要哪些jar文件的
OK!现在应该已经能够理解项目坐标的含义了吧?那么下面我们来介绍一下如何配置一个Maven项目的项目坐标:
首先说明下:项目坐标直接配置在pom.xml文件的<project></project>标签之下
描述一个项目坐标的标准结构如下:
<project><groupId></groupId><artifactId></artifactId><version></version><packaging></packaging><classifier></classifier>
</project>
这些标签的配置信息含义如下:

    <groupId>标签:标识当前Maven项目隶属于的实际项目名称。需要注意的是:Maven项目和实际项目不一定是一对一的关系。
                               比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。
                               这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。
                               这个概念类似于Java工程中的“父子工程”的概念,而groupId标识的就是当前这个自工程隶属于的父级工程的名称
                               如果这个工程只有自己,不需要依赖于任何实际工程(父级工程),那么这个标签中直接写当前项目的名称即可
    <artifactId>标签:这个标签下标识的就是当前项目的名称。在Maven的概念中,也就是“当前模块”的名称
                               对于<artifactId>标签中的取值,我们建议使用当前项目(模块)的真实名称
    <version>标签:表示当前项目的版本号
    <packaging>标签:表示当前项目的打包方式,除了常见取值"jar"之外,还可以取值"war",表示将当前工程打包为一个war文件
    <classifier>标签:用来表示当前项目在打包生成的时候产生的一些附件文件
怎么样,上面的标签很多吧?刚开始手动配置项目的时候,配到这里,我也是一脸疑(meng)惑(bi)
但是后来我发现:在真正创建一个Maven项目的时候,根本用不上这么多坐标,Maven项目必须的坐标标签只有前3个!
下面我们来看一下如何配置我们当前这个项目的坐标:
将如下标签内容拷贝到之前创建的pom.xml文件的<project></project>标签之下
<!-- 我们这个项目已经是顶级项目了,不需要依赖任何上层的父级项目,所以groupId标签的取值就是当前项目名称 -->
<groupId>MavenTest</groupId>
<!-- 同理,这个项目的artifactId标签的取值也是这个项目名称本身 -->
<artifactId>MavenTest</artifactId>
<!-- 项目的版本号:0.0.1-SNAPSHOT -->
<version>0.0.1-SNAPSHOT</version>
在将上述配置拷贝的pom.xml文件之下后,我们得到这样一个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"><!-- 描述当前项目使用的描述规范为Maven 4.0.0规范 --><modelVersion>4.0.0</modelVersion><!-- 配置当前Maven项目的项目坐标 --><!-- 我们这个项目已经是顶级项目了,不需要依赖任何上层的父级项目,所以groupId标签的取值就是当前项目名称 --><groupId>MavenTest</groupId><!-- 同理,这个项目的artifactId标签的取值也是这个项目名称本身 --><artifactId>MavenTest</artifactId><!-- 项目的版本号:0.0.1-SNAPSHOT --><version>0.0.1-SNAPSHOT</version></project>
完美!到此为止,我们关于项目坐标的配置就完成了

关于项目版本号的说明:
    Maven项目的<version>标签中使用的版本号,除了0.0.1这个数字版本号之外,还有一个版本类型:SNAPSHOT
    这个单词的意思是快照版本。那么项目的版本类型都分为哪几种呢?
    1.snapshot:快照版本,也就是开发版本,这个版本的项目是不能够使用的,因为正在处于开发阶段,功能不全,错误也很多
                         Eclispe在创建Maven项目的时候默认会使用这个版本
    2.alpha:内部测试版,此版本的程序也不推荐使用,这个版本的程序用在开发人员内部进行测试,寻找并更改bug
    3.beta:外部测试版,面向用户群体发布的测试版本,虽然能够使用,但是仍然不稳定,存在较多bug,不推荐使用
    4.release:发行版,表示官方推荐使用的版本,功能较为全面,并且运行稳定,但是慧慧存在一些bug,可以正常使用
    5.stable:稳定版,在发行版的基础上去除绝大部分bug,优化一些功能,建议使用
    6.current:最新版本,不一定是稳定版本,但是具有最新的功能,如果有对应的发行版或者稳定版,建议使用前两者
    7.eval:评估版本,具有一个月或者固定的使用期限
    此外,还有pre、RC、GA等版本,在此不进行详细描述。
参考博文:https://www.jianshu.com/p/aefe0453d081
3.在pom.xml文件中添加jar文件依赖:
我们学习Maven的目的就是为了让Maven为我们的项目自动添加和管理所需的jar文件
并且在之前的文章中我们已经介绍过如何向pom.xml文件中添加项目所需jar文件的依赖配置,在河里我们不再进行赘述
为了方便当前项目的测试,我们在pom.xml文件中添加junit-4.12版本的jar文件依赖:
<!--所有jar文件依赖的声明都放在<dependencies>标签下的子标签<dependency>当中每一个依赖单独创建一个<dependency>子标签
-->
<dependencies><!-- 对junit-4.12版本的jar文件依赖声明 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
</dependencies>
将上述配置内容加入pom.xml文件之后,我们得到了一个比较全面的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"><!-- 描述当前项目使用的描述规范为Maven 4.0.0规范 --><modelVersion>4.0.0</modelVersion><!-- 配置当前Maven项目的项目坐标 --><!-- 我们这个项目已经是顶级项目了,不需要依赖任何上层的父级项目,所以groupId标签的取值就是当前项目名称 --><groupId>MavenTest</groupId><!-- 同理,这个项目的artifactId标签的取值也是这个项目名称本身 --><artifactId>MavenTest</artifactId><!-- 项目的版本号:0.0.1-SNAPSHOT --><version>0.0.1-SNAPSHOT</version><!--所有jar文件依赖的声明都放在<dependencies>标签下的子标签<dependency>当中每一个依赖单独创建一个<dependency>子标签--><dependencies><!-- 对junit-4.12版本的jar文件依赖声明 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies></project>
到此为止,整个Maven工程的pom.xml配置文件就已经搞定了,下面让我们来写一些Java代码

# 3.在Maven工程中编写Java代码
Maven工程是严格区分Java原码和测试代码的,这些代码会被分别存放在不同位置下
并且在之后的编译和运行过程中我们也会看到,Maven对Java原码和测试代码的变异和运行也是截然不同的
1.编写Java原码:
Maven项目下所有的Java源代码都是统一存放在src/main/java这个文件夹下的
那么我们在这个文件夹下创建如下Java源文件和代码:
HelloMaven.java:
package com.oracle.test;public class HelloMaven {private String msg = "Hello Maven!";public void sayHi() {System.out.println(msg);}    }
2.编写测试代码:

Maven项目下的所有测试代码存放在src/test/java这个文件夹下
那么我们在这个文件夹下创建如下的测试类和测试代码:
TestMaven.java:
package com.oracle.test;import org.junit.Test;public class TestMaven {@Testpublic void test1() {HelloMaven hm = new HelloMaven();hm.sayHi();}    }
到此为止,我们Maven工程中的Java代码就已经写好了

在上述步骤中,我们需要重点掌握的是:Maven项目中,Java源代码和测试代码的存放路径的位置
# 4.编译和运行Maven项目
Maven项目在创建完成后,需要手动对项目进行编译(有点儿javac的感jio)
并且,因为在测试代码中用到了Java原码中创建的HelloMaven这个类型,所以我们必须按照如下顺序对项目进行编译:
1.首先编译src/main/java文件夹下的Java原码
2.其次编译src/test/java文件夹下的测试代码
只有按照这个顺序进行编译,才能够保证测试代码能够正常运行
1.编译Java源代码:
首先我们需要启用命令控制台,并进入Maven项目的根目录下:
然后通过如下命令对Maven项目中的原码进行编译:
mvn compile
注意:如果是第一次编译Maven项目,那么Maven将会从远程的中央仓库中下载所需的jar文件到本地仓库中

如果我们已经配置过使用镜像进行下载,那么这个下载过程将会快得多
(为了进行演示,我把本地仓库中所有已经下载好的jar文件都删了……)
项目编译成功后将会有如下结果:
首先是在命令控制台中会显示如下结果内容:
其次是在src文件夹下,会出现一个名为target的新文件夹,这个文件夹中负责保存当前已经编译好的所有Java文件的字节码文件:
2.编译并运行测试代码:
Maven工程下的测试代码的编译和运行使用的是同一个命令:
mvn test

也就是说,在运行上述命令的时候,Maven会同时执行如下3个操作:
    1.根据pom.xml配置文件中声明的项目使用的jar文件依赖,去中央仓库将所需的jar文件下载到本地仓库中
    2.编译测试代码,生成其对应的字节码文件
    3.直接执行测试类中的测试方法,打印测试结果
下载jar文件到本地仓库的过程:
编译测试文件并运行测试方法,得到运行结果:
3.Maven项目的清理:
如果需要清空已经编译生成好的Java原码和测试代码的字节码文件,我们可以使用如下命令:
mvn clean
Maven正在清理项目:

清理完成:
在运行这个命令后,Maven会自动删除项目根目录下的target文件夹:
到此为止,我们手动创建、配置并编译、运行一个Maven项目的操作就全部结束了

转载于:https://www.cnblogs.com/noyitela/p/10386444.html

3.手动搭建Maven项目相关推荐

  1. 手把手教你搭建Maven项目

    大家好,我是雄雄,欢迎关注微信公众号[雄雄的小课堂]. 今天给大家分享的是"手把手教你买基金",奥!!不对,不好意思,是"手把手教你使用idea搭建Maven项目&quo ...

  2. git 创建webpack项目_近期总结:手动搭建react项目,将项目从自己的库引入到新的项目中使用...

    背景:最近公司有这样一个需求,需要开发一个react工具类,这个工具类可以用在其他项目里使用,并且这个工具类比较大,需要多人协作开发. ​ 这个项目主要由同事负责,于是同事就将这个工具类当成一个单独的 ...

  3. 使用Myeclipse搭建Maven项目

    使用Myeclipse搭建Maven项目 OS:Windows 7 Maven版本:3.5.2 Java版本:1.8.0_152 IDE:Myeclipse 2017 CI3 1 Maven简介 Ma ...

  4. maven学习十之myEclipse搭建maven项目总结

    步骤一 下载并安装maven,并配置M2_HOME和path. 步骤二 利用myEclipse自带maven插件生成.m2文件夹之,并拷贝maven安装包的settings.xml文件之.m2文件夹, ...

  5. [Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目

    你可能需要了解以下才能更好的阅读以下: 在 Windows 中配置Maven: http://www.cnblogs.com/chanchifeng/p/6195149.html 在新版本的eclip ...

  6. java搭建maven项目_Eclipse使用maven创建Java Web项目完整示例

    项目开发环境 软件 版本 mac macOS JDK 1.8 maven 3.5.0 tomcat 8.5 Eclipse已经安装插件maven 1.创建Maven web项目 1.1 新建meven ...

  7. Spring boot(8)---手动构建maven项目springboot

    新建一个maven项目springboot,步骤如下,在Eclipse中选择File-->new-->Project-->Maven-->Maven Project,建立的Ma ...

  8. Maven基础概念、安装配置及eclipse搭建maven项目

    Maven是Apache公司的开源项目,是项目构建工具,用来依赖管理(就是对jar统一的管理) 1.Maven的好处 与传统项目相比,大大节省了硬盘大小.因为jar(项目依赖的架包)没有包含在项目目录 ...

  9. Jenkins搭建Maven项目集成开发环境(源码库 Gitlab)

    安装Jenkins 注意:安装路径最好选择没有空格和特殊符号的路径,以避免后面踩坑 附:Jenkins官网下载 配置Jenkins 安装完成后打开浏览器输入http://安装机器IP:8080等待初始 ...

最新文章

  1. svn 服务器在生产环境中的搭建
  2. MySQL搭建系列之多实例
  3. 荐书|图解深度学习与神经网络:从张量到TensorFlow实现
  4. 机器学习算法一之基于K均值聚类算法实现数据聚类及二维图像像素分割
  5. 念念英文音标学习笔记
  6. 1415-2个人读后感作业
  7. 【工程经济学】各章计算题合集
  8. chrome浏览器多页签唯一关闭时自动注销
  9. 昔日的手游大作,《无尽之剑》系列如今为何走向英雄末路?
  10. 测试人员如何管理项目与风险预警
  11. Windows10记一次去掉桌面图标箭头引发的血案:该文件没有与之关联的应用来执行操作,请安装一个程序,若已安装程序,请在默认程序控制面板中创建关联。
  12. 荣耀全家桶框架插件(关联P30pro、Mate20、荣耀20pro等)
  13. 2009年研究生数模竞赛中一道题是跟弹道学有关的, 我这里就搜罗了一些弹道学方面的历史材料
  14. 想给MAC电脑换个壁纸?苹果电脑壁纸桌面怎么换?
  15. 如果你是个半路出家的程序员,请一字一句的看完
  16. “不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接”问题的解决
  17. linux编辑jar包内文件,报错无法保存处理
  18. 99、详解一个交换机能带动多少个网络监控摄像头
  19. 透视:对企业内容管理的四个疑问
  20. 大整数加法(详细讲解C++)

热门文章

  1. java构造反射和函数_反射类的构造函数和方法
  2. dataimagepng php_PHP decode data:image/png;base64
  3. sigar-amd64-linux.so,sigar,no libsigar-amd64-linux.so in java.library.path
  4. mysql 位运算 一对多_介绍Mysql位运算简化一对多关系
  5. dml操作mysql_数据库DML操作(DCL了解)
  6. Python数据结构与算法(2.1)——线性表的基本概念
  7. 无限火力挤爆服务器,LOL:无限火力出炉,众多云玩家宣布回归!服务器出现爆满情况...
  8. ftp 查看不了图片_几个常见的ftp错误问题及解决办法
  9. java设计模式工厂模式_Java中的桥梁设计模式
  10. ios部分阴影_iOS UIMenuController UIMenuItem第2部分