优化部署打包分离lib

Blade 未结 0 39
笨笨巫师
笨笨巫师 剑圣 2022-01-12 21:34

一、该问题的重现步骤是什么?

1. 使用blade-boot工程fastjar方式打包,每次生成的jar都要快200M,想通过分离Lib的方式优化部署。

2. 改造pom.xml

<build>
<plugins>
   <plugin>
       <artifactId>maven-compiler-plugin</artifactId>
       <version>${maven.plugin.version}</version>
       <configuration>
           <source>${java.version}</source>
           <target>${java.version}</target>
           <encoding>UTF-8</encoding>
           <compilerArgs>
               <arg>-parameters</arg>
           </compilerArgs>
       </configuration>
   </plugin>

   <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>3.1.1</version>
       <configuration>
           <archive>
               <!-- 生成的jar中不要包含pom.xml和pom.properties这两个文件 -->
               <addMavenDescriptor>false</addMavenDescriptor>
               <manifest>
                   <addClasspath>true</addClasspath>
                   <classpathPrefix>lib/</classpathPrefix>
                   <!--这里需要修改为你的项目的主启动类-->
                   <mainClass>org.springblade.Application</mainClass>
               </manifest>
           </archive>
       </configuration>
   </plugin>

   <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-dependency-plugin</artifactId>
       <executions>
           <execution>
               <id>copy-lib</id>
               <phase>package</phase>
               <goals>
                   <goal>copy-dependencies</goal>
               </goals>
               <configuration>
                   <outputDirectory>target/lib</outputDirectory>
                   <excludeTransitive>false</excludeTransitive>
                   <stripVersion>false</stripVersion>
                   <includeScope>runtime</includeScope>
               </configuration>
           </execution>
       </executions>
   </plugin>

   <plugin>
       <artifactId>maven-assembly-plugin</artifactId>
       <configuration>
           <!-- 打包后的包名是否包含assembly的id名 -->
           <appendAssemblyId>false</appendAssemblyId>
           <!-- 指定最后tar或者zip包的名字 -->
           <finalName>djys-business</finalName>
           <!-- tar或者zip包的输出目录 -->
           <outputDirectory>target/</outputDirectory>
           <descriptors>
               <!-- 引用的assembly配置文件-->
               <descriptor>doc/script/fatjar/release.xml</descriptor>
           </descriptors>
       </configuration>
       <executions>
           <!-- phase加入package后,则在执行maven package时就可以调用maven-assembly-plugin插件定义的打包方式 -->
           <execution>
               <!--名字任意 -->
               <id>make-assembly</id>
               <!-- 绑定到package生命周期阶段上 -->
               <phase>package</phase>
               <goals>
                   <!-- 只运行一次 -->
                   <goal>single</goal>
               </goals>
           </execution>
       </executions>
   </plugin>
</plugins>
</build>

3.通过上述pom.xml改造,成功分离了Lib,生成如下图结构

image.png

4. 运行servic.sh报错:

Exception in thread "main" java.lang.NullPointerException
        at org.springblade.core.launch.BladeApplication.createSpringApplicationBuilder(BladeApplication.java:85)
        at org.springblade.core.launch.BladeApplication.run(BladeApplication.java:49)
        at org.springblade.Application.main(Application.java:34)


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

回答
  • 消灭零回复
提交回复