Maven学习

来源:互联网 发布:淘宝常见问题 编辑:程序博客网 时间:2024/06/10 23:07

Maven学习

目录:

1、Maven介绍:

2、常用命令及操作:

3、pom文件:


1、Maven介绍:

(1)Maven是一个强大的项目构建工具。Maven是用Java开发的,因此Maven被更多的用于Java项目中。

(2)构建工具是将软件项目构建相关的过程自动化的工具。

构建一个软件项目通常包含以下一个或多个过程:

①生成源码(如果项目使用自动生成源码);

②从源码生成项目文档;

③编译源码;

④将编译后的代码打包成JAR文件或者ZIP文件;

⑤将打包好的代码安装到服务器、仓库或者其它的地方;

有些项目可能需要更多的过程才能完成构建,这些过程一般也可以整合到构建工具中,因此它们也可以实现自动化。

(3)自动化构建过程的好处是将手动构建过程中犯错的风险降到最低。而且,自动构建工具通常要比手动执行同样的构建过程要快。

 

2、常用命令及操作:

(1)安装maven并在系统中配置好环境变量后,在Intellj idea中File->Settings->Build,Execution,Deployment->Maven设置配置文件路径:

 

图2.1 截图1

(2)mvn -v:查看maven版本,或使用命令mvn -version

 

图2.2 截图2

(3)从模板创建项目:

mvn archetype:generate -DgroupId=com.remoa -DartifactId=TestMaven -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

 

图2.3 截图3

在当前目录下找到创建的maven项目,创建成功。

 

图2.4 截图4

默认在src目录下生成了一个App.java的类。编辑该类,得到结果如下:

 

图2.5 截图5

(4)若在创建新项目时出现报错:

Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: Archetype org.apache.maven.archetypes:maven-archetype-quickstart:1.0 is not configured

 

图2.6 截图6

http://repo1.maven.org/maven2找到下面的文件,复制到目录C:\Users\Administrator\.m2\repository\org\apache\maven\archetype\archetype-catalog\3.0.1下面。

 

图2.7 截图7

然后在输入命令时,在末尾加上一个参数:

mvn archetype:generate -DgroupId=com.remoa -DartifactId=TestMaven -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=local

(5)在pom.xml文件中添加build配置,配置项目的主入口类:

  <build>

<finalName>remoa</finalName>

 <plugins>  

  <plugin>  

<groupId>org.apache.maven.plugins</groupId>  

<artifactId>maven-jar-plugin</artifactId>  

<version>2.4</version>  

<configuration>  

<archive>  

<manifest>  

<addClasspath>true</addClasspath>  

<classpathPrefix>lib/</classpathPrefix>  

<mainClass>com.remoa.App</mainClass>  

</manifest>  

</archive>  

</configuration>  

</plugin>  

 </plugins>  

</build>

进入maven工程目录,输入指令mvn compile:编译项目的源代码

 

图2.8 截图8

(6)mvn package:将编译好的代码打包成可分发的格式,如jar、war等

 

图2.9 截图9

若使用mvn package -U参数:该参数能强制让Maven检查所有SNAPSHOT依赖更新,确保集成基于最新的状态,如果没有该参数,Maven默认以天为单位检查更新,而持续集成的频率应该比这高很多。

(7)查看生成的target目录:dir target

 

图2.10 截图10

(8)运行项目里的jar包

java -jar target/remoa.jar

 

图2.11 截图11

(9)运行项目里的其他类

mvn exec:java -Dexec.mainClass=”com.remoa.App”

查看到输出语句“Hello Remoa!”执行成功。

 

图2.12 截图12

(10)mvn site:生成项目相关信息的网站

 

图2.13 截图13

 

图2.14 截图14

打开后如下所示:

 

图2.15 截图15

(11)以树形结构查看项目的依赖信息:

mvn dependency:tree

 

图2.16 截图16

(12)mvn clean:清空生成的文件

 

图2.17 截图17

 

3、pom文件:

(1)结构图:

 

图3.1 结构图

(2)POM文件:

①当执行一条Maven命令的时候,会传入一个pom文件。Maven会在该pom文件描述的资源上执行该命令。

②Maven的POM文件是一个xml文件,描述项目用到的资源,包括源代码目录、测试代码目录等的位置,以及项目依赖的外部jar包。

③POM文件描述的是构建“什么”,而不是“如何”构建。如何构建是取决于Maven的构建阶段和目标。当然,如果需要,你也可以向Maven构建阶段中添加自定义的目标。

④每一个项目都有一个POM文件。POM文件即pom.xml,应该放在项目的根目录下。一个项目如果分为多个子项目,一般来讲,父项目有一个POM文件,每一个子项目都有一个POM文件。在这种结构下,既可以一步构建整个项目,也可以各个子项目分开构建。

(3)构建生命周期、阶段和目标:

Maven的构建过程被分解为构建生命周期、阶段和目标。

一个构建周期由一系列的构建阶段组成,每一个构建阶段由一系列的目标组成。当你运行Maven的时候,你会传入一条命令。这条命令就是构建生命周期、阶段或目标的名字。如果执行一个生命周期,该生命周期内的所有构建阶段都会被执行。如果执行一个构建阶段,在预定义的构建阶段中,所有处于当前构建阶段之前的阶段也都会被执行。

(4)依赖和仓库

Maven执行时,其中一个首要目标就是检查项目的依赖。依赖是项目用到的jar文件(java库)。如果在本地仓库中不存在该依赖,则Maven会从中央仓库下载并放到本地仓库。本地仓库只是你电脑硬盘上的一个目录。

(5)插件

构建插件可以向构建阶段中增加额外的构建目标。如果Maven标准的构建阶段和目标无法满足项目构建的需求,可以在POM文件里增加插件。Maven有一些标准的插件供选用,如果需要可以自己实现插件。

(6)配置文件

配置文件用于以不同的方式构建项目。比如,你可能需要在本地环境构建,用于开发和测试,你也可能需要构建后用于开发环境。这两个构建过程是不同的。在POM文件中增加不同的构建配置,可以启用不同的构建过程。当运行Maven时,可以指定要使用的配置。

(7)Maven与Ant

Ant是Apache另一个流行的构建工具。

Ant使用命令式的方式,即你需要在Ant构建文件里指定Ant应该执行的操作。你可以指定低级别的操作,如复制文件、编译代码等。你指定操作,还需要执行这些操作执行的顺序。Ant没有默认的目录结构。

Maven使用声明式的方式,即你需要在POM文件里指定做什么,而不是如何做。POM文件描述项目的资源,而不是如何构建。相比而言,Ant构建文件描述的是如何构建项目。在Maven里,如何构建是在“Maven 构建生命周期、阶段和目标”中预定义的。

(8)具体配置参数:

①modelVersion:表示使用的POM模型的版本。选择和你正在使用的Maven版本一致的版本即可。

②groupId:是一个组织或者项目(比如开源项目)的唯一ID。groupId不一定非要使用Java的包名,也不一定要使用.分隔符来分隔ID中的词。但是,如果你这么使用,项目将会位于Maven仓库的结构化目录中,该结构化目录与group ID匹配。每一个.是一个目录分隔符,每一个词都表示一个目录。group ID为com.remoa的项目将位于目录MAVEN_REPO/com/remoa中。目录路径中的MAVEN_REPO表示Maven仓库的路径。

③artifactId:包含你正在构建的项目的名称。artifact ID可以是Maven仓库中group ID目录下的子目录名。artifact ID也是构建完项目后生成的jar包的文件名的一部分。构建过程的输出,即构建结果,在Maven中成为构件(artifact)。通常它就是一个jar包、war包或者EAR包。

④versionId:项目的版本号。如果你的项目有不同的发行版,比如开源API,对构建过程版本化是很有用的。如果使用版本,项目的用户就可以查看项目的具体版本。版本号是artifact ID目录下的子目录名。版本号也用作构建结果名称的一部分。

⑤groupId,artifactId和versionId属性,在项目构建后会生成一个jar文件,位于Maven仓库的如下路径中(目录和文件名):MAVEN_REPO/com/remoa/RegistrationSystem/1.0.0/RegistrationSystem-1.0.0.jar

 

原创粉丝点击