一、背景 最近项目在做微服务的拆分,那么我们想让我们的容器启动更加的轻量级,所以我们选择放弃tomcat等容器,而是通过maven生成带有指定依赖的可执行jar包的方式进行处理,本文我将分享如何通过...二、原理以及实现步骤 1.原理 我们可以通过修改maven 打jar包的maven-jar-plugin插件的配置信息来生成我们需要的指定依赖的可执行jar包。...--依赖是否使用带有时间戳的唯一版本号,如:xxx-1.3.0-20121225.012733.jar--> false...我们通过上文的修改便完成了适用maven生成指定依赖的可执行jar包。 我们发现生成的manifest文件中已经设置好了Main-Class以及Class-Path,如下: ?...到此我们就完成了如何使用maven的jar包生成插件来进行生成指定依赖的可执行jar包。
文章目录 拷贝lib的jar,配置可执行main函数 拷贝lib的jar maven-dependency-plugin.../excludeTransitive> 配置可执行...main函数 org.apache.maven.plugins maven-jar-plugin</artifactId
大家好,又见面了,我是你们的朋友全栈君。...maven默认打包生成的jar是不能够直接运行的,因为在jar文件的META-INF/MANIFEST.MF文中没有Main-Class一行,为了生成可执行的jar文件,需要借助maven的插件,maven-shade-plugin...properties> org.apache.maven.plugins... maven-shade-plugin 2.3${project.build.directory}/${project.artifactId}-${project.version}-fat.jar</outputFile
类,然后用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...其中第4行指定了classpath,也就是所依赖的jar包在什么地方,第6行表示main函数的入口类,默认情况下mvn clean package生成的jar包里,清单文件上并没有这2行,需要在pom.xml...,这样mvn package后,清单文件里就会自动添加Main-Class和Class-Path这二项 ok了,部署时把jar包和lib目录,都上传到服务器上 ,然后测试一下,顺利的话 java -jar
大家好,又见面了,我是你们的朋友全栈君。 最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下 1....需求 项目打包,满足以下要求: 整个项目打一个Zip包下面包括应用程序、应用程序依赖的jar包、说明文档 项目打的jar包可以执行不同类里的Main函数 项目源码打的jar包要与依赖的第三方jar包分开...project jar maven-shade-plugin 打可执行包,executable(fat) jar maven-assembly-plugin 支持自定义打包方式 这里使用maven-jar-plugin...Maven使用maven-jar-plugin打可执行jar包 主要配置如下: org.apache.maven.plugins...Maven生成可执行jar包及zip项目压缩包 双击执行mvn:package会生成两个包:可执行jar包和项目压缩包,因为assembly的装配配置的是绑定到这上面来的 双击执行assembly:single
使用maven打包为可执行jar文件运行,打包插件为:maven-shade-plugin。 可执行jar文件 --> org.apache.maven.plugins maven-shade-plugin...正是因为存在这些同名文件,所以maven在打包时就可能会将mybatis-spring.jar中的文件覆盖掉spring-xxx.jar中的对应文件。...显然,在mybatis-spring.jar中spring.schemas定义的命名空间与spring-xxx.jar中spring.schemas定义的命名空间是不一样的,这就导致在程序启动 加载Spring...-- 打包可执行jar文件 --> org.apache.maven.plugins maven-shade-plugin
验证查看 [INFO] Verbose not supported since maven-dependency-plugin 3.0 [INFO] com.yyy.data:yyy-data-qqq:...jar:1.0.0-DEV [INFO] +- org.springframework.boot:spring-boot-starter:jar:2.2.4.RELEASE:compile [INFO]...:jar:2.2.4.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:2.2.4...:jar:1.3.5:compile [INFO] | +- org.springframework:spring-core:jar:5.2.3.RELEASE:compile [INFO] | |...\- org.springframework:spring-jcl:jar:5.2.3.RELEASE:compile [INFO] | \- org.yaml:snakeyaml:jar:1.25
Maven pom.xml 必须包含 [plain] view plain copy jar [html] view plain copy 的jar文件在:D:\programmer\eclipse\feedback-service\target 文件夹中 java -jar 运行jar包 即可 java -jar 运行jar包时使用外部配置文件...=/dev/urandom -jar message-service-1.0-SNAPSHOT.jar > /dev/null 2>&1 & Linux下还有一个特殊的文件/dev/null,它就像一个无底洞...,所有重定向到它的信息都会消失得无影无踪。 ...>/dev/null 2>&1 注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null
默认打包生成的jar是不能直接运行的,因为带有main方法的信息不会添加到mainifest中,需要借助maven-shade-plugin ... org.apache.maven.plugins maven-shade-plugin maven.plugins.shade.resource.ManifestResourceTransformer...execution> 如果你有一个main函数,可以通过调用java -jar...yourjar.jar运行时,只需要在插件配置中加入一句话:例如: maven.plugins.shade.resource.ManifestResourceTransformer
插件 maven-dependency-plugin:2.8 解包当前模块依赖的maven模块中的文件 使用goal:unpack-dependencies 在配置参数includeArtifactIds...中指定要解包的模块制件ID org.apache.maven.plugins...maven-dependency-plugin ...configuration> 解包指定maven...模块中的文件 使用goal:unpack 可以指定非当前模块所以来的maven模块 org.apache.maven.plugins
又是项目总结的时候了,说一下maven使用中遇到的问题以及解决方案。 在新项目的开发中,使用maven进行持续构建,在搭建框架的过程中经常遇到jar冲突的问题,现在来介绍下如何去除jar传递依赖。...1、项目间传递 如果我的当前项目是project1,project1要依赖project2,project1依赖project2的配置中加上true,表示依赖可选...version> compile true 这种方式排除不了我项目中对第三方jar...包所依赖的其他依赖,因为我不可能去修改第三方jar包的pom文件,所以只适合在项目组内部使用。...2、依赖过滤 将依赖于project2中的某一个jar过滤掉,如下: com.project project2
如上,上面可以将依赖的jar包copy到 target下面的 lib/ 目录下。然后生成jar包。...如果你想把所有的依赖jar都打包到你的jar里面去,成为单个jar。...至此, 1).你通过maven来打一个可执行的jar包,要么选择不要把依赖jar包打到一起,而选择放在jar包外面的 lib/目录下。这样是可以的。...2).你也可以把依赖jar打到jar包内部,成为单个jar,是可以做到的,但通过java -jar方式执行会找不到类,需要自定义classLoader....这两种试了一下,打出来的可执行jar包,跟上面的unpack方式是一样的,全是把classes解开来。这里分别附上POM,用哪种都可以。
org.springframework.boot spring-boot-maven-plugin
前言 IDEA中安装Maven Helper插件。 安装重启后,点击pom.xml可以看到两个选项卡,可以查看依赖的关系。...Dependencies as Tree(树形式查看所有依赖,冲突的依赖会红字显示) Maven打包流程 构建项目的几个环节 清理(clean):删除以前的编译结果,为重新编译做好准备。...Java 工程对应 jar 包,Web工程对应 war 包。 安装(install):在 Maven 环境下特指将打包的结果(jar包或war包)安装到本地仓库中。...flink-table-blink_2.11-1.12.0.jar 将calcite等依赖打入,因此用户的jar包中需要排除calcite相关依赖。...用户项目中可使用maven helper搜索calcite相关依赖,将其provided,并将这些依赖放入flink lib目录下,重启flink服务即可 常见的包含calcite的依赖有: hive-exec
maven 中使用jar包的多个版本容易造成依赖问题,解决问题的方式可以将使用jar包的版本排除掉,比如dubbo使用netty 4.0.33版本可以将dubbo排除掉netty依赖,这样其他jar... 1、通过idea workspace.xml可以看到jar...包是被哪个jar包引入的。...2、通过去掉父依赖后,看idea左下工程依赖无相应jar后即解决了传递依赖问题。
把要用的jar放在固定位置: 2.打开CMD,进入到libs文件夹: 3.运行如下命令: mvn install:install-file -Dfile=OpenInstall_v1.1.0.jar...-DgroupId=OpenInstall -DartifactId=OpenInstall -Dversion=1.1.0 -Dpackaging=jar 这样就将jar发布到本地Maven仓库中了...命令说明: mvn install:install-file -Dfile=这儿是jar包的完整名字 -DgroupId=这儿随便取名,比如为A ,但是maven依赖在引用时要用这个名字...-DartifactId=这儿随便取名,比如为B ,但是maven依赖在引用时要用这个名字。 -Dversion=这儿是版本号随便写,比如为C,但是maven依赖在引用时要用这个版本号。...在工程的pom.xml中加上maven依赖: A B</artifactId
大家好,又见面了,我是你们的朋友全栈君。 maven打包生成的普通jar包,只包含该工程下源码编译结果,不包含依赖内容。...同时,maven提供以下方式生成包含所有依赖的jar文件,依赖以class的方式存在; 将此plugin添加到pom文件中 ...这个JAR包就包含了项目所依赖的所有JAR的CLASS. 3.如果不希望依赖的JAR包变成CLASS的话,可以修改ASSEMBLY插件....找到assembly在本地的地址,一般是 c:/users/${your_login_name}/.m2/\org\apache\maven\plugins\maven-assembly-plugin...\2.4 用WINZIP或解压工具打开此目录下的maven-assembly-plugin-2.4.jar, 找到assemblies\jar-with-dependencies.xml 把里面的UNPACK
前言 什么是依赖冲突? 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成了包版本冲突。...) All Dependencies as Tree(树形式查看所有依赖,冲突的依赖会红字显示) 注意 排查冲突的时候推荐使用第二种方式找到冲突项,搜索冲突项用第三种方式排除冲突。...从图中可以看出有哪些jar存在冲突,存在冲突的情况下最终采用了哪个依赖的版本。 标红的就是冲突版本,白色的是当前的解析版本。...shade 也有maven插件,通过更改jar包的字节码来避免jai包冲突,jar包冲突的本质是类的全限定名(包名+类名)冲突了,通过全限定名不能定位到你想用的那个类,maven-shade插件可以更改...protobuf-java,系统运行时都会分别用到A.jar,B.jar中protobuf部分的功能,而且A.jar,B.jar依赖的protobuf版本无法通过升高降低版本调整到一致。
使用maven构建工具可以将工程打包生成普通的jar包、可运行的jar包,也可以将所有依赖一起打包生成jar; 一、普通的jar包 普通的jar包只包含工程源码编译出的class文件以及资源文件,而不包含任何依赖...;同时还包括pom文件,说明该包的依赖信息; 在工程pom文件下这样写,可生成普通的jar包: jar 或者,不写,因为packaging默认打包类型为jar...二、包含所有依赖的jar包 普通的jar包,只在pom文件中包含依赖信息,而不包含真正的依赖,但同时maven也可以打包生成包含所有依赖的jar文件,可参考本博客文章 Maven打包生成包含所有依赖的...jar包 三、可运行jar包 可运行的jar包,除包含工程源码编译结果外,还包括所有依赖,可利用java -jar 命令直接运行。...(所有的依赖jar包直接变成了class) 使用maven生成可运行jar包,可参考本博客文章 maven打包生成可执行jar文件。
项目中有的非spring boot的服务需要发布,也可以使用maven-assembly-plugin插件来制作可执行jar包 生成可执行jar包 pom.xml配置文件 ... 执行生成可执行jar包命令 mvn compile assembly...:single 可以生成一个可执行的jar包 java -jar target/helloworld-1.0-SNAPSHOT-jar-with-dependencies.jar 使用mvn package...命令生成可执行jar包 这样的话,我们可以保持平时打包的命令不变 org.apache.maven.plugins 可执行jar包--> make-assembly
领取专属 10元无门槛券
手把手带您无忧上云