打包jar包或war包

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。打包jar包或war包,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

jar包

这里设置pom.xml文件将工程打成jar包

在这里插入图片描述

使用maven的插件打包,打包后的jar包在项目的target目录下

在这里插入图片描述
在这里插入图片描述

此时打包出来是有默认的名称的jar包。然后在命令行下 运行起这个jar包。当然,jar包名字你需要去上面target路径下去拷贝一下。【是不是很麻烦!!下面打war包可以自定义名称】

在这里插入图片描述

这样springboot项目就运行起来了,但是可能会有一些页面访问不了,进入到jar包中查看一下,会发现jar包中没有把webapp下的页面文件等打包进去,当然访问找不到页面了

在这里插入图片描述

war包

把pom.xml中的jar改成war

在这里插入图片描述

如果嫌弃上面需要去拷贝jar包名字麻烦,想打包出来的名字是自定义的,在build下 规定即可

在这里插入图片描述

打包成war包,同样,打包后的war包还是在项目的target目录下

在这里插入图片描述

这样打包出来的war包名字就是自定义的

在这里插入图片描述

运行war包

在这里插入图片描述
现在页面可以正常访问。

在tomcat运行项目

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

首先要排除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>

修改启动类,重写初始化方法
为什么要重写初始化方法,如果您正在构建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);
}

}

接着像上面一样打包,然后直接复制打包好的war包到外部tomcat的webapps目录中
在这里插入图片描述

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

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

注意事项:

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

同时确保pom中有以下代码

org.apache.maven.plugins maven-war-plugin 3.0.0 false ${artifactId}

部署tomcat后部分资源不存在
部署到tomcat上后,由于我们的访问路径可能发生变化,例如IDEA是用localhost:8080访问的首页,但是部署后可能首页是localhost:8080/Mynote。
同理,可能出现资源显示不出来,例如我的图片在数据库中的存储路径如下:
在这里插入图片描述

那么我就必须改为:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/245974.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!