Maven基础 学习笔记

目录

1.设置 Maven 环境变量

2.Maven POM(Project Object Model,项目对象模型)

3.Maven 构建生命周期

3.1Clean生命周期

3.2Default(Build)生命周期

3.3Site生命周期

4.Maven构建配置文件

4.1构建配置文件的类型

4.2配置文件激活

5.Maven仓库

5.1本地仓库

5.2中央仓库

5.3远程仓库

5.4Maven 依赖搜索顺序

5.5Maven 阿里云(Aliyun)仓库

6.Maven插件

6.1插件类型

7.Maven 构建 Java 项目与测试

8.Maven引入外部依赖

9.Maven 项目模板

10.Maven项目文档

11.Maven 快照SNAPSHOT

注意事项

小结构建步骤


1.设置 Maven 环境变量

添加环境变量 MAVEN_HOME:E:\Maven\apache-maven-3.3.9

编辑系统变量 Path,添加变量值:;%MAVEN_HOME%\bin

2.Maven POM(Project Object Model,项目对象模型)

POM是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等。

POM 中可以指定以下配置:

  • 项目依赖
  • 插件
  • 执行目标
  • 项目构建 profile
  • 项目版本
  • 项目开发者列表
  • 相关邮件列表信息

在创建 POM 之前,首先需要描述项目组 (groupId), 项目的唯一ID

<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>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>project</artifactId>
 
    <!-- 版本号 -->
    <version>1.0</version>
</project>

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。

使用以下命令来查看 Super POM 默认配置:

mvn help:effective-pom

3.Maven 构建生命周期

其声明周期定义了一个项目构建到发布的过程。

default生命周期

验证 validate验证项目验证项目是否正确且所有必须信息是可用的
编译 compile执行编译源代码编译在此阶段完成
测试 Test测试使用适当的单元测试框架(例如JUnit)运行测试。
包装 package打包创建JAR/WAR包如在 pom.xml 中定义提及的包
检查 verify检查对集成测试的结果进行检查,以保证质量达标
安装 install安装安装打包的项目到本地仓库,以供其他项目使用
部署 deploy部署拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

Maven有三个标准的生命周期:

  • clean:项目清理的处理
  • default(build):项目部署的处理
  • site:项目站点文档创建的处理

 

构建阶段由插件目标构成。一个插件目标代表一个特定的任务,这有助于项目的构建和管理。

3.1Clean生命周期

    在执行mvn post-clean命令时,Maven会调用clean生命周期,它包括三个阶段:

  •       pre-clean:执行一些需要在clean之前完成的工作
  •      clean:移除所有上一次构建生成的文件
  •      post-clean:执行一些需要在clean之后立即完成的工作

如果执行 mvn clean 将运行以下两个生命周期阶段:

pre-clean, clean

如果我们运行 mvn post-clean ,则运行以下三个生命周期阶段:

pre-clean, clean, post-clean

3.2Default(Build)生命周期

这是 Maven 的主要生命周期,被用于构建应用,包括下面的 23 个阶段:

生命周期阶段描述
validate(校验)校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
initialize(初始化)初始化构建状态,比如设置属性值。
generate-sources(生成源代码)生成包含在编译阶段中的任何源代码。
process-sources(处理源代码)处理源代码,比如说,过滤任意值。
generate-resources(生成资源文件)生成将会包含在项目包中的资源文件。
process-resources (处理资源文件)复制和处理资源到目标目录,为打包阶段最好准备。
compile(编译)编译项目的源代码。
process-classes(处理类文件)处理编译生成的文件,比如说对Java class文件做字节码改善优化。
generate-test-sources(生成测试源代码)生成包含在编译阶段中的任何测试源代码。
process-test-sources(处理测试源代码)处理测试源代码,比如说,过滤任意值。
generate-test-resources(生成测试资源文件)为测试创建资源文件。
process-test-resources(处理测试资源文件)复制和处理测试资源到目标目录。
test-compile(编译测试源码)编译测试源代码到测试目标目录.
process-test-classes(处理测试类文件)处理测试源码编译生成的文件。
test(测试)使用合适的单元测试框架运行测试(Juint是其中之一)。
prepare-package(准备打包)在实际打包之前,执行任何的必要的操作为打包做准备。
package(打包)将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成测试前)在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
integration-test(集成测试)处理和部署项目到可以运行集成测试环境中。
post-integration-test(集成测试后)在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
verify (验证)运行任意的检查来验证项目包有效且达到质量标准。
install(安装)安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
deploy(部署)将最终的项目包复制到远程仓库中与其他开发者和项目共享。

***************命令行调用***************

  • 在开发环境中,使用下面的命令去构建、安装工程到本地仓库
          mvn install
  • 这个命令在执行 install 阶段前,按顺序执行了 default 生命周期的阶段 (validate,compile,package,等等),我们只需要调用最后一个阶段,如这里是 install。
  • 在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中
        mvn clean deploy
  • 这行命令也可以用于多模块的情况下,即包含多个子项目的项目,Maven 会在每一个子项目执行 clean 命令,然后再执行 deploy 命令。

3.3Site生命周期

Maven Site 插件一般用来创建新的报告文档、部署站点等。

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特定的服务器上

这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。 

4.Maven构建配置文件

使用构建配置文件,可以为不同的环境(如生产环境,测试环境,开发环境)定制构建方式。

配置文件在pom.xml文件中使用activeProfiles或者profiles元素指定,并可以通过各种方式触发。配置文件在构建时修改POM,并且用来给参数设定不同的目标环境。

4.1构建配置文件的类型

类型在哪定义
项目级(Per Project)定义在项目的POM文件pom.xml
用户级 (Per User)定义在Maven的设置xml文件中 (%USER_HOME%/.m2/settings.xml)
全局(Global)定义在 Maven 全局的设置 xml 文件中 (%M2_HOME%/conf/settings.xml)

4.2配置文件激活

  • 使用命令控制台输入显式激活。

       --->profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

      注意:构建配置文件采用的是 <profiles> 节点。

  • 通过 maven 设置。
  • 基于环境变量(用户或者系统变量)。
  • 操作系统设置(比如说,Windows系列)。
  • 文件的存在或者缺失。

5.Maven仓库

仓库是一个位置Place。Maven仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

在Maven中,任何一个依赖,插件或者项目构建的输出,都可以称之为构件。

Maven仓库能够帮我们管理构件(主要时JAR),他就是放置所有JAR文件(WAR,ZIP,POM等)的地方。

Maven仓库有三种类型:

  • 本地local
  • 中央central
  • 远程remote

5.1本地仓库

本地仓库在安装Maven后并不会创建,它是在第一次执行maven命令的时候才被创建。

运行maven时,maven所需要的任何构件都是直接 从本地仓去获取的。若本地没有,首先尝试从远程仓库下载构件到本地仓库,然后再使用本地仓库的构件。

默认情况下,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

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

当你运行 Maven 命令,Maven 将下载依赖的文件到你指定的路径中。

<localRepository>d:/maven/repository</localRepository>

<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>d:/maven/repository</localRepository>
</settings>

5.2中央仓库

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

中央仓库的关键概念:

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

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

5.3远程仓库

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

5.4Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

5.5Maven 阿里云(Aliyun)仓库

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

第一步:修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>

第二步: pom.xml文件里添加:

      <repository>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>  
      <repository>

6.Maven插件

Maven实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成的。Maven插件通常被用来:

  • 创建jar文件
  • 创建war文件
  • 编译代码文件
  • 代码单元测试
  • 创建工程文档
  • 创建工程报告

插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

<code>mvn [plugin-name]:[goal-name]</code>

例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

<code>mvn compiler:compile</code>

6.1插件类型

Maven 提供了下面两种类型的插件:

类型描述
Build plugins在构建时执行,并在 pom.xml 的 元素中配置。
Reporting plugins在网站生成过程中执行,并在 pom.xml 的 元素中配置。

下面是一些常用插件的列表:

插件描述
clean构建之后清理目标文件。删除目标目录。
compiler编译 Java 源文件。
surefile运行 JUnit 单元测试。创建测试报告。
jar从当前工程中构建 JAR 文件。
war从当前工程中构建 WAR 文件。
javadoc为工程生成 Javadoc。
antrun从构建过程的任意一个阶段中运行一个 ant 任务的集合。

7.Maven 构建 Java 项目与测试

Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。

在下面的例子中,我们将在 D:\MVN 文件夹下创建一个基于 maven 的 java 应用项目。

命令格式如下:

mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"

参数说明:

  • -DgroupId: 组织名,公司网址的反写 + 项目名称
  • -DartifactId: 项目名-模块名
  • -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java 应用
  • -DinteractiveMode: 是否使用交互模式

生成的文件夹结构如下:

各个文件夹说明:

文件夹结构描述
consumerBanking包含 src 文件夹和 pom.xml
src/main/java containsjava 代码文件在包结构下(com/companyName/bank)。
src/main/test contains测试代码文件在包结构下(com/companyName/bank)。
src/main/resources包含了 图片 / 属性 文件(在上面的例子中,我们需要手动创建这个结构)。

D:\MVN\consumerBanking\src\main\java\com\companyname\bank文件夹中,可以看到一个 App.java代码如下:

D:\MVN\consumerBanking\src\test\java\com\companyname\bank文件夹,可以看到 Java 测试文件 AppTest.java

进入 D:/MVN 文件夹下,打开 consumerBanking 文件夹。你将看到有一个 pom.xml 文件,代码如下:

从以上 xml代码中,可知 Maven 已经添加了 JUnit 作为测试框架。

打开命令控制台,跳转到 C:\MVN\consumerBanking 目录下,并执行以下 mvn 命令开始构建项目,生成target文件

mvn clean package

执行完后,我们已经构建了自己的项目并创建了最终的 jar 文件,下面是要学习的关键概念:

  • 我们给了 maven 两个目标,首先清理目标目录(clean),然后打包项目构建的输出为 jar(package)文件。
  • 打包好的 jar 文件可以在 consumerBanking\target 中获得,名称为 consumerBanking-1.0-SNAPSHOT.jar。
  • 测试报告存放在 consumerBanking\target\surefire-reports 文件夹中。
  • Maven 编译源码文件,以及测试源码文件。
  • 接着 Maven 运行测试用例。
  • 最后 Maven 创建项目包。

D:\MVN\consumerBanking\target\classes>java com.companyname.bank.App

你可以看到结果:

Hello World!

添加 Java 源文件

接下来我们看看如何添加其他的 Java 文件到项目中。

package com.companyname.bank;
 
public class Util 
{
   public static void printMessage(String message){
       System.out.println(message);
   }
}

更新 App 类来使用 Util 类:

package com.companyname.bank;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        // 使用Util类,输出一段文字
        Util.printMessage("Util Class Test OK!");
    }
}

现在打开命令控制台,跳转到 D:\MVN\consumerBanking 目录下,并执行下面的 mvn 命令,进行Maven构建。

D:\MVN\consumerBanking>mvn clean compile

在 Maven 构建成功之后,跳转到 D:\MVN\consumerBanking\target\classes 目录下,并执行下面的 java 命令。

D:\MVN\consumerBanking\target\classes>java -cp . com.companyname.bank.App

你可以看到结果:

Hello World!
Util Class Test OK!

8.Maven引入外部依赖

如果我们需要引入第三库文件到项目,该怎么操作呢?

pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。

要添加依赖项,我们一般是先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。我们使用的是 ldapjdk.jar ,它是为 LDAP 操作的一个帮助库:

然后添加以下依赖到 pom.xml 文件中:

dependencies>
    <!-- 在这里添加你的依赖 -->
    <dependency>
        <groupId>ldapjdk</groupId>  <!-- 库名称,也可以自定义 -->
        <artifactId>ldapjdk</artifactId>    <!--库名称,也可以自定义-->
        <version>1.0</version> <!--版本号-->
        <scope>system</scope> <!--作用域-->
        <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath> <!--项目根目录下的lib文件夹下-->
    </dependency> 
</dependencies>

9.Maven 项目模板

Maven使用archetype(原型,是一个插件,根据模板创建一个项目结构)来创建自定义的项目结构,形成Maven项目模板。

命令来快速创建 java 项目:(quickstart 原型插件创建一个简单的 java 应用程序。)

quickstart 原型插件创建一个简单的 java 应用程序。

mvn archetype:generate

Maven 将开始处理,并要求选择所需的原型:

按下 Enter 选择默认选项 (7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.))。

Maven 将询问项目细节。按要求输入项目细节。

Define value for property 'groupId': com.baymax.insurance
Define value for property 'artifactId': health
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.baymax.insurance: :

Maven 将要求确认项目细节,按 Enter 或按 Y

Confirm properties configuration:
groupId: com.baymax.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.baymax.insurance
 Y: :

现在 Maven 将开始创建项目结构,显示如下:

创建的项目

现在转到 D:\ > MVN 目录。你会看到一个名为 health 的 java 应用程序项目,就像在项目创建的时候建立的 artifactId 名称一样。 Maven 将创建一个有标准目录布局的项目,如下所示:

创建 pom.xml

Maven 为项目自动生成一个 pom.xml文件,如下所示:

就这样。现在你可以看到 Maven 的强大之处。你可以用 maven 简单的命令创建任何类型的项目,并且可以启动您的开发。

10.Maven项目文档

mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"

两种方式都可以创建java项目

修改 pom.xml,添加以下配置(如果没有的话):

<project>
  ...
    <build>
    <pluginManagement>
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>2.7</version>
        </plugin>
    </plugins>
    </pluginManagement>
    </build>
 ...
</project>

不然运行 mvn site 命令时出现 java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent 的问题, 这是由于 maven-site-plugin 版本过低,升级到 3.3+ 即可。

打开 consumerBanking 文件夹并执行以下 mvn 命令。

C:\MVN\consumerBanking> mvn site

打开 D:\MVN\consumerBanking\target\site 文件夹。点击 index.html 就可以看到文档了。

Maven 使用一个名为 Doxia的文档处理引擎来创建文档,它能将多种格式的源码读取成一种通用的文档模型。要为你的项目撰写文档,你可以将内容写成下面几种常用的,可被 Doxia 转化的格式。

格式名描述参考
Apt纯文本文档格式http://maven.apache.org/doxia/references/apt-format.html
XdocMaven 1.x 的一种文档格式http://jakarta.apache.org/site/jakarta-site2.html
FMLFAQ 文档适用http://maven.apache.org/doxia/references/fml-format.html
XHTML可扩展的 HTML 文档http://en.wikipedia.org/wiki/XHTML

11.Maven 快照SNAPSHOT

快照:快照是一种特殊的版本,指定了某个当前的开发进度的副本。不同于常规的版本,Maven 每次构建都会在远程仓库中检查新的快照。

项目快照 vs 版本

对于版本,如果 Maven 以前下载过指定的版本文件,比如说 data-service:1.0,Maven 将不会再从仓库下载新的可用的 1.0 文件。若要下载更新的代码,data-service 的版本需要升到1.1。

快照的情况下,每次 app-ui 团队构建他们的项目时,Maven 将自动获取最新的快照(data-service:1.0-SNAPSHOT)。

app-ui 项目的 pom.xml 文件

app-ui 项目使用的是 data-service 项目的 1.0 快照。

<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>app-ui</groupId>
   <artifactId>app-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
      <groupId>data-service</groupId>
         <artifactId>data-service</artifactId>
         <version>1.0-SNAPSHOT</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
</project>

data-service 项目的 pom.xml 文件

data-service 项目为每次小的改动发布 1.0 快照。

<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>data-service</groupId>
   <artifactId>data-service</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
</project>

虽然,快照的情况下,Maven 在日常工作中会自动获取最新的快照, 你也可以在任何 maven 命令中使用 -U 参数强制 maven 现在最新的快照构建。

mvn clean package -U

让我们打开命令控制台,去到 D:\ > MVN > app-ui 目录,然后执行下面的 mvn 命令。

D:\MVN\app-ui>mvn clean package -U

Maven 将在下载 data-service 最新的快照之后,开始构建项目。

 

 

 

 

 

 

在 pom.xml 文件中,我们常用到的一些重要元素节点如下表所示:

元素节点描述
SCM配置 SVN 的路径,Maven 将从该路径下将代码取下来。
repository构建的 WAR 或 EAR 或JAR 文件的位置,或者其他源码构建成功后生成的构件的存储位置。
Plugin配置 maven-release-plugin 插件来实现自动部署过程。
<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>bus-core-api</groupId>
   <artifactId>bus-core-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging> 
<!--配置 SVN 的路径,Maven 将从该路径下将代码取下来。-->
   <scm>
      <url>http://www.svn.com</url>
      <connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
      Framework</connection>
      <developerConnection>scm:svn:${username}/${password}@localhost:8080:
      common_core_api:1101:code</developerConnection>
   </scm>
   <distributionManagement>
<!--构建的 WAR 或 EAR 或JAR 文件的位置,或者其他源码构建成功后生成的构件的存储位置。-->
      <repository>
         <id>Core-API-Java-Release</id>
         <name>Release repository</name>
         <url>http://localhost:8081/nexus/content/repositories/
         Core-Api-Release</url>
      </repository>
   </distributionManagement>
   <build>
<!--配置 maven-release-plugin 插件来实现自动部署过程。-->
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0-beta-9</version>
            <configuration>
               <useReleaseProfile>false</useReleaseProfile>
               <goals>deploy</goals>
               <scmCommentPrefix>[bus-core-api-release-checkin]-<
               /scmCommentPrefix>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

Maven Release 插件

Maven 使用 maven-release-plugin 插件来完成以下任务。

mvn release:clean

清理工作空间,保证最新的发布进程成功进行。

mvn release:rollback

在上次发布过程不成功的情况下,回滚修改的工作空间代码和配置保证发布过程成功进行。

执行多种操作:

  • 检查本地是否存在还未提交的修改
  • 确保没有快照的依赖
  • 改变应用程序的版本信息用以发布
  • 更新 POM 文件到 SVN
  • 运行测试用例
  • 提交修改后的 POM 文件
  • 为代码在 SVN 上做标记
  • 增加版本号和附加快照以备将来发布
  • 提交修改后的 POM 文件到 SVN
mvn release:perform

 

注意事项

使用 Eclipse 构建的时候会出现 run as 中没有 maven package 选项,网上看到这个解决办法。

是因为建的是普通 java 工程,需要把它转换成 maven project

  •  1、右键工程--maven--Disable maven nature
  •  2、在当前目录下执行命令(就是有pom.xml文件的那个目录) —— mvn eclipse:clean
  •  3、重新转换该工程为maven工程。右键工程--- 'Configure'--- 'Convert to meven project'

小结构建步骤

完全在控制台(CMD)中操作


在路径D:\MVN下 构建项目(mvnTest)
mvn archetype:generate 


切换到项目路径,并完成打包,生成target文件
cd D:\MVN\mvnTest
D:\MVN\mvnTest>mvn clean package

 

切换路径
cd D:\MVN\mvnTest\target\classes
D:\MVN\mvnTest\target\classes>java com.baymax.mvnTest.App

 

重新编译
D:\MVN\consumerBanking>mvn clean compile


在执行
java -cp . com.baymax.mvnTest.App

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Baymax_wyl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值