Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?
Spring Boot是由Pivotal团队在2013年开始研发,2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring 4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。
Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java -jar xxx.jar 命令来运行,但是,这种 jar 不可以被其他项目依赖,即使依赖了也无法使用其中的类。
Spring Boot 的 jar 无法被其他项目依赖,主要还是它和普通 jar 的结构不同。
普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 BOOT-INFclasses 目录下才是我们的代码,因此无法被直接引用。
如果A模块包依赖了B模块,在B模块的pom文件,加入如下配置即可:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
补充:java -jar 命令解读
java -jar myClass.jar
执行该命令时,会用到 META-INFMANIFEST.MF 这个文件。在该文件中,有一个叫 Main -Class的参数,它说明了java -jar命令执行的类。
java -jar myClass.jar param1 param2
运行jar包,会自动到 jar 包中查询META-INFMANIFEST.MF中定义的启动类并运行。param1,param2为main方法的参数,可不填。
谢谢站长,这真是一个好网站!
涨姿势了