标签分类
技术文章
当前位置:主页 > 计算机编程 > java > Spring boot项目打包成jar运行的二种方法

Spring boot项目打包成ja的简单方法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:204

Spring boot项目打包成jar运行的二种方法

这篇文章主要知识点是关于springboot打包成jar,springboot打包jar,springbootjar包,Spring boot项目打包成jar运行的二种方法,详解spring boot引入外部jar包的坑 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Spring5高级编程
Spring5高级编程完整第5版
  • 类型:Spring5大小:356.7 MB格式:PDF出版:清华大学出版社作者:尤莉安娜
立即下载

更多相关的学习资源可以参阅 程序设计电子书Java电子书、等栏目。

前言

最近公司有个项目需要移植到SpringBoot框架上,项目里面又有许多第三方jar包,在linux服务器上最方便的就是用jar的方式来运行SpringBoot项目了,因此我研究了2种打jar包的方式,记录如下,供大家参考:

1、通过maven插件,将所有依赖包都打包成一个jar包,然后通过java -jar xxx.jar方式运行

由于项目中有些jar包是第三方的,maven官方仓库没有,需要使用mvn install命令打包到本地,然后将其写入到pom.xml的依赖中,maven仓库有的jar包则从maven官网找到对应版本的depdency写入pom文件里面,这样maven打包就可以包含第三方jar包了,否则maven只会打包pom文件里面的,不会包括第三方jar包,程序运行将报错。

例如:将alipay-sdk-abc.jar 打包到本地仓库

mvn命令:

‪mvn install:install-file -Dfile=‪G:\thirdpartyjar\alipay-sdk-abc.jar -DgroupId=com.thirdparty -DartifactId=alipay-sdk-abc -Dversion=3.1.0.8 -Dpackaging=jar

pom.xml配置:

<dependency>

 <groupId>com.thirdparty</groupId>

 <artifactId>alipay-sdk-abc</artifactId>

 <version>3.1.0.8</version>

</dependency>

然后在cmd或者IDEA的terminal里面使用mvn clean package -X命令清理、打包成jar文件,-X命令可以看到具体的打包输出,便于分析。

这里用到了2个plugin,一个是普通的maven插件用于将各种jar包打包到一起,可是这样的jar包是无法运行的,因为jar包里面没有启动类信息,还需要SpringBoot的maven插件进行repackage,这样生成的jar包就包含启动信息,才可以运行,关键配置如下:

<plugin>

 <groupId>org.apache.maven.plugins</groupId>

 <artifactId>maven-compiler-plugin</artifactId>

 <version>3.5.1</version>

 <configuration>

 <source>1.8</source>

 <target>1.8</target>

 <compilerArgs>

 <!-- 过期的方法的警告-->
 
 <arg>-Xlint:deprecation</arg>

 </compilerArgs>

 <compilerArguments>

 <!-- 是否输出所有的编译信息(包括类的加载等)-->

 <!--<verbose />-->

 <!-- 解决maven命令编译报错,因为rt.jar 和jce.jar在jre的lib下面,不在jdk的lib下面,

导致maven找不到(java7以后会出现这个问题),将这2个jar包拷贝到jdk的lib下面估计也好使-->

  <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>

 </compilerArguments>

</configuration>

</plugin>

<plugin>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-maven-plugin</artifactId>

 <executions>

  <execution>

   <goals>

    <goal>repackage</goal>

   </goals>

  </execution>

 </executions>

</plugin>

2、将主程序打成jar包,然后和其他依赖jar包放在一起(包括maven下载的和第三方jar包),这样也可以通过java -jar xxx.jar方式运行

jar方式运行的前提是主程序jar包中的META-INF文件夹下的MANIFEST.MF文件必须有正确的Class-Path、Main-Class。

Class-Path指定了主程序依赖的jar包,若配置错误,运行jar时将报ClassNotFoundException;

Main-Class指定了程序的运行入口,这里配置成SpringBoot的主函数。

MANIFEST.MF文件若配置不当,运行jar时将报xxxxxx.jar中没有主清单属性。

MANIFEST.MF示例如下:

Manifest-Version: 1.0

Class-Path: spring-expression-4.3.20.RELEASE.jar jboss-logging-3.3.2.F

inal.jar jcl-over-slf4j-1.7.25.jar SADK-CMBC-3.1.0.8.jar slf4j-api-1.

7.25.jar spring-boot-starter-web-1.5.17.RELEASE.jar spring-webmvc-4.3

.20.RELEASE.jar spring-boot-starter-tomcat-1.5.17.RELEASE.jar spring-

aop-4.3.20.RELEASE.jar spring-boot-1.5.17.RELEASE.jar spring-boot-sta

rter-logging-1.5.17.RELEASE.jar spring-core-4.3.20.RELEASE.jar snakey

aml-1.17.jar tomcat-embed-websocket-8.5.34.jar spring-beans-4.3.20.RE

LEASE.jar spring-boot-autoconfigure-1.5.17.RELEASE.jar log4j-over-slf

4j-1.7.25.jar hibernate-validator-5.3.6.Final.jar classmate-1.3.4.jar

spring-web-4.3.20.RELEASE.jar jul-to-slf4j-1.7.25.jar logback-classi

c-1.1.11.jar spring-context-4.3.20.RELEASE.jar spring-boot-starter-1.

5.17.RELEASE.jar jackson-databind-2.8.11.2.jar jackson-annotations-2.

8.0.jar tomcat-annotations-api-8.5.34.jar tomcat-embed-el-8.5.34.jar

jackson-core-2.8.11.jar logback-core-1.1.11.jar tomcat-embed-core-8.5

.34.jar validation-api-1.1.0.Final.jar

Main-Class: com.example.testmaven.TestmavenApplication

IDEA打包jar流程:

按Ctrl+Alt+Shift+S打开项目配置,点击Atrifacts,然后按如下截图进行:

Spring boot项目打包成jar运行的二种方法Spring boot项目打包成jar运行的二种方法

Spring boot项目打包成jar运行的二种方法

点击testmaven.jar,可以看到Main Class和Class Path都有内容了:

Spring boot项目打包成jar运行的二种方法

Spring boot项目打包成jar运行的二种方法

src下也生成了META-INFO文件夹和MAINFEST.MF文件:

Spring boot项目打包成jar运行的二种方法

生成artifacts:

Spring boot项目打包成jar运行的二种方法

点击Build或者Rebuild后将在对应文件下生成artifacts文件,里面有依赖的jar包和主程序包;

Spring boot项目打包成jar运行的二种方法

Spring boot项目打包成jar运行的二种方法

文件夹地址栏输入cmd来打开cmd:

Spring boot项目打包成jar运行的二种方法

然后输入java -jar testmaven.jar,就能正确运行Spring Boot项目了:

Spring boot项目打包成jar运行的二种方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。

详解spring boot引入外部jar包的坑

前言:由于项目需求,短信验证码的接口需要换成阿里大于的,但是尴尬的发现阿里大于的jar包没有maven版本的,于是便开始了一上午的操蛋引包之路。按照套路来说,自然应该是百度一波,但是百度了好久,找了好多方案之后发现,没一个有用的,而且文章的抄袭、拷贝十分严重,试了N种方案,都是错的,都没有将外部jar包打包到BOOK-INF文件夹下。最终,在第N次尝试之后,终于在打的jar包里将外部的jar包导入进来。特此记录下,防止再犯!!!

首先在新建libs文件夹(根目录或者resource目录下都可以),将需要引入的jar放进去

详解spring boot引入外部jar包的坑

然后再pom中加入如下配置,告诉maven导入本地jar

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>3.2.2</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/aliyun-java-sdk-core-3.3.1.jar</systemPath>
  </dependency>
  <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/aliyun-java-sdk-dysmsapi-1.0.0.jar</systemPath>
  </dependency>

其中除了systemPath配置告诉maven引入的本地jar包的位置之外,其他的配置都可以随便写

划重点!!!敲黑板!!!下面的一步配置也是最重要的一步,网上很多的教程缺了这样一步之后就会导致虽然本地可以运行,但是只要使用maven打包就不行,因为maven没有将本地的jar也打到生成的包中

在pom中给spring boot的打包插件设置一下includeSystemScope参数即可

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <includeSystemScope>true</includeSystemScope>
      </configuration>
    </plugin>
  </plugins>
</build>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到解决axios.interceptors.respon、 儿童python编程入门书籍推、 vue项目中使用md5加密以及、 等java文章进一步学习,感谢大家的阅读和支持。

上一篇:java使用SFTP上传文件到资源服务器方法详解

下一篇:jdk源码阅读Collection实例分析

展开 +

收起 -

学习笔记
网友NO.333981

spring boot加载第三方jar包的配置文件的方法

前言 今天收到一封邮件,大概内容如下:spring boot鼓励去配置化,那么怎么将第三方jar包中的xml去配置化了? 其实,这个问题,在前面的文章中也有提到,//www.jb51.net/article/125700.htm 下面,我们就以Quartz定时任务为例,单独对这个问题来进行说明,如何实现去配置化。 如果不使用spring boot,我们配置一个简单的定时任务时,需要引入以下配置文件: !-- 配置需要定时执行的任务类以及方法 -- bean id="doJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" !-- 指定任务类 -- property name="targetObject" ref="schedulerTask" / !-- 指定任务执行的方法 -- property name="targetMethod" value="doTask" / property name="concurrent" value="false"/property /bean !-- 配置触发器 -- bean id="jobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" property name="jobDetail" ref="doJob" / !-- 每5秒运行一次 -- property name="cronExpression" value="0/5 * * * * ?" / /bean !-- 触发定时任务 -- bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" property name="triggers" list ref bean="jobTrigger" /!-- 此处可以配置多个触发器 -- /list /property property name="applicationContextSchedulerContextKey" value="applicationContextKey" / property name="waitForJobsToCompleteOnShutdown" value="true"/property /bean 接下来的任务,就是如何将上……

网友NO.791067

Spring Boot 直接用jar运行项目的方法

概述 在 Spring Boot 开篇-创建和运行 一文中,介绍了如何创建一个Sprint Boot项目并且运行起来。但是运行的方式是在IDEA中直接Run起来的。还有另一中方式可以可以把Spring Boot程序运行起来,就是直接在命令行中执行jar包。 打成jar包 以往的WEB程序需要打成WAR包,部署到Tomcat上,而Spring Boot支持打包成JAR的形式,就算是JAR里面包含图片、页面等,也是支持的。另外使用JAR包的方式也方便部署到Docker上。 要想把Spring Boot打包成JAR的形式,需要在POM.xml文件中加入如下代码: groupIdcom.springboot/groupIdartifactIdstudy/artifactIdversion0.0.1-SNAPSHOT/versionpackagingjar/packaging 把packaging改成jar的方式。另外还需要一个Maven插件。 build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build 可以IDEA中如下操作便可以打成一个JAR包。 点击IDEA右边的Maven Projects,在弹出的窗口中点击红色部分,执行Maven命令。 点击后会出现执行Maven命令的窗口,输入 clean package 即可执行打包的操作。 执行成功后可以在工程目录中的target目录下找到对应的JAR包。 study-0.0.1-SNAPSHOT.jar 执行JAR包 启动一个CMD或者其他命令行工具,执行如下命令,便大功告成。 java -jar study-0.0.1-SNAPSHOT.jar 下面就可以直接在浏览器中输入 http://localhost:8080/hello 浏览器便会输出 hell……

网友NO.249496

spring boot 部署为jar包的方法示例

前言 一直在ide中敲代码,使用命令行 mvn spring-boot:run 或者 gradlew bootRun 来运行spring boot项目。想来放到prod上面也应该很简单。然而今天试了下,各种问题。最大错误是1.4的bug: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 这个错误使我一直以为自己的代码有问题。找了半天没找到,最后想既然命令行可以运行ok,那么一个fat jar失败肯定不对了。于是上github去问,以为石沉大海准备睡觉的。想不到的是spring boot的成员秒回,找到问题是1.4版本中hibernate自动配置的问题,想我根本不需要hibernate,删除就可以了。 github 原问题:https://github.com/spring-projects/spring-boot/issues/6927 部署为可运行的jar spring boot已经尽可能把需要配置的东西自动化了,我还傻傻的像以前springmvc那样补充各种配置,比如加一个数据源druid。然而大可不必,使用默认的就好,等需求不满足的时候,在进行修改就可以了。 同样的,既然内置的tomat可以很好的运行,为啥非要自己手动部署war包? 在gradle build或者maven package之后,会得到一个jar,这个jar是spring boot修改过的jar,可以直接……

网友NO.950067

maven+springboot打成jar包的方法

maven的命令: 1.mvn clean package -DskipTests:在项目目录下运行此命令,在target目录下生成jar包或war包。 2.mvn clean:清理项目生产的临时文件,一般是模块下的target目录 3.mvn compile -DskipTests:模块安装命令 将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用 -Dmaven.test.skip=true 跳过测试(同时会跳过test compile). 4.mvn test:测试命令,或执行src/test/java/下junit的测试用例。 5.mvn deploy:发布命令 将打包的文件发布到远程参考,提供其他人员进行下载依赖 ,一般是发布到公司的私服。 如果是maven加springboot项目,项目中的pom.xml文件中还要加入插件 plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId/plugin ps:下面在给大家介绍如何使用maven打包spring boot项目,打成jar包 如果你使用的是maven来管理项目,执行以下命令即可 cd 项目跟目录(和pom.xml同级)mvn clean package## 或者执行下面的命令## 排除测试代码后进行打包mvn clean package -Dmaven.test.skip=true 也可以在eclipse中直接打包,步骤如下: 右键选择项目 Run As--Maven build... 这里输入maven命令: clean package -Dmaven.test.skip=true 看见BUILD SUCCESS表示成功成功,打包完成后jar包会生成到target目录下,命名一般是 项目名+版本号.jar 启动jar包命令 java -jar target/xxx.jar 这种方式,只要控制台关闭,服务……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明