Maven-项目管理工具 

一. Maven的一些概念 

1.Maven翻译为“专家”、内行,是跨平台的项目管理工具 
2.Maven主要服务于基于Java平台的项目构建、依赖管理、项目信息管理
①项目构建
项目构建的过程:
-> 清理项目:删除以前的编译结果,为重新编译做好准备。

-> 编译项目 :将Java.java文件编译为.class字节码文件。

-> 测试项目 :针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

-> 生成测试报告 :在每一次测试后以标准的格式记录和展示测试结果

-> 打包项目 :讲一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应的是War包。

-> 部署项目:将打包的结果部署到远程仓库或将war包部署到服务器上运行。

maven编译nacos失败 maven编译项目_java

每一个步骤就是一个项目的完整构建过程,理想的是构建高度自动化、跨平台、可重用的组件、标准化的特点的项目,使用Maven可以帮我们实现这些过程。

 

②依赖管理

依赖指的是jar包之间的相互依赖,比如我们搭建一个项目的时候,需要引入很多的jar包,管理起来很不方便,依赖管理指的就是使用Maven来管理项目中使用到的jar包。

Maven管理的方式:自动下载项目中所需要的的jar包、统一管理jar包之间的依赖关系.

3.构建:我们每天在写代码的时候,编译、运行单元测试、生成文档、打包、部署项目等相等于构建。而Maven的用途之一就是服务于构建,能够帮我们自动化构建过程,从清理、编译、测试、生成报告、打包、部署。我们只需要输入mvn命令,Maven会帮我们处理琐碎的操作。

4.Maven是跨平台的,这意味着无论是在Windows上,还是Linux或者Mac上,都可以使用同样的mvn命令。

5.在这个开源的年代里,几乎任何java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、版本冲突、依赖 臃肿等问题都会出现。手工解决这些问题拉低我们的小路,Maven提供了一个优秀的解决方案,它通过一个坐标系统准确地定位每一个构建(artifact),也就是通过一组左边Maven能够找到任何一个Java类库(如jar文件),我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题

6.Maven还未全世界的java开发者提供一个免费的中央仓库,几乎可以找到任何的流行开源类库。我们只要定位了坐标,Maven就能够帮我们自动下载。

7.一些构建工具:Make、Ant、gradle

8.maven的核心概念:pom、约定的目录结构、坐标、依赖管理、仓库管理、生命周期、插件和目标、继承、聚合。

二. Maven的下载:http://maven.apache.org/download.cgi

三. Maven目录解释

maven编译nacos失败 maven编译项目_maven_02

bin:该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,当你在系统环境下配置好Maven的环境变量的时候,例如在cmd上面输入mvn命令的时候,就会调用里面的脚本,该目录还包含了mvnDebug和mvnDebug.bat两个文件,前者是UNIX平台的shell脚本,后者是Windows平台的bat脚本。该目录还包含m2.conf文件,这是classworlds的配置文件。

boot:含有Plexus-classwords类加载器框架,相对于默认的java类加载器。

conf:含有settings.xml配置文件,在里面可以定制Maven的行为。

lib:含有Maven运行时所需要的java类库,用户可以在这个目录中找到Maven内置的超级POM

LICENSE.rxt:记录了Maven使用的软件许可证:Apache License Version2.0;

NOTICE.txt:记录了Maven包含的第三方软件;

README.txt:包含了Maven的简要介绍,包括安装需求及如何安装的简要指令等。

 

四.  Maven的手动构建项目

1.我们首先了解下Maven的一些指令

mvn compile :编译,将java源程序编译成.class字节码文件。
mvn test:测试项目,并生成测试报告。
mvn clean:将以前编译得到的.class字节码文件删除。
mvn package:打包,jar工程打成jar包,web工程打成war包。
mvn install:将项目生成jar包放在仓库中,以便别的模块的调用.

2.maven的pom文件一些标签含义

<!-- XML头,指定了该XML文档的版本和编码方式 -->
<?xml version="1.0"?>
<!-- 
project标签:project标签时所有的pom.xml的根元素,它还生命了一些POM相关的命名空间及xsd元素,这些属性能够让我们在第三方工具(IDEA)帮助我们快速编辑POM文件 
-->
<project 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">

<!-- modelVersion:标签指定了当前POM模型的版本 -->
<modelVersion>4.0.0</modelVersion>

<!-- 
groupId标签:定义了项目属于哪个组,这个组往往和项目或公司存在关联。(其实相当于我们的java的包名) 
-->
<groupId>com.imooc.app</groupId>

<!-- artifactId标签:定义了当前Maven项目在组中的位移的ID(相当于工程名) -->
<artifactId>hellomaven</artifactId>

<!-- packing标签:设置打包的方式 -->
<packaging>jar</packaging>

<!-- 
    version标签:指定了当前项目的版本。1.0-SNAPSHOT。SNAPSHOT意思为快照的意思,说明该项目还处于开发中,是不稳定的版本。
-->
<version>1.0-SNAPSHOT</version>

<!-- name标签:声明了一个项目的名称 -->
<name>hellomaven</name>



</project>

2.我们来了解下maven的目录结构

maven编译nacos失败 maven编译项目_java_03

 

 

3..我们就开始根据maven目录结构来创建我们一个maven项目

①创建一个HelloMaven文件加,里面包含src文件夹和pom.xml文件

例如我的:

maven编译nacos失败 maven编译项目_maven_04

 

注意:idea文件夹和hellomaven.iml文件可以不用创建,因为我用idea软件打开写代码的,所以不用管那两个文件

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.guan.app</groupId>
    <artifactId>hellomaven</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>HelloMaven</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

②在src文件夹里面创建main和test文件夹,并在他们里面创建java和resources文件夹,然后在java文件夹下创建包:com.guan.app,最后创建一个HelloWord.java文件,这个前面的报名与   <groupId>com.guan.app</groupId>相对应。

例如:

maven编译nacos失败 maven编译项目_jar包_05

③然后我们打开cmd控制台,然后进入到当前pom文件的目录路径。

例如我的:

maven编译nacos失败 maven编译项目_java_06

然我我们开始在cmd下编译项目

命令:mvn compile

maven编译nacos失败 maven编译项目_maven编译nacos失败_07

看到BUILD SUCCESS代表成功了.

然后就会在HelloMaven文件夹下自动生成target目录,而且在target文件夹下的java文件夹下包下面可以看到HelloMaven.class字节码文件,可以查看一下。
 

使用骨架自动构建Maven项目

当我们按照手动创建项目的时候,需要自己创建文件夹,需要自己写好文件,这时候就有点麻烦,这个时候我们使用自动创建骨架可以帮我们省点事情。

①我们在桌面创建一个MyMaven文件夹

②然后我们使用cmd进入当前目录下,然后使用下面的命令

mvn archetype:generate -DgroupId=com.guan.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

然后就可以看到BUILD SUCCESS就构建成功了,这个时候MyMaven里面有完整的目录结构.

 

使用IDEA创建一个普通的java的Maven项目

maven编译nacos失败 maven编译项目_maven_08

maven编译nacos失败 maven编译项目_maven编译nacos失败_09

maven编译nacos失败 maven编译项目_java_10

在IDEA右侧有个Maven选项,里面继承了一些Maven的一些指令

maven编译nacos失败 maven编译项目_jar包_11

底层都是在使用mvn命令