先展示一下自己項目結構
一共有5個模塊
依賴關系:下面的模塊依賴上面所有的模塊
其中 rongke-web是我要部署的模塊 最終要打war進行部署,其他模塊均打jar 被rongke-web引用。
開始打war前准備工作
1、父pom.xml 移除spirngboot 自帶的tomcat 導入外用tomcat依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
第二步:
在主模塊 也就是rongke-web 中的pom.xml (不要在父pom.xml中)添加編譯插件。
一定帶上主函數 也就是你啟動的類 不然打war會報錯找不到主類位置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.rongke.application.Application</mainClass>
</configuration>
</plugin>
</plugins>
</build>
第三步 使用命令行打包
目錄切至項目目錄下
打包命令
mvn clean package -Dmaven.test.skip=true
沒有成功 報錯
第一個模塊 編譯失敗。查了半天原因,網上原因各種各樣。我的原因是我的父pom.xml中存在mavne編譯插件
<plugin>
<groupId> org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<fork>true</fork>
</configuration>
</plugin>
注釋掉這段代碼后重新打包 有報錯
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
maven找不到我的jdk了
於是網上搜索 基本上都是eclipse解決找不到jdk的版本 然而我用的是idea
網上有建議在父pom.xml中配置maven插件 告訴maven jdk的位置 於是重新打開注釋掉的代碼
<plugin>
<groupId> org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<executable>
D:\Java\jdk1.8.0_131\bin\javac.exe
</executable>
<fork>true</fork>
</configuration>
</plugin>
然而再次執行 mvn -Dmaven.test.skip -U clean package 打war時再次出現第一次打包時候的錯誤 於是重新注釋掉這段代碼
更換方法
於是重新配置jdk. 之前都配置jdk環境變量時候直接在path中添加D:\Java\jdk1.8.0_191\bin
現在改變配置方式,創建一個JAVA_HOME 配置變量值
然后在path中添加
於是重新 打包
mvn -Dmaven.test.skip -U clean package
可以看到成功了