目录 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...要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里; 2、要能加载到依赖包...1 方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 在pom.xml中配置: ...用于生成META-INF/MANIFEST.MF文件的部分内容, com.xxg.Main指定MANIFEST.MF中的Main-Class, <addClasspath
要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里; 2、要能加载到依赖包...方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 在pom.xml中配置: [html] view plain copy ...用于生成META-INF/MANIFEST.MF文件的部分内容,com.xxg.Main指定MANIFEST.MF中的Main-Class,<addClasspath...例如下面是一个通过maven-jar-plugin插件生成的MANIFEST.MF文件片段: [plain] view plain copy Class-Path: lib/commons-logging...方法三:使用maven-shade-plugin插件打包 在pom.xml中配置: [html] view plain copy
会直接报错:无法找到主类或者找不到 xxx 依赖包/类,这是由于你没有定义 MANIFEST.MF 资源描述文件所致, 或者你直接把依赖的 jar 包打进了你最终的 jar,而这种嵌套的依赖...默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过 java命令运行的JAR文件,还要满足两个条件: JAR包中的/META-INF...Maven有好几个插件能帮助用户完成上述任务,不过用起来最方便的还是maven-shade-plugin,它可以让用户配置 Main-Class的值,然后在打包的时候将值填入/META-INF/MANIFEST.MF...在您的 POM 文件的插件部分添加清单 1 所示代码: 清单 1....附:Maven的坐标GAV(groupId, artifactId, version)定义 pom定义了最小的maven元素,允许groupId,artifactId,version。
自带核心插件 https://maven.apache.org/plugins/ 二....第三方插件 1.maven-assembly-plugin http://maven.apache.org/plugins/maven-assembly-plugin/ (1)打包独立运行的jar文件...的一个BUG,详见:https://issues.apache.org/jira/browse/MASSEMBLY-360 解决方案:使用maven-shade-plugin插件进行打包。...为了解决这个问题,可以在maven-shade-plugin中通过Resource Transformers将所有的spring.schemas文件中的内容都合并到一起。...https://maven.apache.org/plugins/maven-jar-plugin/usage.html 使用该插件可以在打包jar文件时做一些事情,比如:定义MANIFEST.MF
了解这一点非常重要,特别是当你需要自定义打包行为的时候,你就必须知道去配置哪个插件。...默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的JAR文件,还要满足两个条件: JAR包中的/META-INF/MANIFEST.MF...Maven有好几个插件能帮助用户完成上述任务,不过用起来最方便的还是maven-shade-plugin,它可以让用户配置Main-Class的值,然后在打包的时候将值填入/META-INF/MANIFEST.MF...下面是一个配置样例: org.apache.maven.plugins maven-shade-plugin 1.4 package shade com.juvenxu.mavenbook.HelloWorldCli...小结 打包是项目构建最重要的组成部分之一,本文介绍了主流Maven打包技巧,包括默认打包方式的原理、如何制作源码包和Javadoc包、如何制作命令行可运行的CLI包、以及进一步的,如何基于个性化需求自定义打包格式
要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里; 2、要能加载到依赖包...maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分内容,com.xxg.Main指定MANIFEST.MF中的Main-Class...例如下面是一个通过maven-jar-plugin插件生成的MANIFEST.MF文件片段: ?...只是生成MANIFEST.MF文件还不够,maven-dependency-plugin插件用于将依赖包拷贝到${project.build.directory}/lib...方法三:使用maven-shade-plugin插件打包 在pom.xml中配置: ? 配置完成后,执行mvn package即可打包。
springboot的一个典型的fat-jar大抵如此: example.jar | +-META-INF | +-MANIFEST.MF +-org | +-springframework...jar +-dependency2.jar 在对项目进行打包的时候,插件会把所有依赖的包下载好,放到一个自定义的文件夹下(这里是BOOT-INF/lib)。...以上就是Fat-Jar技术的基本原理,其实核心就在于要定义一套Jar包的文件规范,并且写一个打包插件按照这个规范打包,然后写一个Launcher进行解包、用依赖包配置ClassLoader、用反射调用实际...为了解决这个问题,在0.4.0版本后,在打包Ark Plugin时,增加了一个shade属性,用于指定需要shade进来的jar包的maven坐标。...-SNAPSHOT-sofa-ark-biz.jar │ ├── container │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │
如果不进行处理,直接打包,就会出现同名配置文件覆盖的情况 本文就是要来聊聊当多个jar合并成一个jar,如何解决多个同名配置文件覆盖的情况 解决思路 通过maven-shade-plugin这个插件,利用插件的...于是在我面前就有两条路,一条是放弃maven-shade-plugin插件,比如选择其他类似的插件,比如maven-assembly-plugin,这种方案我试过,发现maven-assembly-plugin...这个插件的扩展配置,比maven-shade-plugin复杂一些,于是放弃。...扩展的思路 我并没采用直接修改maven-shade-plugin插件的方式,而是在maven-shade-plugin打包后的基础上,再进行插件定制。...实现的思路也不难,就是修改maven-shade-plugin打成jar后的spring.factories文件内容,将 图片 调整成形如下即可 图片 自定义maven插件spring-factories-merge-plugin
这些插件可以帮助开发人员更方便地管理构建过程中所需的各种资源,提高软件构建的效率和质量。 ---- 开源项目中的使用 我们来看下nacos这个开源项目的plugin是如何使用的。...以下是各个部分的解释: :开始定义一个插件。...:开始定义插件的配置。 :开始定义归档(archive)配置。 :开始定义 manifest 配置。...https://maven.apache.org/plugins/maven-shade-plugin/ Shade 插件的功能更为强大,其提供了两个功能: 第一个即与 assembly 类似可实现依赖的打包编译...Shade 插件 - 标签 下面介绍一下 Shade 插件中各标签的使用。 artifactSet 通过 includes 标签可以指定需要一同打包编译的第三方依赖。
对并发模型进行了更高的抽象 异步、非阻塞、高性能的事件驱动编程模型 轻量级事件处理(1GB内存可容纳百万级别个Actor) 为什么 Actor 模型是一种处理并发问题的解决方案呢?...那么我们是不是可以转换一下思维,用单线程去处理相应的请求,但是又有人会问了,若是用单线程处理,那系统的性能又如何保证。Actor模型的出现解决了这个问题,简化并发编程,提升程序性能。...-- 指定编译scala的插件 --> net.alchim31.maven...-- maven打包的插件 --> org.apache.maven.plugins...maven-shade-plugin 2.4.3
二、spring-boot-loader模块提供的jar目录结构 Springboot中jar文件格式固定如下: archive.jar | +-META-INF(1) | +-MANIFEST.MF...那么spring-boot是如何去按照这个结构加载资源那?...首先在打包时候会使用spring-boot-maven-plugin插件重写打成的jar文件,会设置META-INF/MANIFEST.MF中的 Main-Class: org.springframework.boot.loader.JarLauncher...三、spring-boot-maven-plugin插件打包流程分析 ?...五、总结 spring-boot-load模块通过自定义jar包结构自定义类加载器优雅的实现了嵌套jar资源的加载,通过打包时候重新设置启动类和组织jar结构,通过运行时设置自定义加载器来实现嵌套jar
下面具体介绍下 spring-boot-loader是如何解决嵌套 jar 问题的。...archive.jar | +-META-INF(1) | +-MANIFEST.MF +-org(2) | +-springframework | +-boot | +...首先在打包时候会使用 spring-boot-maven-plugin 插件重写打成的 jar 文件,会设置META-INF/MANIFEST.MF 中的 Main-Class:org.springframework.boot.loader.JarLauncher...步骤(1)是 Maven 插件执行的入口类。 步骤(2)设置是否从 jar 本节里面排除掉 spring-boot-devtools 的 jar 包,默认是不排除。...JarLauncher 执行流程分析 为了解决嵌套 jar 资源加载问题,上节讲解了 Boot 提供的专用 Maven 插件用来修改 jar 包的 Main-Class: org.springframework.boot.loader.JarLauncher
不依赖任何外界包,maven如何生成可以执行的jar? pom中不包含任何引用的情况下,只需要在pom中添加 maven-jar-plugin即可。...文件查看为 ⇒ cat META-INF/MANIFEST.MF Manifest-Version: 1.0 Built-By: paxi Created-By: Apache Maven 3.3.3...需要使用插件maven-dependency-plugin 和 maven-jar-plugin。...文件为 ⇒ cat META-INF/MANIFEST.MF Manifest-Version: 1.0 Built-By: paxi Class-Path: libs/commons-lang3-3.7...jar,maven如何生成可执行jar?
nul>META-INF\MANIFEST.MF 这次我们换一种方式直接定义Main-Class。...jar>type nul>META-INF\MANIFEST.MF 这次我们换一种方式直接定义Main-Class。...=vip desc=这是一个内部配置文件 2.Maven专题 2.1Maven简介 Maven是一种构建工具(打包项目)、依赖管理工具(资源依赖管理工具:主要用于集成资源)、项目信息聚合工具。...--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。...-- 定义maven的打包编译插件 --> org.apache.maven.plugins <artifactId
demo-0.0.1-SNAPSHOT.jar是spring boot maven插件生成的jar包,里面包含了应用的依赖,以及spring boot相关的类。下面称之为fat jar。...先来查看spring boot打好的包的目录结构(不重要的省略掉): ├── META-INF │ ├── MANIFEST.MF ├── application.properties ├── com.../com/example/SpringBootDemoApplication.class 可以看到对于Jar里的资源,定义以’!/’来分隔。原始的JarFile URL只支持一个’!/’。.../META-INF/MANIFEST.MF 自定义URLStreamHandler,扩展JarFile和JarURLConnection 在构造一个URL时,可以传递一个Handler,而JDK自带有默认的...spring boot应用的maven打包过程 先通过maven-shade-plugin生成一个包含依赖的jar,再通过spring-boot-maven-plugin插件把spring boot loader
文章目录 Pre 引导 新建工程 打包 启动 java -jar 干啥的 打包插件 spring-boot-maven-plugin简介 包结构 META-INF内容 Archive的概念 JarFile...使用-jar参数时,后面的参数是的jar 【spring-0.0.1-SNAPSHOT.jar】,该jar文件中包含的是class和资源文件; 在manifest文件中有Main-Class的定义;Main-Class...spring-0.0.1-SNAPSHOT.jar ├── META-INF │ └── maven(主要是pom文件) │ └── MANIFEST.MF ├── BOOT-INF │ ├.../META-INF/MANIFEST.MF或[ArchiveDir]/META-INF/MANIFEST.MF Manifest getManifest() throws IOException...BOOT-INF/lib/*.jar List getNestedArchives(EntryFilter filter) throws IOException; } SpringBoot定义了一个接口用于描述资源
Since Maven 2.1.0-M1 详见:https://maven.apache.org/guides/introduction/introduction-to-the-pom.html之Available...-- 定义属性 --> org.apache.maven.pluginsmaven-shade-plugin 3.1.0
-- 指定插件--> net.alchim31.maven...-- maven打包的插件 --> org.apache.maven.plugins...maven-shade-plugin 2.4.3...-- 指定main方法 --> <transformer implementation="org.apache.<em>maven</em>.plugins.<em>shade</em>.resource.ManifestResourceTransformer
/MANIFEST.MF 中的 Class-Path 来的,我们目前大多项目都不会涉及到这个,所以索引文件的生成需要我们自己去做额外处理 只支持 URLClassloader,需要我们自己自定义类加载逻辑...implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> ...解决方案当然就是改这些时间。
正文通过前面的铺垫,大家对jmh应该有个大致的了解,接下来我们就来演示一下springboot项目如何利用jmh进行基准测试1、springboot的项目中引入JMH GAV ...,该插件也是shade插件,只是此时mainclass为org.openjdk.jmh.Main ...org.apache.maven.plugins maven-shade-plugin org.apache.maven.plugins maven-shade-plugin
领取专属 10元无门槛券
手把手带您无忧上云