Maven Assembly Plugin 和 Shade Plugin 都可以用来在构建单一 Jar 包时,将所有 Dependency 打入这个最终生成的 Jar 中去。...但是两者在具体的行为上有所不同:Assembly 插件不仅会将 Dependency 中的 Class 文件打入最终的 Jar 包,还会将 Dependency 中的资源文件,诸如 properties...文件打入最终的 Jar 包。...当项目和其 Dependency 中有同名的资源文件是,就会发生冲突,项目中的同名文件便不会加入到最终的 Jar 包中。 如果这个文件是一个关键的配置文件,便会导致问题。...而 Shade Plugin 不存在这样的问题。
(X)下的子工程,因为A是一个springboot项目,所以父工程X就把parent设置成了: org.springframework.boot spring-boot-starter-parent 2.0.1...于是我使用了这个打包插件: org.apache.maven.plugins maven-shade-plugin 3.1.1 package shade implementation=”org.apache.maven.plugins.shade.resource.ManifestResourceTransformer...很幸运的找到了这篇文章maven内部运行原理解析 具体细节我就不描述了,看到这里,我的疑问是,文章中提到,每一个plugin,都要有一个和表明该插件是在哪个阶段执行的哪个方法。...help:effective-pom和help:effective-settings最为有用,它们分别打印项目的有效POM和有效settings,有效POM是指合并了所有父POM(包括Super POM...此外,maven-help-plugin的describe目标可以帮助你描述任何一个Maven插件的信息,还有all-profiles目标和active-profiles目标帮助查看项目的Profile
任何一个maven项目都会继承一个默认的父pom配置:Super POM,详见:https://maven.apache.org/guides/introduction/introduction-to-the-pom.html...Variables 一个实际完整的maven项目pom.xml文件配置框架: <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven...-- 配置打包插件,如: 依赖处理,资源复制,压缩打包等 --> 的jar包文件提取出来放到指定位置 --> org.apache.maven.plugins<
打包是一个比较头疼的事情,默认maven打包的结果只包含项目本身的代码,如果要执行代码,还得带上依赖。maven-shade-plugin插件就能够帮我们把项目依赖的包也打进最终文件。...shade打包过程 shade插件绑定在maven的package阶段,他会将项目依赖的jar包解压并融合到项目自身编译文件中。...如果shade只有这一个功能,那它并不能够满足开发者的需求。因此,它提供了ResourceTransformer的接口,处理扫描到的资源文件,修改最终的输出结果,这个功能正是大家所需要的。...--只包含该项目代码中用到的jar,在父项目中引入了,但在当前模块中没有用到就会被删掉--> true...如果项目要求不能融合或者融合会出错,那么建议使用assembly插件打包。 参考 Apache Maven Shade Plugin maven-shade-plugin 简书
环境Maven 是一个项目管理和理解工具,它主要服务于基于 Java 的项目。...Maven 主要关注于项目的构建、依赖管理和项目信息管理。它使用一个名为 POM(Project Object Model)的 XML 文件来描述项目的构建过程、依赖、插件等信息。...以下是 Maven 的一些核心概念和功能:项目对象模型(POM):POM 是 Maven 项目的核心,它是一个 XML 文件,定义了项目的构建配置、依赖、插件、项目信息等。...依赖管理:Maven 通过 POM 文件管理项目的依赖,可以自动下载和安装所需的库。...插件:Maven 插件可以扩展 Maven 的功能,例如编译源代码、运行测试、生成文档等。继承:Maven 允许项目继承另一个 POM 文件,这样可以在父 POM 中定义公共配置,子项目继承这些配置。
在webapp子文件夹下我已经提前创建好了\web-INF\web.xml文件。可以跳过这个环节,因为maven插件可以帮我做这个工作。...我们根据这个布局然后添加一个非常简单的servlet java文件和很少的xml描述符。这才是真正的意图所在。...maven最爽的事情就是,war模块一些需要去构建的东西已经在这个特殊的父pom文件里面被预先定义和配置好了。但是这些东西是什么,maven将如何去使用它们?正如我们已经描述了Maven的全部约定。...当我们的项目有好几个war或者jar模块情况的时候,如果我们有一个父pom,并且我们已经为它定义了一个中央位置的插件和基本的配置,那么我们就没必要去在其他的那些war或者jar模块重新定义他们。...只有当其中的war或者jar模块需要特别对待的时候(例如,打包一些额外的东西或者有一个特殊的文件设计布局)。那么在这个项目部分我们需要重新定义插件和重写或者添加一些其他的东西。
如果不进行处理,直接打包,就会出现同名配置文件覆盖的情况 本文就是要来聊聊当多个jar合并成一个jar,如何解决多个同名配置文件覆盖的情况 解决思路 通过maven-shade-plugin这个插件,利用插件的...这个插件的扩展配置,比maven-shade-plugin复杂一些,于是放弃。...扩展的思路 我并没采用直接修改maven-shade-plugin插件的方式,而是在maven-shade-plugin打包后的基础上,再进行插件定制。...和spring-factories-merge-plugin的执行生命周期都是相同阶段,比如都是在package时,则maven-shade-plugin放置顺序得在spring-factories-merge-plugin...比如版本占位符插件flatten-maven-plugin在dubbo和springboot都有看到使用。
一、前言 上篇文章我们已经聊了SpringBoot的启动过程中的各类扩展点,那么从http://start.spring.io上我们生成的demo项目中,到目前就剩下了maven工程的pom.xml...首先映入眼帘的是:标签,熟悉Maven的朋友都知道,这个标签用来定义要继承的父pom的信息,它用来定义SpringBoot项目可能用到的依赖和插件声明以及一些资源文件声明...依赖以及spring-boot-maven-plugin插件一样,父pom.xml的源码如下: 的父pom,作用类似,不再详解,感兴趣的可以自己去翻阅源码。...那么这样看来我们自己的SpringBoot项目中的pom.xml文件就剩下显眼的两个依赖以及一个插件了(没有指定版本号的原因前面已经解释了),那我们接下来就来聊一聊这些非常重要的spring-boot-starter
关于DL4J DL4J是Deeplearning4j的简称,是基于Java虚拟机的深度学习框架,是用java和scala开发的,已开源,官网:https://deeplearning4j.org/ 关于...作为《DL4J实战》系列的开篇,本文为后面的文章和实战做好准备工作,包含以下内容: 确定环境和版本信息 创建名为dl4j-tutorials的maven工程作为父工程,后面整个系列的代码都是dl4j-tutorial...的子工程 创建名为commons的子工程,这里面是一些常用的工具代码,例如下载数据集、绘图等 源码下载 本篇实战中的完整源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com...实战》系列源码的公用父工程 《DL4J实战》系列的源码都放置在同一个父工程下,除了管理代码方便,还可以将各个子工程的依赖库版本统一管理,接下来创建这个父工程; 新建名为dl4j-tutorials的maven...maven-plugin.version>1.4.0maven-plugin.version> maven-shade-plugin.version>2.4.3
目录 maven常用打包命令 1 方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 2 方法二:使用maven-assembly-plugin插件打包在...pom.xml中配置: 3 方法三:使用maven-shade-plugin插件打包在pom.xml中配置: maven常用打包命令 1、mvn compile 编译,将Java 源程序编译成 class...1 方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 在pom.xml中配置: ...3 方法三:使用maven-shade-plugin插件打包 在pom.xml中配置: ...和maven-assembly-plugin一样,生成的jar文件包含了所有依赖,所以可以直接运行。
Maven有好几个插件能帮助用户完成上述任务,不过用起来最方便的还是maven-shade-plugin,它可以让用户配置 Main-Class的值,然后在打包的时候将值填入/META-INF/MANIFEST.MF...插件帮助您完成:maven-jar-plugin 和 maven-dependency-plugin。...在您的 POM 文件的插件部分添加清单 1 所示代码: 清单 1....有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。...POM关系: 主要为依赖,继承,合成 REF: 使用maven插件对java工程进行打包 http://chenzhou123520.iteye.com/blog/1706242
下面向大家介绍三种通过maven将工程打包成可执行的打包方式。...二、方法实践 2.1、assembly插件 2.1.1、pom.xml的相关配置文件如下 maven.apache.org/POM/4.0.0" xmlns...2.2、shade插件 2.2.1、pom.xml的相关配置文件如下 maven.apache.org/POM/4.0.0" xmlns:xsi="...-- maven-shade-plugin,不同的是shade可以将多个相同的配置文件追加合并 --> org.apache.maven.plugins...,比如,多个子项目下有相同的配置文件,shade在打包的时候,会将相同的配置文件合并。
以下是一些常用的 Maven 插件: Maven-clean-plugin:用于清除项目目录中的垃圾文件和临时文件。 Maven-compile-plugin:用于编译项目源代码,生成目标代码。...这些插件可以一起使用,以构建具有各种功能和依赖项的应用程序。 假设我们要创建一个名为my-project的 JAR 文件,其中包含项目中的源代码、依赖项和一些资源文件。...---- 看个 nacos的类似的配置 这段代码是在pom.xml中的标签内添加了一个maven-jar-plugin插件的配置。...https://maven.apache.org/plugins/maven-shade-plugin/ Shade 插件的功能更为强大,其提供了两个功能: 第一个即与 assembly 类似可实现依赖的打包编译...Shade 插件 - 标签 下面介绍一下 Shade 插件中各标签的使用。 artifactSet 通过 includes 标签可以指定需要一同打包编译的第三方依赖。
基于项目对象模型(POM)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告和文档。 Maven的核心是一个插件执行框架, 所有工作都是通过插件完成的。.../apache/maven-deploy-plugin/ ) 除了这些默认流程的插件,我们针对Maven的工作机制也制作了自己的插件,如 授权系统抽取api.json文件的插件,如通过erm对象描述文件生成...Maven坐标也就是这三个元素 modules 节点,聚合子模块, 在多模块的项目中使用,用来定义子模块,一般多模块项目中,父模块的packaging都定义为pom ...plugin这个节点主要用来定义构建的插件,包括自定义和已经发布到中央仓库的。...依赖的JAR的版本使用属性控制 建议依赖别的jar时,不要写死jar的版本,通过properties节点定义的属性来控制,那么当你pom被别人依赖时,上层pom可以通过定义属性值覆盖父pom中属性来控制依赖的版本
方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 在pom.xml中配置: [html] view plain copy ...例如下面是一个通过maven-jar-plugin插件生成的MANIFEST.MF文件片段: [plain] view plain copy Class-Path: lib/commons-logging...方法二:使用maven-assembly-plugin插件打包 在pom.xml中配置: [html] view plain copy ...方法三:使用maven-shade-plugin插件打包 在pom.xml中配置: [html] view plain copy ...和maven-assembly-plugin一样,生成的jar文件包含了所有依赖,所以可以直接运行。
所以请记住,拥有并配置父pom文件是一件非常好的事情。在它里面,你会定义你所有依赖的jar包的版本,配置maven的插件,所有的子pom文件都会继承父pom的配置。...这里用来定义在应用的模块中可能会用到的依赖和各自的版本。在这一部分中,我们实际关注的是版本号,包含还是排除依赖是取决于子pom(也就是说它们是不会被自动添加到子pom中的)。它们的作用范围也是一样。...在这个部分定义所有maven插件的版本和通用的配置。这些插件在我们的应用配置和打包的过程中会被引用或者是使用到。下面的例子中,我定义了一个最基本的编译器插件。当然,我们还需要更多的插件。 ?...但是,一步一步的定义了一个干净并且具体的父pom文件,他将是我们在下篇文章中要做的剩余工作的基础。 学习的重点 标准的maven工程布局。 父pom文件。...dependencyManagement和pluginManagement的重要性。 资源 Maven3 Java EE 7指南 Maven工程的结构 父pom 什么是依赖管理 什么是插件管理
配置Maven项目 在pom.xml配置文件中配置spark开发所需要的包,根据你Spark版本找对应的包,Maven中央仓库 org.apache.spark...配置Maven构建包 使用Maven构建包只需要在pom.xml中添加如下插件(maven-shade-plugin)即可 org.apache.maven.plugins... maven-shade-plugin 2.4.1...<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer...<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer
父pom配置:将需要继承的Jar包的坐标放入标签即可。...-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。...Maven首先在构建当前项目的地方寻找父项 目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。...--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。...-- 用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然 而,Maven 1.x有一种不同的布局。
父(Super)POM 父(Super)POM是 Maven 默认的 POM。所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 包含了一些可以被继承的默认设置。...Maven首先在构建当前项目的地方寻找父项 目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。...--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。...-- 用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。...Maven 2为其仓库提供了一个默认的布局;然 而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。
Shade 打包方式: 描述: Maven Shade插件允许创建一个可执行的JAR文件,其中包含所有依赖。 优点: 生成一个独立的可执行JAR,无需用户手动添加依赖。...Jar 打包方式_maven-jar-plugin Overview 使用maven-jar-plugin插件, 默认的打包方式,用来打普通的project JAR包 ....Shade 打包方式_maven-shade-plugin Overview 插件:使用maven-shade-plugin插件 maven-shade-plugin提供了两大基本功能: 将依赖的jar...”和“org.codehaus.plexus.util.xml.pull”不会被重命名到目的包中; 修改包的后缀名 默认会生成一个Jar包和一个以 “-shaded”为结尾的uber-jar包,可以通过配置来指定...日常使用比较多的是maven-assembly-plugin插件 例如:大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化
领取专属 10元无门槛券
手把手带您无忧上云