使用maven創建的springboot項目,默認是jar包,springboot還有自己帶的tomcat。
現在為了簡單實現本地自動發布項目到服務器,需要通過發布war包的形式,通過maven將項目發布到tomcat的webapps目錄下。
1.將spring boot發布war包:
修改pom.xml文件,將jar修改為war:
<packaging>war</packaging>
在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>
添加servlet依賴:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
修改新建啟動類
public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意這里要指向原先用main方法執行的Application啟動類 return builder.sources(DemoApplication.class); } }
這樣項目發布時就是war包了。
2.maven自動部署到遠程tomcat教程
首先,配置tomcat的manager
編輯遠程tomcat服務器下的conf/tomcat-users.xml,在末尾增加(其實只要拉到文件末尾,去掉注釋改一下就可以了)
<role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin" password="password" roles="manager-script"/> <user username="root" password="password" roles="manager-gui"/>
將上面的password改為自己的密碼
保存tomcat-users.xml。
在tomcat服務器的conf/Catalina/localhost/目錄下創建一個manager.xml文件,寫入如下值:
<?xml version="1.0" encoding="UTF-8"?> <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> </Context>
然后在瀏覽器中輸入http://serverip:port/manager/html,此時會彈出要求輸入用戶名和密碼對話框,輸入manager-gui對應的用戶和密碼登錄管理控制台(其中serverip為服務器ip,如果服務器在本地就是localhost,端口為tomcat端口,默認8080)。
以此確認manager是否配置正確。正確結果示例如下:
在maven項目中添加配置
在pom.xml文件中,在plugins節點下添加如下plugin節點
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://serverip:port/manager/text</url> <username>admin</username> <password>password</password> <update>true</update> <path>/webapp</path> </configuration> </plugin>
將上面的serverip和port換成自己tomcat服務器的ip和端口。密碼換成上面配置的manager-script角色的密碼。path改為項目在tomcat服務器中的部署路徑。
然后進行部署,如果是第一次部署,運行mvn tomcat7:deploy進行自動部署(對於tomcat8,9,也是使用tomcat7命令),如果是更新了代碼后重新部署更新,運行mvn tomcat7:redeploy,如果第一次部署使用mvn tomcat7:redeploy,則只會執行上傳war文件,服務器不會
自動解壓部署。如果路徑在tomcat服務器中已存在並且使用mvn tomcat7:deploy命令的話,上面的配置中一定要配置<update>true</update>,不然會報錯。
3.在本地eclipse中發布項目到服務器:
日志中可以看到成功的提示。