maven 在执行package,install,deploy时使用clean与不使用clean的不同之处

Maven 是一种流行的项目管理工具,它以项目对象模型 (POM) 为基础,提供了一种标准化的方式来构建和管理项目。在执行 Maven 中的几个主要操作时,包括 package、install、deploy 等,我们可以使用 clean 来清理之前编译的产物,或者不使用 clean 来直接构建产物。使用或者不使用 clean 的主要区别在于编译产物是否被清理,以下是完整攻略。

一、使用 Maven 中的 clean(清理已编译的产物)

当我们使用 Maven 构建项目时,它会在项目的 target 目录下生成一些编译产物,例如 jar 文件或者 war 文件等。有时候,我们可能需要重新构建这些产物,例如需要重新打成一个 jar 文件,或者重新生成文档等等。

那么,在这种情况下,我们可以使用 Maven 中的 clean 命令来删除之前编译的产物,然后重新构建。具体命令为:

mvn clean package

使用了 clean 命令后,Maven 会删除 target 目录下的所有编译产物,并重新构建项目,生成新的编译产物。

以下是一个示例,当我们在命令行中执行 mvn clean package 命令时,Maven 会执行以下步骤:

  • 删除之前编译的产物,包括 target 目录下的所有文件;
  • 编译项目,生成新的编译产物;
  • 将编译产物打成一个 jar 文件。
$ mvn clean package

[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------< com.example:my-project >----------------
[INFO] Building my-project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]-----------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ my-project ---
[INFO] Deleting /path/to/my-project/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ my-project ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /path/to/my-project/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-project ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ my-project ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /path/to/my-project/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ my-project ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ my-project ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-project ---
[INFO] Building jar: /path/to/my-project/target/my-project-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ my-project ---
[INFO] Installing /path/to/my-project/target/my-project-1.0-SNAPSHOT.jar to /home/user/.m2/repository/com/example/my-project/1.0-SNAPSHOT/my-project-1.0-SNAPSHOT.jar
[INFO] Installing /path/to/my-project/pom.xml to /home/user/.m2/repository/com/example/my-project/1.0-SNAPSHOT/my-project-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.921 s
[INFO] Finished at: 2022-01-01T00:00:00+08:00
[INFO] ------------------------------------------------------------------------

在以上示例中,我们可以看到使用 clean 命令后,之前编译的产物被删除,然后重新编译并打包成了一个 jar 文件。

二、不使用 Maven 中的 clean(不清理已编译的产物)

如果我们不使用 Maven 中的 clean 命令,而是直接执行 package、install 或者 deploy 命令,那么之前编译的产物将不会被清理,而是直接使用之前编译的产物进行下一步的操作。

以下是一个示例,当我们在命令行中执行 mvn package 命令时,Maven 不会清理之前编译的产物,而是直接使用之前编译的产物进行下一步操作。

$ mvn package

[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------< com.example:my-project >----------------
[INFO] Building my-project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]-----------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ my-project ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /path/to/my-project/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-project ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ my-project ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /path/to/my-project/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ my-project ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ my-project ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-project ---
[INFO] Building jar: /path/to/my-project/target/my-project-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.921 s
[INFO] Finished at: 2022-01-01T00:00:00+08:00
[INFO] ------------------------------------------------------------------------

在以上示例中,我们可以看到在没有使用 clean 命令的情况下,Maven 不会清理之前编译的产物,而是直接使用之前编译的产物进行下一步操作。

综上所述,我们在执行 Maven 的 package、install、deploy 等操作时,可以使用或者不使用 clean 命令,具体是否需要清理之前编译的产物,要根据实际情况来判断。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:maven 在执行package,install,deploy时使用clean与不使用clean的不同之处 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java object 之clone方法全面解析

    Java对象之clone方法全面解析 简介 在Java中,如果使用赋值号将一个对象赋值给另外一个对象,那么这两个对象会共用同一份数据。而通过clone()方法可以创建一个新的对象,并复制原始对象数据到新对象中。 在本篇文章中,我们将全面解析clone()方法,介绍如何使用clone()方法拷贝一个Java对象。 clone() 方法说明 clone()方法是…

    Java 2023年5月26日
    00
  • Java调用groovy实现原理代码实例

    Java调用Groovy实现原理的主要步骤包括:加载Groovy脚本、编译Groovy脚本、实例化Groovy对象、调用Groovy对象方法。 以下是一个简单示例,演示如何通过Java调用Groovy代码: 编写Groovy脚本 class Greeting { String greet(String name) { return "Hello $…

    Java 2023年5月26日
    00
  • @RequestBody时第二个字母大写,映射不到的解决

    使用Spring MVC时,通常可以使用@RequestBody注解来接收HTTP请求的JSON数据,并将请求体转换为Java对象。但在实际使用过程中,有时会遇到使用@RequestBody时第二个字母大写时,映射不到的问题。这是因为Spring MVC默认情况下使用的是Jackson库来进行JSON转换,而Jackson库的命名策略默认是采用小写字母和下划…

    Java 2023年5月26日
    00
  • JAVA中JSONObject对象和Map对象之间的相互转换

    在Java中,JSONObject对象和Map对象是两种常用的数据结构,本篇攻略将介绍JSONObject对象和Map对象相互转换的方法。 什么是JSONObject对象和Map对象 JSONObject对象 JSONObject 是一个能够存储 key-value 映射的简单的开放解决方案。 JSONObject 的 constructor 支持通过传入一…

    Java 2023年5月26日
    00
  • JavaScript实现图片倒影效果 – reflex.js

    下面我将详细讲解“JavaScript实现图片倒影效果 – reflex.js”的完整攻略。 介绍 reflex.js是一个用于实现图片倒影效果的JavaScript插件。使用reflex.js,您可以很容易地在网页中添加图片倒影效果。 步骤 步骤一:加入源代码 要使用reflex.js,您需要将它的源代码(可以在GitHub上下载)加入到您的网页中。您可以…

    Java 2023年6月15日
    00
  • 基于JDBC访问MySql公共方法实例解析

    基于JDBC访问MySql公共方法实例解析 JDBC是Java标准化数据库连接API。本文将介绍如何使用Java JDBC API连接MySQL数据库并执行常用的增删改查操作。 步骤一:导入JDBC驱动 首先,需要将MySQL JDBC驱动包导入到项目中。可以在MySQL官网下载对应版本的JDBC驱动,然后将其添加到项目的class path中。 步骤二:创…

    Java 2023年6月16日
    00
  • jQuery中nextUntil()方法用法实例

    当你需要在 jQuery 中选取元素的时候,通过 nextUntil() 方法可以轻松地选取两个特定元素之间的所有元素。该方法返回元素集合对象。 语法 $(selector).nextUntil(stopSelector, filter) 参数: stopSelector:必选,元素的终止选择器,选取元素的末尾位置。 filter:可选,用于筛选元素的选择器…

    Java 2023年6月15日
    00
  • Gson中@JsonAdater注解的几种方式总结

    当我们使用Gson将Java对象序列化成JSON字符串或者JSON字符串反序列化成Java对象的时候,我们需要做一些特殊的处理,例如处理JSON字符串中的日期格式、处理JSON字符串中的空值、处理JSON字符串中特定字段的命名等等。Gson提供了@JsonAdapter注解来满足这些需求,它可以对序列化和反序列化过程中的数据进行自定义转换,下面我们来详细介绍…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部