最近项目要做一个Minio分块上传的功能,做好之后其他项目也想直接复用这个功能,参考了一些资料,总结如下。

1. 不能使用springboot默认的打包方式,所以我们需要把pom文件里面的这个换成Apache-maven

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source> <!--指明源码用的Jdk版本-->
                    <target>1.8</target> <!--指明打包后的Jdk版本-->
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <!--打包时需要被排除的文件-->
                    <exclude>application.yml</exclude>
                </excludes>
            </resource>
        </resources>
    </build>

2. 剔除要引入的springboot项目中不需要的文件:如Application和ApplicationTests等。

3. 打包时要剔除application.yml等文件

4. 打包后自动配置(Spring发现)原有的bean的解决方案,有好几种解决方案,这里提供一种,具体原理可参考文末参考文档。这里只做如何实现。

项目目录如下,编写一个配置类用于指定需要扫描的beans有哪些

springboot 打jar后无法访问页面 springboot为什么打jar包_jar包

 

再编写对应的注解用于启用该配置类,之后就可以再需要使用该jar包的springboot项目中通过该注解实现自动装配了。

springboot 打jar后无法访问页面 springboot为什么打jar包_intellij-idea_02

 先clean 之后 点击 package 即可生成如下的jar包

springboot 打jar后无法访问页面 springboot为什么打jar包_intellij-idea_03

在新项目中导入该jar包即可使用

springboot 打jar后无法访问页面 springboot为什么打jar包_jar包_04

在新项目的启动类上加上@EnableMinioUpload 注解 即可实现 该Jar包的自动装配

springboot 打jar后无法访问页面 springboot为什么打jar包_intellij-idea_05

 对于该jar包的application.yml文件 在打包时被我们排除在外了,此时可直接在新项目的application.yml中配置该jar包的资源信息

springboot 打jar后无法访问页面 springboot为什么打jar包_intellij-idea_06