idea下springboot打包成jar包和war包,并且在外部tomcat下运行访问

idea下springboot打包成jar包和war包,并且在外部tomcat下运行访问

jar包

打jar包和war包操作的不同:标签中的值更改就行
这里先打成jar包
在这里插入图片描述
使用maven的插件打包,打包后的jar包在项目的target目录下
在这里插入图片描述
在这里插入图片描述
此时打包出来是有默认的名称的jar包。然后在命令行下 运行起这个jar包。当然,jar包名字你需要去上面target路径下去拷贝一下。【是不是很麻烦!!下面打war包可以自定义名称】
在这里插入图片描述
这样springboot项目就运行起来了
但是可能会有一些页面访问不了,进入到jar包中查看一下,会发现jar包中没有把webapp下的页面文件等打包进去,当然访问找不到页面了
在这里插入图片描述

war包

jar包既然打包不成功访问,那就打包war包:就把jar改成war就好了
在这里插入图片描述
如果嫌弃上面需要去拷贝jar包名字麻烦,想打包出来的名字是自定义的,在build下 规定即可
在这里插入图片描述
打包成war包,同样,打包后的war包还是在项目的target目录下
在这里插入图片描述
这样打包出来的war包名字就是自定义的
在这里插入图片描述
运行war包
在这里插入图片描述
现在页面可以正常访问,关于jar包访问页面资源的问题可以看看这篇博客:pom.xml文件中使用resources插件的小作用

在tomcat运行项目

如果要在外部tomcat运行,还需要更改一些配置之后再进行打包
下面以war包为例

  1. 首先要排除springboot项目内置的Tomcat容器(两种方式都可)

方法一:
Exclusions:当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B的依赖时,可以排除对C的依赖。

	<!--排除spring-boot-starter-web中的Tomcat-->
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	    <exclusions>
	        <exclusion>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-starter-tomcat</artifactId>
	        </exclusion>
	    </exclusions>
	</dependency>

方法二:
maven中三种classpath
编译,测试,运行
1.compile:默认范围,编译测试运行都有效
2.provided:在编译和测试时有效
3.runtime:在测试和运行时有效
4.test:只在测试时有效
5.system:在编译和测试时有效,与本机系统关联,可移植性差

	<!--在pom.xml中添加依赖-->
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-tomcat</artifactId>
	    <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
	        相当于compile,但是打包阶段做了exclude操作-->
	    <scope>provided</scope>
	</dependency>
  1. 修改启动类,重写初始化方法
    为什么要重写初始化方法,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer

    启动类代码:

    @SpringBootApplication
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    

    修改方式

    //方式一,启动类继承SpringBootServletInitializer实现configure:
    
    @SpringBootApplication
    public class Application extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(Application.class);
        }
    }
    
    //方式二,新增加一个类继承SpringBootServletInitializer实现configure:
    public class ServletInitializer extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            //此处的Application.class为带有@SpringBootApplication注解的启动类
            return builder.sources(Application.class);
        }
    
    }
    
  2. 接着像上面一样打包,然后直接复制打包好的war包到外部tomcat的webapps目录中
    在这里插入图片描述

  3. 启动一下tomcat
    在这里插入图片描述

  4. 在浏览器中访问路径需要加上你的项目名字,才能成功访问。也就是这个文件夹的名字
    在这里插入图片描述
    在这里插入图片描述

  5. 注意事项:

  • 使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的
    server.port=
    server.servlet.context-path=
    将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问

  • 同时确保pom中有以下代码

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>3.0.0</version>
	<configuration>
	    <failOnMissingWebXml>false</failOnMissingWebXml>
	    <warName>${artifactId}</warName>
	</configuration>
</plugin>
  • 部署tomcat后部分资源不存在
    部署到tomcat上后,由于我们的访问路径可能发生变化,例如IDEA是用localhost:8080访问的首页,但是部署后可能首页是localhost:8080/Mynote。
    同理,可能出现资源显示不出来,例如我的图片在数据库中的存储路径如下:
    在这里插入图片描述
    那么我就必须改为:
    在这里插入图片描述
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Spring Boot多模块项目的打包,可以按照以下步骤进行操作。 首先,你需要将项目源码导入到本地进行打包验证。这些源码括单工程构建打包和多模块打包的过程,可以放心使用。 在项目中,含了一个父工程、多个子模块和一个工具模块。每个子模块都有启动类,而工具模块没有。因此,这三者的pom文件可能会有所不同。根据项目的需求,你需要修改这些pom文件。之后,你可以使用IDEA打包工具一键打包整个项目。 接下来,你需要修改每个子模块中有启动类的pom文件。在这段配置中,你需要加入以下内容: <build> <plugins> <plugin> <!--该插件主要用途:构建可执行的JAR--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </build> 以上配置的作用括将java目录中的*.xml文件进行打包,并设置自己目录下的配置文件。 通过按照以上步骤进行操作,你就可以打包Spring Boot多模块项目了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot多模块打包源码](https://download.csdn.net/download/zhangcongyi420/88153258)[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: 50%"] - *2* *3* [SpringBoot多模块项目打包教程,超详细图文详解!](https://blog.csdn.net/weixin_43314519/article/details/115152850)[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: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值