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日

相关文章

  • 关于微信小程序获取小程序码并接受buffer流保存为图片的方法

    关于微信小程序获取小程序码并接受buffer流保存为图片的方法可以分为以下几步: 创建 API 方法 在小程序中,我们可以通过wx-api创建必要的API方法。这不仅可以帮助我们更好地组织代码,还可以使代码更具可读性和可维护性。 function getMiniProgramCode (path, width, callback) { wx.api.requ…

    Java 2023年5月23日
    00
  • 深入理解Java8新特性之新日期时间API的应用

    深入理解Java8新特性之新日期时间API的应用 简介 Java 8中新增加了新的日期时间API,该API提供了比老版本更多更好的特性,比如Date类容易被误用的缺陷在新API中得到很好的改进。本文将会深入讲解Java 8日期时间API,包括以下部分: 日期时间API的概览 LocalDate的使用 LocalTime的使用 LocalDateTime的使用…

    Java 2023年5月20日
    00
  • springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)

    SpringBoot整合Shiro多验证登录功能的实现 SpringBoot是一个快速开发Spring应用的框架,而Shiro可以方便的实现安全认证和授权,两者结合,可以非常方便的实现多验证登录功能。 SpringBoot集成Shiro 首先需要添加Shiro和SpringBoot的依赖。 <dependency> <groupId>…

    Java 2023年5月20日
    00
  • Java8 CompletableFuture runAsync学习总结submit() execute()等

    下面我将详细讲解关于Java8 CompletableFuture中的runAsync方法以及submit和execute方法。 Java8 CompletableFuture runAsync学习总结 什么是 CompletableFuture? Java 8的CompletableFuture是一种可以异步执行的Futures计算模型。它非常适合于I/O…

    Java 2023年5月26日
    00
  • java反射调用方法NoSuchMethodException的解决方案

    当使用Java反射调用方法时,如果使用错误的方法名或参数类型,或者方法不存在于该类或其父类中,就会出现NoSuchMethodException异常。在这种情况下,可以采取以下方法解决该异常: 确认方法名和参数类型是否正确 在使用反射调用方法之前,需要仔细检查方法名和参数类型是否正确,并确保它们与目标方法完全相同,包括包名、方法名和参数类型。例如,如下代码正…

    Java 2023年5月27日
    00
  • java中Struts2 的文件上传和下载示例

    Java中Struts2提供了方便的文件上传和下载的功能。下面将详细讲解文件上传和下载的示例。 文件上传示例 文件上传需要使用Struts2中的文件上传拦截器。详细步骤如下: 第一步:引入依赖 在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>commons-fileupload</grou…

    Java 2023年5月20日
    00
  • java实现桌球游戏

    下面我来详细讲解一下“Java实现桌球游戏”的完整攻略,具体内容如下: 准备工作 首先,我们需要准备以下开发工具: Eclipse IDE JDK JavaFX Scene Builder 安装完毕后,打开Eclipse IDE,在新建Java工程时,选择JavaFX项目,并在项目中导入JavaFX语言库。 编写桌球游戏程序 UI设计 使用JavaFX Sc…

    Java 2023年5月19日
    00
  • 为zookeeper配置相应的acl权限

    为ZooKeeper配置ACL权限需要经过以下步骤: 创建一个与管理员相关的ZooKeeper用户 要启动ACL功能,需要至少一个有ACL权限的用户。可以使用addauth命令添加管理员用户,然后再创建其他的用户。下面是添加管理员用户的示例: $ zkCli.sh addauth digest admin:admin123 其中,admin是用户名,admi…

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