建springboot项目,打包,部署到本机的虚拟机全流程

零:目标

      打算建立一个简单的springboot工程,放到自己电脑上的虚拟机中跑起来,然后自己调用测试能否访问。

      因为后续很多的例子(比如日志采集、springcloud或消息队列等)都需要这样的一个工程来使用的。

      开发工具是Eclipse,Linux系统为CentOS7

一:建SpringBoo工程

1.1:建工程方式

      建springboot的样例工程有多重方式。我选用的是使用官方帮助生成样例工程的方式。

      访问 https://start.spring.io/ 如下图所示。需要自己确定项目类型(maven或gradle)开发语言。需要引入的dependencies等。全都确定了之后,点击屏幕下方的 generate生成工程包并下载。

      下载后,放到自己的工作目录,导入maven工程即可。

      然后我建了两个类,并修改了pom文件和一个配置文件。全部代码样例如下。

      启动类:TestSpringBootApplication

package com.dark.base;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackages = {"com.dark.base"})
@SpringBootApplication
public class TestSpringBootApplication {

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

}

      controller:TestController

package com.dark.base.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author		:dark
 * @title		:TestController
 * @date		:2020年6月24日
 */
@RestController
@RequestMapping("/test")
public class TestController {

	/**
	 * @description :纯属演示
	 * @param HttpServletRequest
	 * @param HttpServletResponse
	 */
	@ResponseBody
	@RequestMapping(value = "")
	public String cobjectManageSave(HttpServletRequest request, HttpServletResponse response) {
		System.out.println("========");
		return "abcdefg";
	}
}

      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">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.dark.base</groupId>
	<artifactId>TestSpringBoot</artifactId>
        <!-- 打包后的jar文件的版本后缀 -->
	<version>0.0.1-SNAPSHOT</version>
	<name>TestSpringBoot</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-rest</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		
		<!-- swagger2 -->
		<dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger2</artifactId>
		    <version>2.10.0</version>
		</dependency>
		<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.10.0</version>
        </dependency>
	</dependencies>

        <!-- 打包的配置 -->
	<build>
		<plugins>
			<!-- 解决在linux上启动报错“no main manifest attribute”的错误。添加下面这各插件即可 -->
			<plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	        </plugin>
	                <!-- maven打包必选项 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<!-- 一定要配置否则打jar的时候会说找不到主类,一定要写启动类的全路径外加启动类的类名-->
					<mainClass>com.dark.base.TestSpringBootApplication</mainClass>
                                        <!-- 将依赖的jar包都打入到jar包中,造成jar包会比较大 -->
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<!-- jvm参数 --> 					
                	<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                	<!-- java编译版本 --> 					
	                <source> 1.8 </source> 					
	                <target> 1.8 </target> 					
	                <!-- 编码方式 --> 					
	                <encoding> UTF-8 </encoding>
				</configuration>
			</plugin>
		</plugins>
		
	</build>
</project>

      配置文件:application.properties

server.port=8012

      理论上来说,现在启动工程,可以用postman或在页面的地址栏访问到了。

      如果访问时发生异常。请参照下面的  四:踩坑 的4.1小节

 

二:maven打包

2.1:pom文件的配置

      我们首先需要在pom文件中对打包做对应的设置。具体的写法与说明如下所示

<!-- 打包的配置 -->
	<build>
		<plugins>
			<!-- 解决在linux上启动报错“no main manifest attribute”的错误。添加下面这各插件即可 -->
			<plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	        </plugin>
	                <!-- maven打包必选项 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<!-- 一定要配置否则打jar的时候会说找不到主类,一定要写启动类的全路径外加启动类的类名-->
					<mainClass>com.dark.base.TestSpringBootApplication</mainClass>
                                        <!-- 将依赖的jar包都打入到jar包中,造成jar包会比较大 -->
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<!-- jvm参数 --> 					
                	<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                	<!-- java编译版本 --> 					
	                <source> 1.8 </source> 					
	                <target> 1.8 </target> 					
	                <!-- 编码方式 --> 					
	                <encoding> UTF-8 </encoding>
				</configuration>
			</plugin>
		</plugins>
		
	</build>

      如下配置maven命令的启动方式

      如上所示,配置完毕之后, 选中要部署的项目 右击 —> Run As —> maven clean,再执行 maven build即可打成一个jar包。

      打包运行的坑,请参照下面的  四:踩坑 的 4.2小节

 

三:部署到本地虚拟机

3.1:启动

      启动命令如下:

nohup java -jar TestSpringBoot-0.0.1-SNAPSHOT.jar  > 1.log 2>&1 &

      其中“TestSpringBoot-0.0.1-SNAPSHOT.jar”是我的jar包的名字。1.log是我的测试日志名。大家根据自己情况修改。其他内容都是固定的格式。照抄即可。

      一般来说,直接启动肯定会报错。报错信息和解决方式可以参照4.2小节。大家只要保证自己的代码和打包那两步都是正确的即可。

3.2:网络

      如果启动后没有报错,却不能访问,大概率是网络的原因。下面是我参照的一个帖子。

      centos安装iptables步骤

      设置成功后,应该一切就都能ok了

 

四:踩坑

4.1:启动工程后不能访问controller

      对于本例这样的简单例子而言。如果不能访问,最大可能是因为controller和启动app放在不同的路径下。可以通过修改app类的扫描路径解决。也就是在启动类上面加上如下的注解(上文的代码中也有举例,可以参考)

@ComponentScan(basePackages = {"com.dark.base"})

 

4.2:打包执行报错

      明明已经测试可用的工程,但是打包并将jar放到Linux系统下执行时,总会报“no main manifest attribute”错误。

      最初我在pom中是这样配置的,如下所示

<configuration>
    <archive>
        <manifest>
            <mainClass>com.dark.base.TestSpringBootApplication</mainClass>
        </manifest>
    </archive>
</configuration>

      但是依然在启动后报上面的错误。然后我参考别人的写法,修改为如下写法

<configuration>
    <!-- 一定要配置否则打jar的时候会说找不到主类,根据具体项目来-->
    <mainClass>com.dark.base.TestSpringBootApplication</mainClass>
</configuration>

      其实只是改了这里还不够,还需要在<build></build>中添加一个插件

<!-- 解决在linux上启动报错“no main manifest attribute”的错误。添加下面这各插件即可 -->
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

      完整版的pom配置,请参照上面第一部分的pom.xml文件,里面已经是最完全版的内容了。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Spring Boot项目部署到Ubuntu上,您可以按照以下步骤进行操作: 1. 首先,将您的Spring Boot项目打包成一个可执行的jar文件。在Ubuntu中,您可以使用命令行运行`mvn package`或者使用IDE(如IntelliJ IDEA)的打包功能来完成这一步骤。 2. 将打包后的jar文件上传到Ubuntu服务器上。您可以使用FTP工具,如FileZilla,通过SFTP协议将文件上传到服务器上。根据您提供的引用,您可以使用FailZip工具来发送文件到Ubuntu虚拟机。 3. 在Ubuntu服务器上安装Java运行环境和Tomcat服务器。您可以使用命令行运行以下命令来安装OpenJDK和Tomcat: ``` sudo apt update sudo apt install default-jdk sudo apt install tomcat9 ``` 4. 编辑Tomcat的配置文件,以配置您的Spring Boot项目。打开`/etc/tomcat9/server.xml`文件,找到`<Host>`标签,并添加以下内容: ``` <Context path="/" docBase="/path/to/your/jar/file.jar" /> ``` 将`/path/to/your/jar/file.jar`替换为您上传到服务器的jar文件的实际路径。 5. 重启Tomcat服务,以使配置生效。使用以下命令重启Tomcat: ``` sudo service tomcat9 restart ``` 6. 现在,您的Spring Boot项目应该已经成功部署到Ubuntu服务器上了。您可以通过在浏览器中输入服务器的IP地址和Tomcat端口号来访问您的应用程序。 请注意,以上步骤仅适用于将Spring Boot项目部署到Tomcat服务器上。如果您希望使用其他服务器(如Nginx),则需要相应地进行配置。 引用: - [1]: 在Ubuntu中打开jar包编辑/BOOT-INF/classes/内的配置文件application.yml修改数据库配置 - [2]: 文章目录JavaWeb项目部署到阿里云服务器1. 把项目打包成war包1.1 方法一1.2 方法二2. 配置服务器的jdk和tomcat环境3. JavaWeb项目部署JavaWeb项目部署到阿里云服务器 服务器:阿里云服务器 Ubuntu 18.04 64位... - [3]: 我使用的putty来连接虚拟机虚拟机是Ubuntu的,使用的是FailZip来向虚拟机发送文件的<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [spring boot项目部署到ubuntu服务器详细教程](https://blog.csdn.net/weixin_44086476/article/details/129974531)[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: 33.333333333333336%"] - *2* [将JavaWeb项目war包部署到阿里云服务器](https://download.csdn.net/download/weixin_38723683/14052421)[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: 33.333333333333336%"] - *3* [在Ubuntu中部署Springboot项目](https://blog.csdn.net/qq_25447799/article/details/122481813)[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: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值