Apache Maven菜鸟级入门教程

502 阅读5分钟

  本文章将简述ApacheMaven的配置、命令、POM文件和Maven生命周期。

  ApacheMaven是一个构建,或称项目管理工具,相比其前身(例如ANTforJava构建版),具有以下优势:

  当构建需要多个JAR文件时很有用

  在构建期间解决递归依赖性

  创建标准化的项目结构

  构建,发布和部署应用程序

  支持应用程序的生命周期以及插件

  我创建了一个校友项目,这是一个动态的Web存档,其中有一个Servlet,上面写着“Hello,Alumni”。

  要求配置:

  ApacheMaven3.2.5

  ApacheTomcat8.0.9

  JDK1.7.0/JRE1.7.0

  Notepad++6.6.7

  Maven基础教程

  1.设置Maven

  首先,下载ApacheMaven3.2.5。

  接下来,设置M2和M2_HOME的路径变量。

  将M2_HOME环境变量设置为指向ApacheMaven安装的根目录。此外,M2环境变量将指向ApacheMaven下的bin文件夹。例如,如果您在d:\apache-maven-3.2.5下安装了ApacheMaven,则必须将变量设置如下:

  设置M2_HOME=d:\apache-maven-3.2.5

  设置M2=d:\apache-maven-3.2.5\bin

  您还必须在路径中另外设置Maven,如下所示。

  设置PATH=%PATH%;%M2%

  2.配置Maven(创建项目)

  现在从要创建Web项目的位置运行mvnarchetype:在想创造程序的地方生成命令。从此命令开始,从网上下载所有模板。必须先利用它,以便可以将所有已知的项目模板下载到本地系统。它将在成功执行此命令的同时提示您输入数字。输入数字529,用于'maven-archetype-webapp'。确保您有Internet连接-否则,您将看不到所有原型列表。MavenArchetype是一个与Maven一起提供的模板工具包。

  3.创建校友Servlet

  在我们编写JavaServlet代码之前,我们需要在'src\main'下添加一个'java'文件夹。在main下,添加文件夹'me',然后是'sumithpuri',后跟'maven'-逐次下降;这样的目录结构如下所示:

  现在,使用Notepad++编写javaservlet源文件AlumniServlet.java,如下所示:

  

4. 建立校友项目

  如果我们现在尝试使用'mvncompiler:compile'构建项目,我们将得到以下错误,因为我们没有为JavaServlets添加依赖的JAR文件。

  5.管理依赖项

  我们可以添加依赖的JAR,以便项目可以编译。我们可以在pom.xml中这样做-有关Maven如何将此JAR下载到本地存储库的说明以及POM(项目对象模型)的详细信息将在后文中提及。      

  6.(重新)建立/编制校友项目

  使用'mvncompiler:compile'编译Web应用程序。

  7.包装和部署校友项目

  使用以下配置修改web.xml以添加Servlet。      

  使用'mvnwar:war'打包Web应用程序。      

  最后,将其放在ApacheTomcat'webapps'文件夹下,然后键入URL以在浏览器上查看输出:      

  注意:确保将默认index.jsp重命名为index.bkp以呈现Servlet输出。

  结论

  Maven提供了一种简单且可扩展的方法来编译,构建和部署应用程序,并允许我们管理应用程序的总体构建生命周期。

  Maven理论

  Maven坐标

  以下称为任何项目的maven坐标(最重要的坐标)。

  GroupId:我们可以用来引用这些项目组的名称。例如:alumni_project

  ArtifactId:将用于创建JAR或WAR的名称。例如:校友

  版本:当前项目的版本号

  包:生成的类的包,通常在src\java下。例如:me.sumithpuri.maven

  Maven生命周期

  Maven项目最重要的生命周期阶段或阶段包括以下内容。

  验证:验证项目坐标和pom.xml是否有效,否则会生成错误。

  编译:编译项目并在无法编译时生成错误。

  测试:单元测试代码,不要求代码打包。

  包:包并生成工件,例如JAR。

  安装:在本地存储库中安装生成的工件,例如JAR。

  Maven插件

  Maven以插件的形式工作,遵循以下通用格式:mvnplugin:goal

  一些插件有JAR,编译器和surefire。Maven命令的示例如下:mvncompiler:compile。

  Maven存储库(架构)

  Maven遵循双存储库模型,其中它维护一个本地存储库(在执行第一个maven命令时创建)。它将依赖关系从远程存储库下载到此本地存储库,然后构建项目。该体系结构如下所示:

  Maven项目已编制完成;它在本地存储库中检查依赖项。

  如果不存在依赖项,Maven将从远程存储库下载它们。

  下载依赖项后,它们将安装在本地存储库中。

  一旦满足所有依赖关系,Maven就会编译代码和项目。

  项目对象模型

  Maven通过在每个模块中存在ProjectObjectModel或pom.xml文件来实现依赖关系管理。在每个模块级别,我们都可以提供一个pom.xml,其中包含构建环境信息,构建设置信息,POM之间的依赖关系以及一般项目信息。此外,还有一个继承概念和有效POM的概念(其中有效POM是继承层次结构的结果)。

  样品POM

  超级项目对象模型

  位于Maven安装内部的是一个SuperPOM(pom.xml),通常位于maven-model-builder-<x.y.z>.jar文件中,它位于%M2_HOME%\lib\文件夹下。其中包含所有其他模块的POM继承的详细信息。这还包含远程存储库的位置,默认情况下为https://repo.maven.apache.org/maven2。它通常有四个主要部分-中央存储库详细信息,插件存储库详细信息,构建详细信息和插件管理详细信息。