【java】springboot 打包分离lib
原pom.xml
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
</configuration>
</plugin>
</plugins>
</build>
改造后pom.xml
去掉了spring-boot-maven-plugin
,改为maven-jar-plugin
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 打JAR包,不包含依赖文件;显式剔除配置文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<archive>
<!-- 生成的jar中,包含pom.xml和pom.properties这两个文件 -->
<addMavenDescriptor>true</addMavenDescriptor>
<!-- 生成MANIFEST.MF的设置 -->
<manifest>
<!--这个属性特别关键,如果没有这个属性,有时候我们引用的包maven库 下面可能会有多个包,并且只有一个是正确的, 其余的可能是带时间戳的,此时会在classpath下面把那个带时间戳的给添加上去,然后我们 在依赖打包的时候, 打的是正确的,所以两头会对不上,报错。 -->
<useUniqueVersions>false</useUniqueVersions>
<!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 各个依赖加入前缀 -->
<!--这个jar所依赖的jar包添加classPath的时候的前缀,需要 下面maven-dependency-plugin插件补充-->
<!--一定要找对目录,否则jar找不到依赖lib,前边加../是因为jar在bin下,而bin与lib是平级目录-->
<classpathPrefix>./lib</classpathPrefix>
<!--指定jar启动入口类 -->
<mainClass>com.ruoyi.RuoYiApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!--拷贝依赖 copy-dependencies-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
原dockerfile
# 环境版本
FROM anapsix/alpine-java:8_server-jre_unlimited
ENV PARAMS ""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 1234
RUN mkdir /home/db/
ADD target/weekely.jar /home/weekely.jar
ENTRYPOINT ["java", "-jar","/home/weekely.jar" , ""]
改造后dockerfile
FROM anapsix/alpine-java:8_server-jre_unlimited
ENV PARAMS ""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 1234
RUN mkdir /home/db/
ADD target/lib/* /home/lib/
ADD target/weekely.jar /home/weekely.jar
ENTRYPOINT ["java", "-jar", "/home/weekely.jar","-Dloader.path=./lib","-Djava.ext.dirs=./lib"]
结构
生成产物:
target\xxx.jar
target\lib\xxx.jar,xxx.jar2
docker目录结构为:
Dockerfile
target/lib/...jar
target/xxx.jar
```
参考
SpringBoot分离打包:将jar包与lib依赖、配置文件分开
本文来自:【java】springboot 打包分离lib-小码农,转载请保留本条链接,感谢!
温馨提示:
本文最后更新于 2022年10月27日,已超过 715 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
正文到此结束
- 本文标签: springboot docker jar
- 本文链接: https://djc8.cn/archives/java-springboot-packages-and-separates-lib.html
- 版权声明: 本文由小码农原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权