spring-boot项目打包时候出现boot-inf文件夹的问题
spring-boot
spring-projects/spring-boot: 是一个用于简化Spring应用开发的框架。适合用于需要快速开发企业级Java应用的项目。特点是可以提供自动配置、独立运行和内置的Tomcat服务器,简化Spring应用的构建和部署。
项目地址:https://gitcode.com/gh_mirrors/sp/spring-boot
免费下载资源
·
前言
这问题不是我发现的。。刚好碰到而已,下面几位同仁都遇到过:
摘抄如下:
1.spring-boot maven打包,一般pom.xml文件里会加
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
这样打的jar里会多一个目录BOOT-INF。
2.引起问题,程序包不存在。
3.解决办法,如果A子模块包依赖了B子模块包,在B子模块的pom文件,加入
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
---------------------
作者:zsywangyi
来源:CSDN
原文:https://blog.csdn.net/zsywangyi/article/details/78319130
版权声明:本文为博主原创文章,转载请附上博文链接!
顺便将评论放一放:
优秀,估计这方法是可行的。
还有其他文章可以参考:
springboot打包部署的那些事
这篇也详细,抄录如下:
一、打成jar部署
利用springboot的插件打包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
打jar的小细节
当有引入本地jar配置,如下图
pom.xml配置如下
<dependency>
<groupId>eis_protobuf</groupId>
<artifactId>eis_protobuf</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/eis_protobuf.jar</systemPath>
</dependency>
springboot-maven-plugin打包的第一级目录为Boot-INF,如果不做任何配置,直接mvn clean package会发现无法把本地的jar打进Boot-INF中,则此时要做如下配置
方法一
在pom.xml的resources节点添加如下内容
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
ps: 如果遇到一些外部配置文件比如mybatis的mapper文件或者activiti生成器的json文件,则也要把相应的文件打进resources中,否则项目启动会因找不到配置文件,而报错,配置文件如下
<resource>
<directory>${basedir}/src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>templates/**</exclude>
<exclude>static/**</exclude>
</excludes>
<includes>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.yaml</include>
<include>**/*.properties</include>
<include>**/*.key</include>
<include>**/*.des</include>
<include>**/*.template</include>
<include>**/*.json</include>
</includes>
</resource>
方法二
在spring-boot-maven-plugin插件中设置includeSystemScope参数
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
二 把sprinboot部署到外部tomcat
1、修改打包方式,把jar改成war,改成如下配置
<packaging>war</packaging>
2、引入tomcat依赖jar,scope范围为provided,并排除springboot内嵌的tomcat依赖jar,其实不排除也没关系,不影响项目运行
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3、修改打包插件,不使用spring-boot-maven-plugin插件打包,因为这个打包插件会把jar打包在Boot-INF目录下导致别的项目引用时引用不到,此时改用maven-war-plugin打包,具体配置如下
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
4、修改启动类,启动类继承SpringBootServletInitializer,并重写configure方法
@SpringBootApplicationpublic class SpringbootDemo extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootDemo.class);
}
public static void main(String[] args) {
new SpringApplicationBuilder(SpringbootDemo.class).web(true).run(args);
}
}
原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)
原文发表时间:2018-09-09
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
发表于 2018-09-27
好了,可惜我用的gradle,而打包的就是这样的:
那么解决方案是什么?
参考一下:
Grails 3 war -Inline plugin issues
防止被墙看不到,下面是答案:
然后不行,不说repackge是srping boo t1.0的产物,就是现在将bootJar.enable=false bootWar.enable=false都禁用也没用的。
尝试用gradle的shadow插件
请具体看:
shadow官网
注意,目前为止要用到gradle5,我已经升级了。。请自行升级。然后build可能会出现:
要启用zip64:
打包成功。可以看到:
打包后出现问题:
缺少spring.facxxx文件。。嗯,其实,我们可以在源代码里面看到
在autoconfigure里面。。好了,我们找到自己版本号的这个文件,这样找:
idea中看
然后找到:
解压缩复制里面的spring.faxxx文件
放到
打包:
GitHub 加速计划 / sp / spring-boot
73.97 K
40.4 K
下载
spring-projects/spring-boot: 是一个用于简化Spring应用开发的框架。适合用于需要快速开发企业级Java应用的项目。特点是可以提供自动配置、独立运行和内置的Tomcat服务器,简化Spring应用的构建和部署。
最近提交(Master分支:1 个月前 )
fdf24c6c
Closes gh-42976
7 天前
3c42ba8c
* pr/42974:
Fix copyright year of updated file
Polish
Closes gh-42974
7 天前
更多推荐
已为社区贡献6条内容
所有评论(0)