springboot打包分离lib和resource

打包后的目录结构

target/output/

--- lib/                    /*存放所有依赖jar包,包括子模块打成的jar包*/

--- resource/        /*存放资源文件,yml 、properties、xml等*/

--- demo-0.0.1-SNAPSHOT.jar

配置:

  1. maven-jar-plugin:负责打包、排除lib和资源文件,把外部目录加入classpath中,指定主类入口
  2. maven-dependency-plugin:负责拷贝依赖jar包到外部lib目录
  3. maven-resources-plugin:负责拷贝资源文件到外部resource目录
  4. 不需要spring-boot-maven-plugin插件

注意:

用maven-resources-plugin拷贝资源文件到外部,而maven-jar-plugin从jar中排除文件。如果排除文件规则写的不完善,可能造成文件重复。

打包后可用压缩软件查看jar中的文件和resource中是否有重复,如果有重复则删除其一即可。

示例:

修改maven-jar-plugin中的主类和所需排除文件后,可直接使用

<build>
    <plugins>
        <!--打jar包,排除资源文件和依赖jar,同时外部的lib、resource目录加入到classpath中,
            用命令java -jar运行jar时就不需要用-Dloader.path指定外部资源路径了!
            不需要spring-boot-maven-plugin插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <!--MANIFEST.MF 中 Class-Path 加入前缀!用命令java -jar运行jar时就不用-Dloader.path指定外部资源路径了-->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!--jar包名字是否包含唯一版本标识-->
                        <useUniqueVersions>false</useUniqueVersions>
                        <!--指定含main方法的主类入口-->
                        <mainClass>com.xx.yy.DemoApplication</mainClass>
                    </manifest>
                    <manifestEntries>
                        <!--MANIFEST.MF 中 Class-Path 加入资源文件目录!用命令java -jar时就不用-Dloader.path指定外部资源路径了 -->
                        <Class-Path>resources/</Class-Path>
                    </manifestEntries>
                </archive>
                <!-- 打包时从jar包里排除资源文件 -->
                <excludes>
                    <exclude>*.yml</exclude>
                    <exclude>*.properties</exclude>
                    <exclude>mapper/*.xml</exclude>
                </excludes>
                <!-- 指定项目打成jar包输出位置 -->
                <outputDirectory>${project.build.directory}/output</outputDirectory>
            </configuration>
        </plugin>

        <!-- 拷贝依赖jar包!插件maven-jar-plugin只是打包排除文件,
            而把依赖jar包拷贝到外部lib目录就需要maven-dependency-plugin插件 -->
        <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}/output/lib/</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <!--拷贝资源文件! 插件maven-jar-plugin只负责打包时排除文件,
            而把资源文件拷贝到外部resource目录就需要maven-dependency-plugin插件-->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <!--拷贝此目录下的所有文件到指定的外部目录。只负责拷贝,而不是从jar包中排除!-->
                                <directory>src/main/resources</directory>
                            </resource>
                        </resources>
                        <!-- 把“<resource><directory>”指定目录中的文件输出到此处指定目录 -->
                        <outputDirectory>${project.build.directory}/output/resources</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将Maven项目中的libresource单独打包,你可以使用Maven的插件来完成这个任务。以下是一种常见的做法: 1. 使用Maven的`maven-jar-plugin`插件配置来打包lib: 在项目的`pom.xml`文件中,添加以下插件配置: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.example.MainClass</mainClass> <!-- 替换为你的主类 --> </manifest> </archive> </configuration> </plugin> </plugins> </build> ``` 这样配置后,当你运行`mvn package`命令时,Maven会将项目的依赖库打包到一个独立的lib目录中。 2. 使用Maven的`maven-resources-plugin`插件配置来打包resource: 在项目的`pom.xml`文件中,添加以下插件配置: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/resources</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 这样配置后,当你运行`mvn package`命令时,Maven会将项目的资源文件打包到一个独立的resources目录中。 最后,运行`mvn package`命令即可将libresource分别打包到独立的目录中。注意查看Maven的输出目录以获取生成的目标文件。 希望这能帮到你!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值