Maven教程

Posted 酒皇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven教程相关的知识,希望对你有一定的参考价值。

现在的java项目一般都是通过Maven管理jar包与版本,本身属于依赖倒置,通过maven更方便的管理jar包。

当然,在安装maven之前需要安装配置好JDK,这部分省略。

 

配置maven的运行环境。

第一步

首先在http://maven.apache.org/download.cgi 上找到maven安装包。解压到硬盘你乐意的位置。

然后记录maven的路径 ,例如我的是:D:\mavenFile\apache-maven-3.5.3

第二步

我们开始配置环境变量。总共有三个环境变量需要配置。分别是M2(运行的bin目录)、M2_HOME(运行的文件夹位置)、MAVEN_OPTS(运行的配置信息)。例如我的配置就是。

M2_HOME:D:\mavenFile\apache-maven-3.5.3

M2:D:\mavenFile\apache-maven-3.5.3\bin

MAVEN_OPTS: -Xms256m -Xmx512m

第三步

在你的Path环境变量下添加bin目录的路径,win7下也可以使用;%M2%代替

第四步

在CMD界面,运行 mvn --version。可查看当前maven的版本,安装成功后可知。

 

创建maven项目

在eclipse创建mave项目非常简单。

在项目管理的框内,右键创建 other.

搜索maven 创建maven Project。

你可以直接下一步来填写所需信息创建mavan。(我建议你先读完下面的pom讲解再创建maven)

也可以在途中选中create a simple project.来创建含有父类pom的maven.

 

 

POM讲解

POM 代表工程对象模型。它是使用 Maven 工作时的基本组建,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。

POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。

POM 也包含了目标和插件。

在创建 POM 之前,我们首先确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是工程的唯一标识。

<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>
  <groupId>com.dhh</groupId>
  <artifactId>p1802</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>blog</name>
  <description>mySelf blog</description>
</project>
modelVersion:当前POM.xml的版本格式,这个是用来后台识别
groupId:公司组织表示,建议使用公司域名。也是jar包被mave打包后的存放路径
artifactId:项目名,你的当前项目名。
version:版本号。

所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
继承可以让我们避免一些不必要的通用性配置。可用CMD在项目文件夹下,运行:mvn help:effective-pom。查看父类pom的配置。


Maven生命周期

maven的生命周期一般如下:
1资源拷贝(本阶段可以自定义需要拷贝的资源)
2编译(本阶段完成源码编译)
3打包配置(根据pom创建管理jar包)
4安装(使用调用安装工程包)

 当 Maven 开始构建工程,会按照所定义的阶段序列的顺序执行每个阶段注册的目标。Maven 有以下三个标准的生命周期:

  clean

  default(or build)

  site

 

  其中clean包含pre-clean、clean 和 post-clean 阶段。

  我们执行clean操作可以直接使用工具也可以CMD在pom所在目录下执行mvn post-clean

  

 

  default(or build)的生命周期阶段过多。如下表,不用细看,出错再看

 

生命周期阶段描述
validate 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。
initialize 初始化构建状态,例如设置属性。
generate-sources 生成编译阶段需要包含的任何源码文件。
process-sources 处理源代码,例如,过滤任何值(filter any value)。
generate-resources 生成工程包中需要包含的资源文件。
process-resources 拷贝和处理资源文件到目的目录中,为打包阶段做准备。
compile 编译工程源码。
process-classes 处理编译生成的文件,例如 Java Class 字节码的加强和优化。
generate-test-sources 生成编译阶段需要包含的任何测试源代码。
process-test-sources 处理测试源代码,例如,过滤任何值(filter any values)。
test-compile 编译测试源代码到测试目的目录。
process-test-classes 处理测试代码文件编译后生成的文件。
test 使用适当的单元测试框架(例如JUnit)运行测试。
prepare-package 在真正打包之前,为准备打包执行任何必要的操作。
package 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。
pre-integration-test 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。
integration-test 处理和部署必须的工程包到集成测试能够运行的环境中。
post-integration-test 在集成测试被执行后执行必要的操作。例如,清理环境。
verify 运行检查操作来验证工程包是有效的,并满足质量要求。
install 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。
deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。

  这个阶段我们执行的命令是:mvn compile

 

  Maven Site 插件一般用来创建新的报告文档、部署站点等。执行命令为mvn site

 

仓库

 maven仓库指的是存放文件所用的地方。分三种

  本地仓库。本地自己使用。

  中央仓库。项目组自己使用。

  远程仓库。远程调用。

 

本地仓库

Maven 本地仓库是机器上的一个文件夹。它在你第一次运行任何 maven 命令的时候创建。

Maven 本地仓库保存你的工程的所有依赖(library jar、plugin jar 等)。当你运行一次 Maven 构建,Maven 会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程机器上的依赖文件。

Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>

 

中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

中央仓库的关键概念:

  • 这个仓库由 Maven 社区管理。
  • 不需要配置。
  • 需要通过网络才能访问。

要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。好像已经废了不太好用

 

远程仓库

如果 Maven 在中央仓库中也找不到依赖的库文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

 

项目构建

首先我们按之前所说创建一个maven
然后我们修改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>
      <groupId>com.companyname.projectgroup</groupId>
      <artifactId>project</artifactId>
      <version>1.0</version>
      <dependencies>
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
         </dependency>
      </dependencies>  
</project>

你可以看到项目自动导入了jar包

然后你加入如下代码导入servlet

      <dependency>
            <groupId>javax.servlet</groupId>
                 <artifactId>javax.servlet-api</artifactId>
                 <version>3.0.1</version>
             <scope>compile</scope>
         </dependency>

 

最后导入SpringMVC的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>
      <groupId>com.companyname.projectgroup</groupId>
      <artifactId>project</artifactId>
      <version>1.0</version>
      <dependencies>
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
         </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
                 <artifactId>javax.servlet-api</artifactId>
                 <version>3.0.1</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
           <version>4.1.2.RELEASE</version>
           <scope>compile</scope>
         </dependency>
      </dependencies>  
</project>

 

 



















以上是关于Maven教程的主要内容,如果未能解决你的问题,请参考以下文章

maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段

片段 getActivity 不起作用

Jacoco和Tycho surefire的Eclipse RCP插件代码介绍

Maven入门教程

最全最详细publiccms常用的代码片段

Maven教程