本篇文章帶給大家的內容是關於SpringBoot如何進行簡單的打包部署?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
前言
本文主要介紹SpringBoot的一些打包事項和專案部署以及在其中遇到一些問題的解決方案。
SpringBoot打包
在SpringBoot打包這塊,我們就用之前的一個web專案來進行打包。
首先需要明確的是,該專案打包的形態是可執行的jar包,還是在tomcat下運行的war套件。
雖然本專案是用maven建置的,用maven打包也更方便,但是這裡也說明普通非maven打包的專案如何打包。
Maven打包
首先是maven方式打包:
如果是jar套件
需要在pom.xml
指定打成的套件為:
<packaging>jar</packaging>
如果是war套件。
需要在pom.xml
指定打成的套件為:
<packaging>war</packaging>
並透過<scope></scope>
標籤在打包的時候排除tomcat 依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
然後添加SpringBoot自帶的打包方式
範例如下:##
<build> <defaultGoal>compile</defaultGoal> <sourceDirectory>src</sourceDirectory> <finalName>springboot-package</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin </artifactId> <configuration> <fork>true</fork> <mainClass>com.pancm.App</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
註:標籤是指定打包之後的名稱,
是指定main函式。
SpringBoot自帶的打包方式,使用maven的assembly外掛程式來打包。
範例如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.5</version> <configuration> <archive> <manifest> <mainClass>com.pancm.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>在
pom.xml#中加入對應的標籤之後,我們只需在專案同級(pom.xml同級)輸入
mvn clean package即可完成打包
如果想排除測試程式碼,則可以輸入:
mvn clean package -Dmaven.test.skip=true來進行打包。 一般我們是把
application.properties和logback.xml檔案放在resources資料夾中,但是進行包裝之後,它們也會包含在 jar或war套件中,如果我們想更改配置,則會比較麻煩。 如果想將它們和項目放在同級目錄下,
application.properties可以直接移出和項目同級的目錄下,因為Spring程式會按優先順序從下面這些路徑來載入application.properties設定檔:
- 目前目錄下的/config目錄
- 目前目錄
- classpath裡的/config目錄
- classpath 根目錄
springboot預設載入的logback是在classpath目錄下,這時我們只需要在application.properties設定檔指定logback.xml的路徑即可。 新增如下:
logging.config=logback.xml如果引進了第三方的
jar包,但是又無法透過maven私服下載,這時可以手動進行編譯。 例如,我寫了一個工具類別為
Mytools,然後把它打成了一個jar包,然後放在我的這個專案中lib目錄下,並且需要引用它,那麼此時便可以對該jar包進行編譯到本地倉庫中,然後再pom.xml添加相應的名稱和版本號。 指令範例:
mvn install:install-file -Dfile=lib/pancmtools.jar -DgroupId=com.panncm.utils -DartifactId=pancm-utils -Dversion=1.0 -Dpackaging=jar
pom.xml新增
<dependency> <groupId>com.panncm.utils</groupId> <artifactId>pancm-utils</artifactId> <version>1.0</version> </dependency>便可以進行打包了。 普通項目打包如果是普通的項目,沒有使用
maven建置的話,可以使用eclipse等工具進行打包。 如果是
jar套件首先在
eclipse中執行該專案(main方法執行),然後在eclipse中右鍵項目export ->java -> runnable jar file-> package required libraries into generated jar 指定
main方法,然後選擇打包的名稱以及打包的路徑。點選finish完成打包。
war套件在
eclipse中右鍵項目export ->web -> war file,然後選擇打包的名稱以及打包的路徑。點選
finish完成打包。
ant方法進行打包(需要安裝ant環境,安裝方式基本上和maven一致,指定路徑,配置環境變量,這裡就不在過多講述了)。 一般打包之後,我們需要將套件和設定檔放在一個目錄下,這時我們又不想手動進行複製貼上的話,就可以用
ant來進行打包,將打包的檔案整合在一起。 這裡我們就寫一個
build.xml的設定檔。
<?xml version="1.0" encoding="UTF-8"?> <project name="springboot-package" default="copyAll" basedir="."> <property name="build" value="build" /> <property name="target" value="target" /> <target name="clean"> <delete dir="${target}" /> <delete dir="${build}" /> </target> <target name="create-path" depends="clean"> <mkdir dir="${build}" /> </target> <target name="mvn_package" depends="create-path"> <exec executable="cmd" failonerror="true"> <arg line="/c mvn install:install-file -Dfile=lib/pancmtools.jar -DgroupId=com.panncm.utils -DartifactId=pancm-utils -Dversion=1.0 -Dpackaging=jar" /> </exec> <exec executable="cmd" failonerror="true"> <arg line="/c mvn clean package" /> </exec> </target> <target name="copyAll" depends="mvn_package"> <copy todir="${build}" file="${target}/springboot-package.jar"></copy> <copy todir="${build}" file="logback.xml"></copy> <copy todir="${build}" file="application.properties"></copy> <copy todir="${build}" file="run.bat"></copy> </target> </project>
注:<mkdir dir="${build}"></mkdir>
是指定文件存放的文件夹,executable是使用cmd命令,line是执行的语句, 标签是将文件复制到指定的文件夹中。
然后再新建一个 build.bat文件,里面只需要填写 ant
就行了。
准备完之后,只需双击build.bat,项目和配置文件就自动到build文件中了,省去了很多操作。
虽然现在流行通过jenkins进行打包部署,不过使用ant加maven进行打包也不错的,比较简单。
打包遇到的一些问题
问题:source-1.5 中不支持 diamond运算符
解决办法一:
在properties添加<maven.compiler.source>1.8</maven.compiler.source>
和<maven.compiler.target>1.8</maven.compiler.target>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <fastjson>1.2.41</fastjson> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
解决方案二:
在plugin中添加 <source>1.8</source>
和 <target>1.8</target>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
问题二:打包出现某jar包无法打入
实际是可以下载,但是无法将此打入包中
解决办法:
在pom.xml中添加
<repositories> <repository> <id>spring-milestone</id> <url>http://repo.spring.io/libs-release</url> </repository> </repositories>
问题三:mvn clean 失败,出现Failed to execute goal
原因: 在clean的时候,target里面的文件被占用了。
解决办法: 不占用就行了。
SpringBoot部署
如果是jar项目
Windows系统在项目同级目录下输入:
java -jar springboot-package
即可启动项目。
关闭项目,只需关掉dos界面就可以了。
也可以写一个bat文件进行运行。
示例:
@echo off title "springboot-package" java -jar springboot-package.jar
Linux系统在项目同级目录下输入:
nohup -jar springboot-package &
即可启动。
关闭输入:
kill -9 pid(jar的进程id)
也可以在init.d
注册一个服务
示例:
ln -s /home/jars/app/springboot-package.jar /etc/init.d/springboot-package chmod +x /etc/init.d/springboot-package
然后输入:
service springboot-package start|stop|restart
进行启动或者停止。
当然也可以编写xshell脚本进行启动和关闭。
示例:
#!/bin/bash APPDIR=`pwd` PIDFILE=$APPDIR/springboot-package.pid if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then echo "springboot-package is already running..." exit 1 fi nohup java -jar $APPDIR/springboot-package.jar >/dev/null 2>&1 & echo $! > $PIDFILE echo "start springboot-package..."
如果是war项目
将war放在tomcat/webapp目录下,然后启动tomcat就可以了。Windows系统 在tomcat/bin目录下双击startup.bat即可启动,双击shutdown.bat关闭。
Linux系统则在tomcat/bin 目录下输入startup.sh即可启动, 输入shutdown.sh关闭
附SpringBoot打包部署的项目工程地址:
https://github.com/xuwujing/springBoot-study/tree/master/springboot-package
相关推荐:
编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行
以上是SpringBoot如何進行簡單的打包部署?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

前言SSE简单的来说就是服务器主动向前端推送数据的一种技术,它是单向的,也就是说前端是不能向服务器发送数据的。SSE适用于消息推送,监控等只需要服务器推送数据的场景中,下面是使用SpringBoot来实现一个简单的模拟向前端推动进度数据,前端页面接受后展示进度条。服务端在SpringBoot中使用时需要注意,最好使用SpringWeb提供的SseEmitter这个类来进行操作,我在刚开始时使用网上说的将Content-Type设置为text-stream这种方式发现每次前端每次都会重新创建接。最

Canal工作原理Canal模拟MySQLslave的交互协议,伪装自己为MySQLslave,向MySQLmaster发送dump协议MySQLmaster收到dump请求,开始推送binarylog给slave(也就是Canal)Canal解析binarylog对象(原始为byte流)MySQL打开binlog模式在MySQL配置文件my.cnf设置如下信息:[mysqld]#打开binloglog-bin=mysql-bin#选择ROW(行)模式binlog-format=ROW#配置My

一、手机扫二维码登录的原理二维码扫码登录是一种基于OAuth3.0协议的授权登录方式。在这种方式下,应用程序不需要获取用户的用户名和密码,只需要获取用户的授权即可。二维码扫码登录主要有以下几个步骤:应用程序生成一个二维码,并将该二维码展示给用户。用户使用扫码工具扫描该二维码,并在授权页面中授权。用户授权后,应用程序会获取一个授权码。应用程序使用该授权码向授权服务器请求访问令牌。授权服务器返回一个访问令牌给应用程序。应用程序使用该访问令牌访问资源服务器。通过以上步骤,二维码扫码登录可以实现用户的快

1.springboot2.x及以上版本在SpringBoot2.xAOP中会默认使用Cglib来实现,但是Spring5中默认还是使用jdk动态代理。SpringAOP默认使用JDK动态代理,如果对象没有实现接口,则使用CGLIB代理。当然,也可以强制使用CGLIB代理。在SpringBoot中,通过AopAutoConfiguration来自动装配AOP.2.Springboot1.xSpringboot1.xAOP默认还是使用JDK动态代理的3.SpringBoot2.x为何默认使用Cgl

我们使用jasypt最新版本对敏感信息进行加解密。1.在项目pom文件中加入如下依赖:com.github.ulisesbocchiojasypt-spring-boot-starter3.0.32.创建加解密公用类:packagecom.myproject.common.utils;importorg.jasypt.encryption.pbe.PooledPBEStringEncryptor;importorg.jasypt.encryption.pbe.config.SimpleStrin

一、springboot与mybatis的配置1.首先,springboot配置mybatis需要的全部依赖如下:org.springframework.bootspring-boot-starter-parent1.5.1.RELEASEorg.springframework.bootspring-boot-starter-web1.5.1.RELEASEorg.mybatis.spring.bootmybatis-spring-boot-starter1.2.0com.oracleojdbc

知识准备需要理解ApachePOI遵循的标准(OfficeOpenXML(OOXML)标准和微软的OLE2复合文档格式(OLE2)),这将对应着API的依赖包。什么是POIApachePOI是用Java编写的免费开源的跨平台的JavaAPI,ApachePOI提供API给Java程序对MicrosoftOffice格式档案读和写的功能。POI为“PoorObfuscationImplementation”的首字母缩写,意为“简洁版的模糊实现”。ApachePOI是创建和维护操作各种符合Offic

1.首先新建一个shiroConfigshiro的配置类,代码如下:@ConfigurationpublicclassSpringShiroConfig{/***@paramrealms这儿使用接口集合是为了实现多验证登录时使用的*@return*/@BeanpublicSecurityManagersecurityManager(Collectionrealms){DefaultWebSecurityManagersManager=newDefaultWebSecurityManager();


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。