首页
学习
活动
专区
工具
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

2.1K90

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 配置如下 依赖 A.jar,然后利用 maven-shade-plugin 的 Relocating Classes 功能对 A.jar 中存在重名的 class 进行重定向...更实际的案例,敬请期待我下篇博客 总结 maven-shade-plugin 的输入目标是 项目原始jar 以及 项目依赖的所有jar,而输出目标是 uber-jar,所以 maven-shade-plugin

17610
  • 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.5K10

    版本不兼容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.6K30

    【Maven 官方教程】Building Java Projects

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

    33610

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

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

    1.6K30

    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

    96910

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

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

    1.5K20

    浅谈 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打成jar后的spring.factories文件内容,将 图片 调整成形如下即可 图片 自定义maven插件spring-factories-merge-plugin

    1.8K70

    改变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.6K20

    Maven入门

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

    46720
    领券