首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

maven-shade-plugin排除了声明为依赖项的jar

maven-shade-plugin是一个用于构建Java项目的Maven插件,它可以将项目的所有依赖项打包到一个可执行的JAR文件中。在打包过程中,有时候我们希望排除一些声明为依赖项的JAR文件,以减小最终生成的JAR文件的大小或避免冲突。

排除声明为依赖项的JAR文件可以通过在maven-shade-plugin的配置中使用<excludes>标签来实现。在<excludes>标签中,我们可以指定需要排除的JAR文件的坐标或者通配符。

例如,假设我们的项目依赖了两个JAR文件:A.jar和B.jar,但是我们希望在最终的JAR文件中排除B.jar。我们可以在maven-shade-plugin的配置中添加以下内容:

代码语言:txt
复制
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <configuration>
        <excludes>
          <exclude>groupId:B</exclude>
        </excludes>
      </configuration>
    </plugin>
  </plugins>
</build>

在上述配置中,我们使用<exclude>标签指定了需要排除的JAR文件的坐标,其中groupId表示JAR文件的组织ID,B表示JAR文件的Artifact ID。这样,在执行maven-shade-plugin的打包命令时,B.jar将会被排除在最终生成的JAR文件之外。

maven-shade-plugin的排除功能可以帮助我们解决一些常见的问题,例如避免冲突的依赖项、减小最终生成的JAR文件的大小等。然而,需要注意的是,排除某个JAR文件可能会导致项目在运行时出现错误或功能缺失,因此在使用排除功能时需要谨慎操作。

腾讯云提供了一系列与云计算相关的产品和服务,其中包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和产品介绍链接地址可以根据具体需求和场景进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

maven: 打包可运行jar包(java application)及依赖处理

类,然后用mvn exec:exec来运行,但是部署到生产环境中时,服务器上通常并不具备maven环境,只能用 java -jar xxx.jar这种方式来运行,下面是一些处理细节: 一、依赖处理...java application运行时需要查找依赖第三方jar,如果查找classpath失败,就会报错,可以先用 mvn dependency:copy-dependencies -DoutputDirectory...=target/lib 命令,把依赖jar包全部导出到target/lib这个目录下 二、利用maven-jar-plugin修改META-INF\MANIFEST.MF 清单文件 java application...jar包在什么地方,第6行表示main函数入口类,默认情况下mvn clean package生成jar包里,清单文件上并没有这2行,需要在pom.xml中添加插件 1 2...,这样mvn package后,清单文件里就会自动添加Main-Class和Class-Path这二 ok了,部署时把jar包和lib目录,都上传到服务器上 ,然后测试一下,顺利的话 java -jar

2K90

maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题神器

这段话简明扼要概述了 maven-shade-plugin 功能 能够将项目连同其依赖,一并打包到一个 uber-jar 中 uber-jar 就是一个超级 jar,不仅包含我们工程代码,还包括依赖...jar,和 spring-boot-maven-plugin 类似 能够对依赖 jar包名进行重命名 这个功能就有意思了,后面我们详说 maven-shade-plugin 必须和...除了手动指定 filter 外,此插件还支持自动移除项目中没有使用到依赖类,以此来最小化 uber jar 体积;configuration 配置如下 <minimizeJar...,名字叫 qsl-a,没有任何代码,仅仅依赖 A.jar,然后利用 maven-shade-plugin Relocating Classes 功能对 A.jar 中存在重名 class 进行重定向...更实际案例,敬请期待我下篇博客 总结 maven-shade-plugin 输入目标是 项目原始jar 以及 项目依赖所有jar,而输出目标是 uber-jar,所以 maven-shade-plugin

10610
  • Maven - 打包之争:Jar vs. Shade vs. Assembly

    优点: 生成一个独立可执行JAR,无需用户手动添加依赖。 缺点: 可能会导致JAR文件较大,不适合所有项目。...缺点: 配置相对复杂,适用于需要高度定制化项目。 总结 : Jar方式适用于简单项目,但对于有依赖项目需要手动处理依赖 ; 默认打包方式,用来打普通project JAR包;。...Assembly方式最灵活,可以根据项目需求创建定制分发包 ; 自定义打包结构,也可以定制依赖等。...Shade 打包方式_maven-shade-plugin Overview 插件:使用maven-shade-plugin插件 maven-shade-plugin提供了两大基本功能: 将依赖jar...包打包到当前jar包(常规打包是不会将所依赖jar包打进来); 对依赖jar包进行重命名(用于类隔离); 使用 maven-shade-plugin 只存在一个goal shade:shade,需要将其绑定到

    1.2K10

    版本不兼容Jar包冲突该如何是好?

    如下图所示,Project表示我们项目,Dependency A表示我们业务依赖,Dependency B表示中间件依赖,如果业务依赖和中间件依赖依赖同一个Jar包C,但是版本却不一样,分别为0.1...在最近项目里,我们需要使用Guava高版本Jar包,但是发现中间件依赖是低版本且与高版本不兼容Jar包,面对这种两难,我们肯定是“老婆”和“妈妈”都要救,于是我们开始寻求解决方案。...于是,我们就去搜索相关文章,果不其然,maven-shade-plugin正是那优雅挠痒姿势,这个Maven插件原理正是将类包路径进行重新映射,达到隔离不兼容Jar目的。...三、maven-shade-plugin解决依赖冲突 最后如何来配置和使用maven-shade-plugin将Guava映射成我们自己定制Jar包,实现与中间件Guava隔离。...如果遇到类似需要支持版本不兼容Jar包共存场景,可以考虑使用maven-shade-plugin插件,这种方法比较轻量级,可用于项目中存在个别不兼容Jar包冲突场景,简单有效,成本也很低。

    2.4K30

    【Maven 官方教程】Building Java Projects

    Declare Dependencies 声明依赖 简单 Hello World 样例是完全自给自足, 不依赖于任何其他库。 然而, 大多数应用程序依赖于外部库来处理公共和复杂功能。...例如, 假设除了说"你好, 世界!" , 您希望应用程序打印当前日期和时间。 虽然你可以使用本地 Java 库中日期和时间设施, 但是使用 Joda Time 库可以使事情变得更有趣。...joda-time 2.9.2 默认情况下,所有依赖范围都是编译依赖...此外,您可以指定一个 scope 元素来指定以下范围之一: provided-编译项目代码所需依赖, 但这些依赖将由运行代码容器(例如 Java Servlet API)在运行时提供。...test-用于编译和运行测试依赖, 但不需要用于构建或运行项目的运行时代码。

    33310

    Maven - 统一构建规范:Maven 插件管理最佳实践

    它可以将项目的源代码、依赖和配置文件打包成一个 JAR 文件,以便在应用程序中使用。...该插件使用 Apache Maven 默认构建系统,因此可以使用 Maven 所有功能,如依赖管理、构建脚本等。...这些插件可以一起使用,以构建具有各种功能和依赖应用程序。 假设我们要创建一个名为my-project JAR 文件,其中包含项目中源代码、依赖和一些资源文件。...如新建一个 Maven 工程并在依赖中导入 Jackson 依赖库并进行打包编译,可以看到下图编译后 JAR 文件中只有工程中新建 MyTest.class 文件,项目中所导入依赖并没有被一起打包...文件中除了自定义创建 MyTest.clss 文件外同时包含了依赖第三方库。

    1.5K30

    maven:又遇到maven jar包冲突了?比较常见处理方法及避坑

    简介 ---- 在使用Maven时,有时会遇到jar包冲突问题,也就是多个依赖中包含了同名jar包,在编译或运行时会导致异常。...解决maven jar包冲突方法 ---- 1、利用mavenExclusions功能排除依赖 2、利用mavenscope功能,限制依赖使用范围 控制 dependency(依赖)元素使用范围...通俗讲,就是控制 Jar 包在哪些范围被加载和使用。这个范围包括,编译、测试、运行,并且还可以加上是否被打入包中。...3、利用maven-shade-plugin重定位类(Relocating Classes)功能,把依赖第三方jar包重命名后打包到项目的jar包 比如Flink大多数依赖,如guava、netty...比如tomcat为了实现运行时隔离采用类加载策略: 小结 ---- 如果又遇到maven jar包冲突了,可以使用上面比较常见这几种处理方法来解决,每种解决方案都有其适用场景。

    1.2K20

    maven:shade 生成快照版本(SNAPSHOT)fat-jar,同时生成对应source.jar

    有的时候,我们需要将项目所有依赖库打成一个fat-jar,提供给客户,同时提供对应source.jar。...包到本地仓库时并不会生成项目对应source.jar.只有mvn deploy发布到远程仓库时才会安装source.jar,如果我没有远程仓库,或不想发布到远程仓库,或者我只是在开发期频繁生成快照版本...(SNAPSHOT),上述maven-shade-plugin插件就生成source.jar并不包含项目的源码,因为它找不到项目对应源码。...经过反复摸索,找到为快照版本安装source.jar到本地仓库办法,也很简单: 正常我们只是执行mvn install,安装快照版本到本地仓库,现在只要多一条source:jar让maven在执行install...命令同时生成source.jar并安装到本地仓库,如下: mvn source:jar install

    95210

    浅谈 java 中构建可执行 jar几种方式

    会直接报错:无法找到主类或者找不到 xxx 依赖包/类,这是由于你没有定义 MANIFEST.MF 资源描述文件所致, 或者你直接把依赖 jar 包打进了你最终 jar,而这种嵌套依赖...元素中包括所有依赖。...classpathPrefix:如果您计划在同一目录下包含有您所有依赖,作为您将构建 JAR,那么您可以忽略它;否则使用  classpathPrefix 来指定所有依赖 JAR 文件前缀。...本例中,我将依赖复制到  build 目录下 lib 目录(project-home/target/lib)。...将您依赖和修改 MANIFEST.MF 放在适当位置后,您就可以用一个简单命令启动应用程序: java -jar jarfilename.jar 更多技巧,您可以参考: 关于

    3.9K50

    聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

    前言 不知道大家在开发过程中,有没有遇到这种场景,外部项目想访问内部nexus私仓jar,因为私仓不对外开放,导致外部项目没法下载到私仓jar,导致项目因缺少jar而无法运行。...对于第二种方案有时候因为私仓jar里面有依赖其他内部jar,导致要下载多个jar情况。这时候为了方便,我们可能会将这些jar合并成一个大jar,再给出去。...如果不进行处理,直接打包,就会出现同名配置文件覆盖情况 本文就是要来聊聊当多个jar合并成一个jar,如何解决多个同名配置文件覆盖情况 解决思路 通过maven-shade-plugin这个插件,利用插件...扩展思路 我并没采用直接修改maven-shade-plugin插件方式,而是在maven-shade-plugin打包后基础上,再进行插件定制。...实现思路也不难,就是修改maven-shade-plugin打成jarspring.factories文件内容,将 图片 调整成形如下即可 图片 自定义maven插件spring-factories-merge-plugin

    1.8K70

    Maven入门

    创建jar包 mvn package package命令会编译代码+运行测试+生成jar文件。jar文件名是依据pom里面设置artifactId和version来。...在本地Maven仓库安装依赖 Maven也会在本机上维护依赖。通常是在.m2/repository目录以便下次用到时候尽快访问到。...如果你想把你项目的jar文件安装到本地仓库,你需要使用install命令。 mvn install 这个命令会编译,测试,打包你代码,然后安装到本地仓库,用于其他项目的依赖引用。...声明依赖 上面的项目很简单,没有依赖其他任何库。但通常来说,大部分项目都是需要依赖外部库来处理一系列问题。 举个例子说,我们需要使用Joda这个库来打印当前时间。...artifactId> 2.9.2 上面的xml定义了项目需要用到依赖

    46320

    改变maven打包路径_Maven打包技巧「建议收藏」

    作为一款”打包工具“,Maven自然有义务帮助用户创建各种各样包,规范JAR包和WAR包自然不再话下,略微复杂自定义打包格式也必须支持,本文就介绍一些常用打包案例以及相关实现方式,除了前面提到一些包以外...可执行CLI包 除了前面提到了常规JAR包、WAR包,源码包和Javadoc包,另一种常被用到包是在命令行可直接运行CLI(Command Line)包。...Maven有好几个插件能帮助用户完成上述任务,不过用起来最方便还是maven-shade-plugin,它可以让用户配置Main-Class值,然后在打包时候将值填入/META-INF/MANIFEST.MF...关于项目的依赖,它很聪明地将依赖JAR文件全部解压后,再将得到.class文件连同当前项目的.class文件一起合并到最终CLI包中,这样,在执行CLI JAR文件时候,所有需要类就都在Classpath...,每个具体打包路径用户也能自由控制。

    2.5K20
    领券