首页
学习
活动
专区
圈层
工具
发布

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.8K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

    更改某些依赖最低版本要求 核心依赖升级 三方库依赖升级 Spring Data Neumann升级带来的变化 关于Validation 移除一些maven插件 支持Java14 Docker支持 Fat...一般是修复bug、新增无伤大雅的一些特性等,一般想升就升 这次Spring Boot升级到2.3.0版本,属于次版本号的升级,因此会带有些新特性,还是值得一看的。 ?...Cloud Native的努力 JUnit 5:从此版本开始,spring-boot-starter-test默认使用JUnit 5作为单元测试框架 支持Java13 性能提升:表现在对所有的自动配置类改为了...官方说明:完成迁移后,请确保从项目的依赖项中删除properties-migrator这个模块。...---- Fat Jar支持优化 用Maven和Gradle构建的Fat jar现在包括一个索引文件。当jar被分解时,这个索引文件用于确保类路径的顺序与直接执行jar时相同。

    1.7K20

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

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

    2.2K10

    深入解析Spring Boot的可执行JAR:构建、测试与部署的秘密

    环境隔离:内置特定版本的依赖,避免与系统环境冲突 快速启动:内置服务器,无需额外安装Tomcat等中间件 一致性:统一使用java -jar启动方式,降低运维复杂度 fat jar的核心优势 便携性:...插件实现fat jar的打包。...2025年的最新版本中,插件默认会执行以下关键步骤: 收集所有依赖项(包括传递依赖) 将应用类和资源文件重新组织到特定目录结构 生成特殊的MANIFEST.MF文件 创建可执行的JAR文件格式 打包过程的深层解剖...这种设计既保证了依赖完整性,又避免了传统fat jar可能遇到的类冲突问题。...在2025年的生产环境中,一个典型的Spring Boot应用可能包含200+个依赖项,LaunchedURLClassLoader的嵌套加载机制使得应用仍然能保持单JAR部署的简洁性。

    30110

    Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

    一般是修复bug、新增无伤大雅的一些特性等,一般想升就升 这次Spring Boot升级到2.3.0版本,属于次版本号的升级,因此会带有些新特性,还是值得一看的。...Cloud Native的努力 JUnit 5:从此版本开始,spring-boot-starter-test默认使用JUnit 5作为单元测试框架 支持Java13 性能提升:表现在对所有的自动配置类改为了...有了这个好帮手,妈妈就不用再担心辣么多的配置项需要自己一个个去核对喽,按照指示一个个的修改即可。 官方说明:完成迁移后,请确保从项目的依赖项中删除properties-migrator这个模块。...,所以如果你的工程依赖于这两个插件,那么你得显示的导入(指定版本号)。...--- Fat Jar支持优化 用Maven和Gradle构建的Fat jar现在包括一个索引文件。当jar被分解时,这个索引文件用于确保类路径的顺序与直接执行jar时相同。

    1.8K62

    Fat JAR

    Fat JAR(也称为uber-JAR)是一个包含了其所有依赖项的可执行Java归档文件(JAR),这意味着它不仅仅包含了你自己编写的类和资源文件,还包括了所有你的应用程序运行时所需的第三方库。...这样做的好处是简化了部署过程,因为你只需要部署一个文件即可。 要创建一个Fat JAR,你可以使用构建工具如Maven或Gradle,它们都提供了打包所有依赖项到一个JAR中的插件。...└── resources └── pom.xml 编辑 pom.xml 文件在 pom.xml 文件中,你需要添加 maven-assembly-plugin 插件配置,它会指导Maven如何打包你的应用程序和它的依赖项到一个...运行你的Fat JAR你可以使用以下命令运行生成的Fat JAR: java -jar target/my-fatjar-app-1.0-SNAPSHOT-jar-with-dependencies.jar...以上就是一个简单的Fat JAR入门案例。如果你使用的是Gradle,步骤将有所不同,但基本概念是相同的:你需要配置你的构建脚本以包含所有依赖,并创建一个可执行的JAR文件。

    77710

    Spring boot2 项目相关

    可以看到properties节点下面定义了很多Maven自定义属性,这个属性就是控制spring-boot引入的工具包的版本,如下:  这其实就是maven父子项目依赖管理的方式,参考Maven 父子项目...4、子项目修改Spring boot项目引用的默认组件依赖版本....因为通过pom引入spring boot2,spring boot2会引入框架默认依赖的所有组件,方便开发,也是约定大于配置的一种体现,但是有些特殊业务需求,某个模块需要升级某一个组件的版本,这里拿junit...组件举例,spring boot2默认引用  如果项目中需要junit,其pom.xml如下:  那么项目默认会使用spring boot2中的junit版本 参考父子项目,如果此时需要在项目中使用自定义的...运行访问均成功. 8、创建可执行的jar包并部署 类似netcore的单文件部署 Spring boot提供了fat jar的概念,打包了tomcat和相关运行时方便快速发布,修改pom.xml新增如下节点

    31420

    自动化构建工具Maven

    如今我们构建一个项目需要用到很多第三方的类库,一个项目jar包的数量之多往往让我们无法想象,并且jar包之间的关系错综复杂,一个jar包往往又会引用其他jar包,缺少任何一个jar包都会导致项目编译失败...以往开发项目时,人们往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,因为jar包之间的关系很复杂,当某些jar包无用后,又很难将其从中去除。...7.继承 假设一个情景: Hello项目依赖的JUnit版本:4.0 Hello2项目依赖的JUnit版本:4.0 Hello3项目依赖的JUnit版本:4.9 由于test范围的依赖不能传递,...那么我们就可以将JUnit依赖版本统一提取到父工程,在子工程中声明依赖时不指定版本即可,那么子工程将会以父工程中统一设定的版本为准,同时也便于修改。注意如果一个工程作为父工程,打包方式应为pom。...这是因为项目中缺少Apache Tomcat的运行环境,那怎么解决呢?

    97330

    如何利用Maven将代码打包成第三方公共jar包?

    一、摘要 在项目开发过程中,我们经常需要将一些公共方法提取出来,然后单独封装成一个第三方公共jar包,采用普通的方式打包后的jar,依赖的工程执行编译时,却提示找不到对应的依赖包,那么如何将工程打包为可执行...2.1.3、验证jar是否可执行 在带有jar-with-dependencies的jar文件下,打开终端,输入如下命令 #验证jar是否可执行,如果没有报错,说明没有问题 java -jar xxx-jar-with-dependencies.jar...包,一个为:original-XXX.jar,另一个为:XXX.jar,其中original...jar里只包含了工程自己的class文件,而另外的一个jar包则包含了工程本身以及所有依赖的jar包的class...2.3.2、FatJar使用 在使用Eclipse进行导出时,点击项目右键,在弹出的右键菜单中选择Build Fat Jar, 打开配置Fat Jar弹出框;或者,项目右键,点击Export,然后在打开的...Export选择框中选择Other下面的Fat Jar Exporter, 选择需要导出的项目,点击下一步打开配置Fat Jar弹出框。

    2.1K20

    Gradle 的Dependencies

    依赖的方式 Gradle 中的依赖分别为 直接依赖,项目依赖,本地 jar 依赖 dependencies { //①.依赖当前项目下的某个模块[子工程] implementation...') //②.配置某文件夹作为依赖项 implementation fileTree(dir: 'libs', include: ['*.jar']) //③.直接依赖...本地 jar 依赖:本地 jar 文件依赖,一般包含以下两种方式 //直接依赖某文件 implementation files('libs/foo.jar', 'libs/bar.jar') //配置某文件夹作为依赖项...依赖的下载 当执行 build 命令时,gradle 就会去配置的依赖仓库中下载对应的 Jar,并应用到项目中。 3....总之,除非涉及到多模块依赖,为了避免重复依赖,咱们会使用 api,其它情况我们 优先选择 implementation,拥有大量 的 api 依赖项会显著增加构建时间。 5.

    1.7K20

    【详解】使用maven插件maven-shade-plugin对可执行java工程及其全部依赖jar进行打包

    这样做可以简化部署过程,避免因缺少依赖库而导致的问题。Maven是一个强大的项目管理和构建工具,它提供了多种插件来帮助开发者完成各种任务。​​...要运行生成的JAR文件,可以使用以下命令:java -jar target/your-project-name.jar​​maven-shade-plugin​​ 是一个非常有用的 Maven 插件,它可以将项目及其所有依赖项打包成一个单独的...通过以上步骤,你就可以成功地使用 ​​maven-shade-plugin​​ 将你的 Java 应用程序及其所有依赖项打包成一个可执行的 JAR 文件。​​...maven-shade-plugin​​ 是 Maven 的一个插件,用于创建包含所有依赖项的“uber-jar”(或称为“fat jar”)。...运行:java -jar target/my-app-1.0-SNAPSHOT.jar通过以上配置,你可以轻松地创建一个包含所有依赖项的可执行 JAR 文件,方便部署和运行。

    24910

    Android多模块构建合并aar解决方案

    前言 前段时间,我在实现gradle多模块构建遇到一个问题,以前我们基本上是以jar包形式让开发者集成到工程中使用,但自从Android Studio中有了多module的概念,而我们的SDK也是分了多个模块进行构建的...,但我们这里有个问题就是模块之间是相互关联的,不能针对每个模块单独打包,而每个module都会生成对应的aar,但并不会把依赖的module代码打进去,别问我为什么知道,你将aar后缀改为zip,然后反编译...android-fat-aar 当时我遇到这个问题,就去github搜了一下,已经有人将合并aar的脚本开源出来了,开源地址如下: https://github.com/adwiv/android-fat-aar...步骤1: 将gradle文件’fat-aar.gradle’到你的项目目录,然后apply: apply from: 'fat-aar.gradle' 步骤2:定义嵌入的依赖关系 你需要修改你以前依赖项...使用例子如下: apply from: 'fat-aar.gradle' dependencies { compile fileTree(dir: 'libs', include: ['*.jar

    5K30
    领券