Maven实战(五)使用maven开发的项目,如何更方便地提取第三方包

2023-11-17

如果你的项目使用maven构建的话,当项目要上线,部署到服务器上去的时候或许会碰见这样的问题。问题就是,服务器上没有maven的环境,也就是说,项目所依赖到的那些仓库(repository)中的jar包你需要单独提取出来上传到服务器中去,解决办法:

前期:在eclipse里安装完成Maven (具体参与前 Maven实战 ),并项目为’Maven webapp项目‘类型,以spring-petclinic 为例

办法1:mvn package

pom.xml  :<packaging>是war的话,     mvn package 的命令将项目依赖的jar包打到web-inf 下的lib文件夹,如图:

,完成后console会提示war包的位置信息


办法2:mvn assembly:assembly 

在${project}/target 文件夹下发现新生成的 {artifactId}-jar-with-dependencies.jar 这个文件,命令执行的过程中,maven会将jar包所依赖的包导出,并且解压(unpackage),一并放在这个{artifactId}-jar-with-dependencies.jar包

注:pom.xml :

         <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
这个jar-with-dependencies是assembly预先写好的一个,组装描述引用(assembly descriptor)


办法3:按第三方包单独部署

a:修改pom.xml <descriptorRef>jar-with-dependencies</descriptorRef>路径,修改为:<descriptorRef>src/main/assembly/src.xml</descriptorRef>

b:于项目名称/src/main/assembly 下创建 src.xml文件:

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>jar-with-dependencies</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <unpack>false</unpack>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.outputDirectory}</directory>
        </fileSet>
    </fileSets>
</assembly>

c:再执行mvn assembly:assembly

这样在target文件夹中就会看见新创建出来的{artifactId}-jar-with-dependencies.jar 这个jar包

里面会将项目所依赖的所有第三方包按类型打包在里面




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven实战(五)使用maven开发的项目,如何更方便地提取第三方包 的相关文章

随机推荐

  • 【异步系列五】关于async/await与promise执行顺序详细解析及原理详解

    前段时间总结了几篇关于异步原理 Promise原理 Promise面试题 async await 原理的文章 链接如下 感兴趣的可以去看下 相信会有所收获 一篇文章理清JavaScript中的异步操作原理 Promise原理及执行顺序详解
  • 博客4:YOLOv5车牌识别实战教程:模型优化与部署

    摘要 本篇博客将详细介绍如何对YOLOv5车牌识别模型进行优化和部署 我们将讨论模型优化策略 如模型蒸馏 模型剪枝和量化等 此外 我们还将介绍如何将优化后的模型部署到不同平台 如Web 移动端和嵌入式设备等 车牌识别视频 正文 4 1 模型
  • 4.5 静态库链接

    4 5 静态库链接 一种语言的开发环境往往会附带语言库 language library 这些库通常是对操作系统API的包装 例如C语言标准库的函数strlen 并没有调用任何操作系统的API 但是很大一部分库函数都要调用操作系统API 例
  • 三目运算符优先级

    今天发表一个遇到的js的三元运算符优先级问题 如图 在解答这一题的时候 首先我们先理解什么是三元运算符 如名字一样是有三个操作数 语法 条件判断 结果1 结果2 如果条件成立 则返回结果1 否则返回结果2 在这里 三元运算符优先级是最低的
  • C语言实现TCP连接

    开发环境 TCP服务端 TCP UDP测试工具 开发环境 Linux 编程语言 C语言 TCP UDP测试工具工具的使用请自行百度 我们用这款软件模拟TCP服务端 效果展示 代码编写 include
  • bootstrap中container类和container-fluid类的区别

    近几天才开始系统的学习bootstrap 但马上就遇到了一个 拦路虎 container和container fluid到底什么区别 查了很多资料 看到很多人和我有同样的疑问 但是下面的回答一般都是一个是响应式一个宽度是百分百 说的好像是那
  • 【华为OD机试】斗地主之顺子(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • firefox 阻止此页面创建其他对话框的解决方法

    用Firefox操作弹出界面时总是遇到 firefox 阻止此页面创建其他对话框 点击确定后 控制台就会报错误 解决方法 1 在firefox里输入about config 2 在列表框里右键 gt 新建 gt 整数 3 输入选项名dom
  • Redis底层数据结构

    Redis简单介绍一下 Redis是一个开源的 使用C语言编写的 支持网络交互的 可基于内存也可持久化的Key Value数据库 有哪些数据结构 说起Redis数据结构 肯定先想到Redis的5 种基本数据结构 String 字符串 Lis
  • 日期类之运算符重载

    date h pragma once include
  • linux tcpdump抓包命令详解,tcpdump(抓包分析命令详解)

    TCPDump可以完全拦截网络上传输的数据包以提供分析 它支持对网络层 协议 主机 网络或端口的过滤 并提供逻辑语句 例如和 或不帮助您删除无用的信息 tcpdump抓包分析命令详解 tcpdump是一个用于截取网络分组 并输出分组内容的东
  • 如何成为一个牛逼的脚本小子日记之0x001-JAVA 代码审计 Top half (2023829-...

    如何成为一个牛逼的脚本小子日记之 0x001 JAVA 代码审计 Top half 2023 8 29 2023 9 1 此记录是在拥有一定的java基础下进行的 java基础类 反射 继承 filter servlet calssLoad
  • Springboot实现热部署

    所谓的热部署 比如项目的热部署 就是在应用程序在不停止的情况下 实现新的部署 而Springboot在我们每次修改完代码之后 可能只是修改下打印的信息 就得重新启动App类 这样太浪费时间 有没有一种修改完代码让程序自动重启的方法呢 答案是
  • DirectShow中的工具GraphEdit使用小结

    一 安装完Windows SDK 7 0或7 1后 在C Program Files Microsoft SDKs Windows v7 0 Bin下有32位的graphedt exe 及x64目录下有64位版本的graphedt exe
  • Python—PEP8规范

    Python PEP8规范 介绍 代码布局 模块导入顺序 空格 注释 注释块 命名风格 应避免的名字 模块名 类名 异常名 全局变量名 函数名 方法名和实例变量名 设计建议 Python思维导图 app siweidaotu com R06
  • MySql如何获取表头字段?实用技巧

    show columns from 表名
  • Tomcat源码分析之getParameter(String)与getQueryString()

    本文有些地方的描述对某些人来说可能比较罗嗦 如果想直接进入正题 可阅读 源码分析 节 但本文是自己一步步分析解决问题思路的记录 虽然有些地方的思考还不是很深入 主要是由于时间不是很充裕 虽然花了三天时间 但感觉还是不够 我会在后续的博文中
  • OpenZeppelin集成Truffle编写健壮安全的合约

    原文 http truffleframework com tutorials robust smart contracts with openzeppelin 因为智能合约往往涉及金钱 保证Soldity代码没有错误 以及足够的安全是非常根
  • RTP/RTCP/RTSP负载H264的一些问题小结

    以下内容都是基于rfc3984 RTP负载H264时的参数配置 1 在TCP传输时 Transport头中的interleaved参数必须设置 比如0 1 或者2 3 海康的流中出现了4 但是没有配置 所以wireshark也无法解析cha
  • Maven实战(五)使用maven开发的项目,如何更方便地提取第三方包

    如果你的项目使用maven构建的话 当项目要上线 部署到服务器上去的时候或许会碰见这样的问题 问题就是 服务器上没有maven的环境 也就是说 项目所依赖到的那些仓库 repository 中的jar包你需要单独提取出来上传到服务器中去 解