springboot聚合项目如何打jar包?

        这篇文章参考了多篇博客,总结了父工程、含有启动类的子工程、不含启动类的子工程、含有mapper的子工程等多种形式的pom.xml配置及打包方式。

1.1 项目结构

        该项目是一个pom聚合项目

1.2 在父工程的pom.xml中加上

        <packaging>pom</packaging>表示打包方式为聚合项目。build直接覆盖原来的build即可。

<packaging>pom</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <skipTests>true</skipTests>    <!--默认关掉单元测试 -->
            </configuration>
        </plugin>
    </plugins>
</build>

1.3 在含有启动类的子工程中

        含有启动类的子工程,需要指定启动类地址,打包完成后执行jar包就是执行该启动类。

<packaging>jar</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定该Main Class为全局的唯一入口 这里是启动类的地址 -->
                <mainClass>org.javaboy.vhr.VhrApplication</mainClass>
                <layout>ZIP</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

1.4 不含有启动类的子工程中

        不含启动类的子工程,在中取消生成jar包,否则在使用maven进行打包的时候,一直提示“程序包xxx不存在,找不到符号”

<packaging>jar</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
</build>

1.5 含有mapper的子工程

       因为mapper.xml文件是在resource目录下,在打包时候可能不会加载进去,需要将mapper.xml文件加载进去,否则在执行jar包的时候,会报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)映射文件找不到的错误。如下所示的配置中,<plugins>...</plugins>部分表示打包时不生成jar包,<resources>....</resources>表示加载mapper.xml文件。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
    <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

        我项目中的mapper在的工程中不含启动类,所以配置如上图,有些人的项目中mapper和启动类在一个工程中,把<resources>....</resources>部分复制过去即可。案例如下

<packaging>jar</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定该Main Class为全局的唯一入口 这里是启动类的地址 -->
                <mainClass>org.javaboy.vhr.VhrApplication</mainClass>
                <layout>ZIP</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>   
 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

1.6生成jar包

         测试生成的jar文件是否正常执行,新建空文件,将jar包复制进去。直接在上面cmd回车进入窗口。

         执行java -jar xxxx.jar

         浏览器访问,访问成功。我这里是已启动前端,可以直接登录到自己的项目。没有前端的自己浏览器输入自己后端的访问地址或者在postman中测试即可。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用IDEA创建Spring Boot聚合项目非常简单。首先,我们需要创建一个Maven项目。然后,按照以下步骤操作: 1. 在IDEA的欢迎界面选择“Create New Project”,或者在菜单栏选择“File” -> “New” -> “Project”。 2. 在左侧面板选择“Maven”,并在右侧面板选择“Create from archetype”选项。 3. 在搜索框中输入“spring-boot”,然后选择“org.springframework.boot:spring-boot-starter-parent”作为archetype。 4. 输入项目的Group和Artifact信息,这些信息将用于生项目的包名和文件夹结构。 5. 点击“Next”并为项目选择一个合适的名称和路径。 6. 在“Project Settings”页面中,可以选择项目Java版本和Spring Boot版本。通常情况下,建议选择最新的Java版本和Spring Boot版本。 7. 点击“Next”并确认项目设置,然后点击“Finish”完项目的创建。 接下来,我们需要创建聚合工程的子模块。可以按照以下步骤操作: 1. 在项目的根目录,右键点击鼠标并选择“New” -> “Module”。 2. 选择“Spring Initializr”作为模块类型,并点击“Next”。 3. 输入子模块的名称和包名,然后点击“Next”。 4. 在“Spring Boot”选项中选择所需的依赖,例如“Spring Web”等,然后点击“Next”。 5. 确认项目设置,然后点击“Finish”完子模块的创建。 重复以上步骤,可以创建多个子模块。 最后,我们需要在聚合工程的主模块中添加子模块的依赖和配置。可以按照以下步骤操作: 1. 打开主模块的pom.xml文件。 2. 在<modules>标签中添加子模块的名称,例如:<module>springboot-service</module>。 3. 在<dependencies>标签中添加子模块的依赖,例如:<dependency>springboot-service</dependency>。 4. 在主模块的Application启动类中,添加@SpringBootApplication注解,并在main方法中使用SpringApplication.run()方法启动应用程序。 通过这些步骤,您就可以功创建一个Spring Boot聚合项目了。请根据实际需要进行相应的配置和开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [IDEA创建springboot聚合项目](https://blog.csdn.net/kxy646589789/article/details/81868830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值