<?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: 指定当前POM模型的版本,如果安装的是Maven2或者Maven3,那么这个值只能是4.0.0 -->
<modelVersion>4.0.0</modelVersion>
<!--groupId:项目的唯一标识符,通常使用全限定的包名来区分该项目和其他项目,并且构建时生成的路径也是由此生成-->
<groupId>com.java.world</groupId>
<!--artifactId:构建标识符,和groupId一起唯一标识一个构件,不能有两个不同的项目拥有同样的groupId 和 artifactId
在某个特定的groupId下,artifactId也必须是惟一的。
构件是项目产生或使用的一种东西,Maven 为项目产生的构件包括:jar包,源码,二进制发布和部署包WAR等。
-->
<artifactId>helloworld</artifactId>
<!--version:项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
<version>1.1.0-SNAPSHOT</version>
<!--packaging:项目产生的构件类型,如jar,war,ear,pom等。-->
<packaging>jar</packaging>
<!--name:项目名称,Maven产生的文档使用,也可以不写。-->
<name>MavenWorld</name>
<!--url:项目主页的URL,Maven产生的文档使用,也可以不写-->
<url>http://www.ansq.com</url>
</project>
POM: Project Object Model, 也就是项目对象模型,它是Maven项目的核心所在。
POM文件主要包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。
<project> 标签是所有pom.xml的根元素,它声明了一些POM相关的命名空间及xsd元素。
xmlns:xml namespace的缩写。
xmlns:xsi 当前xml文件需要使用一些规则来进行验证,这些规则都定义在一个外部的xsd验证文件当中。
需要将这些外部的文件引入,而这个引入的功能就在http://www.w3.org/2001/XMLSchema-instance当中。
xml schema:它是基于XML格式的文档结构描述标准,通常简写为XSD(xml schema define)
引入无命名空间的schema文件,使用xmlns:xsi的noNamespaceSchemaLocation这个元素。
引入带命名空间的schema文件,使用xmlns:xsi的schemaLocation元素。
xsi:schemaLocation 指定命名空间对应的验证文件。它的值分为两部分,前面是命名空间的名字,后面是xsd文件的地址。
表示为当前命名空间引入一个验证文件,以便对当前xml文件是否符合语法规范进行解析与验证。
被引入的xsd文件是XML文件自定义的语法或格式解析器。xsd文件也是一个xml文件,遵循xml的格式。
Maven命令:
mvn clean compile
clean:用于清理target目录
compile:编译命令
Maven的生命周期是抽象的,本身并不做任何工作,所有的工作都是交由插件来完成的;
打包命令:mvn clean package
生成一个JAR文件helloworld-1.0.jar
JAR文件的命名格式:artifactId-version.jar
测试类文件并不参与打包的操作。
MavenArchetype原型
MavenArchetype原型。
MavenArchetype指的是一个项目的模板。
在使用 Maven的过程当中,可以根据原型 Archetype来生成具有特定结构的项目。
也可以从通用的项目当中来抽取结构从而生成 Archetype模型。
Archetype与之前的功能插件一样,它也是一种插件。
本节课程学习如何在命令行下使用 Maven Archetype
在不同版本的情况下,使用 MavenArchetype的命令方式也不是完全一样的。
比如在 Maven2当中,如果没有指定 Archetype 插件的版本,那么 Maven就会去下载最新的版本,而最新的版本却不一定是稳定的,从而可能会导致运
行失败
那么到了 Maven3 当中,即使没有指定版本, Maven也会去解析最新的而且是最稳定的版本,因此它是安全的。
Archetype对应的插件是: maven-archetype-plugin。
如果使用的是比较旧的 Archetype 版本,那么在创健建一个项目的结构的时候,使用的命合是:
mvn org.apache.maven.plugins: maven-archetype-plugin:2.0-alpha-5:generate。
简单地说,它的命合格式为:
groupId:artifactId:version:goal。
org.apache.maven.plugins 官方插件的groupId
maven-archetype-plugin 是插件的 artifactId
2.0-alpha-5 是插件的稳定版本。
generate 是要进行的操作,也就是要使用的插件目标。
在 Maven3 当中, Archetype操作的命令为:
mvn archetype:generate
在执行这个命令的时候,发现它会产生停顿,是什么原因导致当前的界面没有任何的动作了?
mvn -X archetype:generate
它能够显示调试级别的日志。
当使用 mvn archetype:generate命令去创建一个项目的结构的时候,在项目创建的过程当中, Maven会去下载一个与 Archetype相关的目录文件,
叫做 archetype-catalog.xml
一方面因为此文件比较大,大概有5M多,还有可能就是文件地址在 Maven 命令方式中变得不可访问了,从而导致访问网络上这个文件变得非常耗时。