贫民窟里的程序高手

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

本文主要分享了对整合jsp的springboot项目打jar包,如何正确的配置maven pom。

二、打包配置

1.pom.xml添加spring-boot-maven-plugin配置

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

如果只是普通的项目打包,上面的配置足够了,但是带src/main/webapp的打包,还不行,会发现src/main/webapp的内容都没有打进jar包

2.pom.xml添加配置resources配置

<build>
    <resources>
        <resource>
            <directory>src/main/webapp</directory>
            <!-- 注意此次必须要放在此目录下才能被访问到 -->
            <targetPath>META-INF/resources</targetPath>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

这个配置可将src/main/webapp打包到jar包中,但是这个jar包还不能让jsp正常访问

注:如果没有配置<targetPath>META-INF/resources</targetPath>,src/main/webapp的内容会保存到BOOT-INF/ 目录下。经测试,jsp页面无法正常访问,需要指定到META-INF/resources才能正常访问

3.spring-boot-maven-plugin的版本指定为1.4.2.RELEASE

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- 一定要是这个版本,其他版本访问不到页面 -->
            <version>1.4.2.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 1.4.2.RELEASE导致多个main方法的情况下需要指定主类 -->
                <mainClass>com.company.admin.AdminApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

springboot官方推荐的前端模板引擎是thymeleaf,所以对于jsp的支持可能存在兼容性。1.4.2.RELEASE是经过测试出来。具体原因未知,不过确实可用。

如果项目中没有多个main方法,mainClass可以不配置

4.最终版配置

<build>
    <resources>
        <resource>
            <directory>src/main/webapp</directory>
            <!-- 注意此次必须要放在此目录下才能被访问到 -->
            <targetPath>META-INF/resources</targetPath>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- 一定要是这个版本,其他版本访问不到页面 -->
            <version>1.4.2.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 1.4.2.RELEASE导致多个main方法的情况下需要指定主类 -->
                <mainClass>com.company.admin.AdminApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

 

posted on 2022-11-23 20:05  贫民窟里的程序高手  阅读(1336)  评论(0编辑  收藏  举报