sping boot 如何将外部引入的jar包打到fat jar里面+超级大坑

  文末有超级大坑!!   

   使用spring boot 开发时,如果项目中引人了外部的包,在编译器中使用是没问题的,但是,当你想打包的时候,就会发现无法将lib下的jar一起打包到boot的fat jar中。会报错"系统软件包不存在";

    解决方法很简单:

1.在根目录下建立一个lib包


2.配置一下本地依赖

(groupId/artifactId/version随便填一个即可,jar包用全名,不能用*号)

<dependency>
    <groupId>com.xxx</groupId>
    <artifactId>xxx</artifactId>
    <version>v0.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/YOUR_JAR_NAME.jar</systemPath>
</dependency>

光是这样还不够!虽然打包时不报错了.但是运行时还是会提示"没有类".要如何才能把外部jar真正打包进去呢?
如下.
<build>
 <plugins>
     <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
 <configuration>

#下面这条不加也可以
<mainClass>io.xinshiyun.com.Application</mainClass
<compilerArguments>
#下面这条是需要根据lib文件夹的位置改写的,${project.basedir}是根目录.
    <extdirs>${project.basedir}/lib</extdirs>
         </compilerArguments>
 </configuration>
     </plugin>
 </plugins>
  <resources>
            <resource>

#下面这条是需要根据lib文件夹的位置改写的,${project.basedir}是根目录

                <directory>${project.basedir}/lib</directory>

#打包后的文件目录,保留即可

                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <targetPath>BOOT-INF/classes/</targetPath>
            </resource>
        </resources>
</build>

resources 这里有一个超级大坑!!!,加了它确实可以在打包时把外

部jar打如进去,但是!!!!!!

如果继续运行项目的话!,会报

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.

Reason: Failed to determine a suitable driver class


大意是数据源不对~!~!~!~!,我在数据库配置那里找了好久,一无所获,百度那些也都不对,,最后重新建个项目,把依赖一个个拖过去看时才发现.!!!

总结下:平时编程时注释掉resouces那一段,将要打包时恢复!!

世界又美好了一点!!

猜你喜欢

转载自blog.csdn.net/ljxzdn/article/details/80160109