80.6 在可执行jar运行时提取特定的版本

在一个可执行jar中,为了运行,多数内嵌的库不需要拆包(unpacked),然而有一些库可能会遇到问题。例如,JRuby包含它自己的内嵌jar,它假定jruby-complete.jar本身总是能够直接作为文件访问的。

为了处理任何有问题的库,你可以标记那些特定的内嵌jars,让它们在可执行jar第一次运行时自动解压到一个临时文件夹中。例如,为了将JRuby标记为使用Maven插件拆包,你需要添加如下的配置:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <configuration>
  7. <requiresUnpack>
  8. <dependency>
  9. <groupId>org.jruby</groupId>
  10. <artifactId>jruby-complete</artifactId>
  11. </dependency>
  12. </requiresUnpack>
  13. </configuration>
  14. </plugin>
  15. </plugins>
  16. </build>

使用Gradle完全上述操作:

  1. springBoot {
  2. requiresUnpack = ['org.jruby:jruby-complete']
  3. }