当前位置 博文首页 > 逐墨飞扬的博客:SpringBoot打包部署

    逐墨飞扬的博客:SpringBoot打包部署

    作者:[db:作者] 时间:2021-07-12 15:46

    jar包

    SpringBoot官方建议通过SpringBoot提供的打包插件将项目打包成一个可执行的jar包(在这个jar包里面已经内置了Tomcat,可以直接当一个web跑),方便部署和管理。

    在pom.xml文件中添加编译插件(通过start.spring.io创建的工程默认就有)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <!-- ... -->
        <packaging>jar</packaging>
        <!-- ... -->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    然后直接通过下面两个命令行命令打包、运行项目

    $ mvn clean package
    $ java -jar target/mymodule-0.0.1-SNAPSHOT.jar
    

    注意, 如果你使用了src/main/webapp目录,打成jar包会忽略掉该目录下的所有文件,这种情况下只能选择打war包的方式

    war包

    第一步,修改pom.xml

    示例配置:
    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <!-- ... -->
        <packaging>war</packaging>
        <!-- ... -->
        <dependencies>
        	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	    <!-- 必须将tomcat标记为provided,阻止将内置的tomcat包打到war包中,以防与外部tomcat容器中的包冲突 -->
    	    <dependency>
    	        <groupId>org.springframework.boot</groupId>
    	        <artifactId>spring-boot-starter-tomcat</artifactId>
    	        <scope>provided</scope>
    	    </dependency>
    	    <!-- ... -->
    	    <!-- 支持JSP -->        
    	    <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
                <scope>provided</scope>
            </dependency>
            <!-- ... -->
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    第二步 注册启动类

    创建 ServletInitializer.java,继承 SpringBootServletInitializer ,覆盖 configure(),把启动类 Application 注册进去。外部 Web 应用服务器构建 Web Application Context 的时候,会把启动类添加进去。

    public class ServletInitializer extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    }
    

    最后执行

    mvn clean package  -Dmaven.test.skip=true
    

    会在 target 目录下生成:项目名+版本号.war文件,拷贝到 tomcat 服务器中启动即可。

    cs
    下一篇:没有了