SpringBoot – 将项目代码与依赖分开打包

        使用Spring Boot框架进行开发时,默认情况下,项目在发布时会将项目代码和项目的所有依赖包一起打包成一个可执行的 jar 包。如果项目的依赖包很多,生成的jar包就会非常大。即使每次只改动一点东西,就需要将整个项目重新打包部署,生成的jar包在传输过程中既浪费带宽也浪费时间,对于更新服务很不友好。

        下面的代码配置演示如何将依赖包从整个项目分离出来,这样每次部署只需要发布代码即可。

配置文件按照如下配置即可:

<build>
        <plugins>
            <!-- 自定义ClassPath路径 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!-- 把构建根目录的lib文件夹配置成ClassPath路径 -->
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>./</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <!--配置Jar包构建信息-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.1.RELEASE</version>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                    <includeSystemScope>true</includeSystemScope>
                    <!--手动设置构建需要加入的依赖,只有配置的依赖才会加入。-->
                    <includes>
                        <!--配置一个不存在的groupId,这样就不会引入任何依赖,jar包就只包含代码文件-->
                        <include>
                            <groupId>not-exists</groupId>
                        </include>
                        <!--如果是多模块项目,其他模块需要手动添加下面-->
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--把依赖拷贝到Lib路径-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <!--生成的jar包名称为项目的artifactId-->
        <finalName>${project.artifactId}</finalName>
    </build>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我是一名AI语言模型,无法提供具体的springboot多模块项目代码。但是,我可以给你一些指导,帮助你构建一个基本的springboot多模块项目。 首先,你需要创建一个父模块,这个模块包含所有子模块的公共依赖。例如,你可以在父模块的pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ``` 接下来,你可以创建多个子模块。每个子模块都有自己的pom.xml文件,并且它们都依赖于父模块。例如,你可以创建一个名为“web”的子模块,它依赖于父模块,同时添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 创建另一个名为“service”的子模块,它也依赖于父模块,同时添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ``` 最后,在每个子模块中编写自己的代码。例如,在“web”模块中,你可以创建一个控制器类: ```java @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, world!"; } } ``` 在“service”模块中,你可以创建一个服务类: ```java @Service public class HelloService { public String getGreeting() { return "Hello, world!"; } } ``` 然后,你可以在“web”模块中注入“service”模块中的服务类,以便在控制器中使用它: ```java @RestController public class HelloController { @Autowired private HelloService helloService; @GetMapping("/hello") public String hello() { return helloService.getGreeting(); } } ``` 最后,你可以使用maven命令构建和运行这个项目: ``` mvn clean install mvn spring-boot:run ``` 希望这些指导能够帮助你构建一个基本的springboot多模块项目

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值