java/spring项目打成jar包供第三方引用方案

Posted 次日清晨醒着眼睛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java/spring项目打成jar包供第三方引用方案相关的知识,希望对你有一定的参考价值。

分类

  1. 单独工具类 比如StringUtils
  2. 注入类工具类

实现

单独工具类

  1. 将项目打jar包

项目结构

开始打包:

  1. 在目标项目中pom引用直接使用

注入类工具类

  1. 当我们想要利用SpringBoot封装一套组件并发布给第三方使用时,我们就不得不考虑我们的组件能否被使用者正确引入使用,本文章讲解的是项目打包成 jar 包后 Spring 配置类未扫描、未注册Bean的解决方案。

解决方案:
1. 使用者手动配置 basePackages
2. 使用者通过注解方式启用配置
3. SpringBoot 主动发现

这里只介绍第三种:

此方法最关键的为 resources/META-INF/spring.factories 文件,当项目启动时,Spring会扫描所有jar包下面的 spring.factories 文件,进行相应的自动配置处理,此处我们不进行深入讲解,只看看基本配置

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\\
com.tao.xxxconfig

其中 org.springframework.boot.autoconfigure.EnableAutoConfiguration 代表自动配置的 key,即代表需要自动配置哪些类,\\ 可以理解为一个换行符,则该行下面的每行当做一个参数
hutool工具类也是这样实现的:

  1. 将项目打jar包
  2. 在目标项目中pom引用直接使用

参考博客:

  1. IDEA基础操作 - java项目打包(2)普通工具类带第三方依赖打包(集成的方式)
  2. JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案

IDEA如何打包可运行jar,外部引用jar包版

 

背景:

有时候,我们会用IDEA来开发一些小工具,需要打成可运行的JAR包;或者某些项目不是WEB应用,纯粹是后台应用,发布时,也需要打成可运行的JAR包。并且,如果依赖第三方jar时,又不希望第三方jar也打入最终的可运行jar包,并且还希望,组织下目录结构(如把第三方jar文件,放到最终可运行jar包的并行目录lib下)

 

开发环境

OS: Windows 8.1

JDK: 1.7.0

开发工具: IntelliJ IDEA 13.1.1

 

步骤:

1. 选中Java项目工程名称,在菜单中选择 F12

技术图片

 

2. 在弹出的窗口中左侧选中"Artifacts",点击"+"选择jar,然后选择"from modules with dependencies"。

技术图片

3. 在配置窗口中配置"Main Class"。

 

4. 选择“Main Class”后,选择“copy to the output and link via manifest”,配置“Directory for META-INF/MAINFEST.MF”,此项配置的缺省值是:D:workshopDbUtilsrcmainjava,需要改成:D:workshopDbUtilsrcmain esources(需要新建文件夹),如果不这样修改,打成的jar包里没有包含META-INF/MAINFEST.MF文件,这个应该是个IDEA的BUG(参考:http://stackoverflow.com/questions/15724091/how-to-run-a-jar-file-created-using-intellij-12),配置完成后如下图所示,点击OK进入下一步。(如果选择“extract to the target jar”,即把第三方jar文件,打入最终的可运行jar包时,可以不修改“Directory for META-INF/MAINFEST.MF”的配置,用缺省值即可

技术图片

 

5. 右键“<output root>”,选择“Create Directory”,输入目录名:libs

技术图片

 

6. 用鼠标按住第三方jar,拖入<output root>下的libs目录下

技术图片

7. 用鼠标选中我们将要打出的jar包文件,点击下方“Class Path:”后面的按钮,在“Edit Classpath”窗口中,将每个第三方jar文件前加上相对路径:libs/,形成如:libs/xxx.jar的形式(注意是 / ,而不是 ),这个目录“libs”,就是前面输入的那个“libs”,这里如果第三方jar很多的话,可以在“Edit Classpath”窗口中,用鼠标选中所有第三方jar,然后Ctrl+X,把内容cut & copy到UltraEdit里,用列格式一下子全部修改好,再paste到“Edit Classpath”窗口中。完成后如下所示:

技术图片

 

8. 完成后,点击OK,Apply等按钮,回到IDEA的主菜单,选择“Build - Build Artifacts”下的“Build”或者“Rebuild”即可生成最终的可运行的jar,并把第三方jar放到和此jar并行的lib目录下,用winrar打开目标jar,可以看到META-INF/MAINFEST.MF文件被正确包含,内容也正确。

技术图片

 

技术图片

 

9. 在jar包的输出目录下,执行命令:java -jar xxx.jar,即可运行jar文件。

以上是关于java/spring项目打成jar包供第三方引用方案的主要内容,如果未能解决你的问题,请参考以下文章

将android项目打成第三方jar包

使用fatjar来实现将包括第三方jar包的项目到处成一个jar包供其它程序使用

Java工程打成jar包(此工程引用的jar包也打进去),并指定main方法执行该怎么做?

idea 工程打包(war) 和 将集成第三方jar的工程 打成jar包 引用

IDEA如何打包可运行jar,外部引用jar包版

java项目管理工具Maven如何把一个项目中的部分代码打成jar包?