最近想把maven项目打包到Linux的Tomcat下运行,发现只是单纯的package成war包并不行,必须连带着依赖的jar一起打包,网上找了很多打包的方法,不知道是不是开发工具或者是maven版本的问题,很多都不行,所以总结一下遇到的问题和解决方案,当然主要也是参考了其他人的解决方法,我的开发环境是eclipse + maven3.3.9 + tomcat7
首先,pom.xml中添加如下配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
然后:右击项目工程---------->properties--------->deploymentAssembly---->add---->java build path entries------->next--->Maven Dependencies--->Finish(这是阿里云的解决方案 https://www.aliyun.com/jiaocheng/304961.html,但是我是加上上面的配置一起才生效的)
打包:选中pom.xml文件,右键,run as maven clean,结束后 run as maven install
打包中遇到的两个问题:
问题一、No compiler is provided in this environment. Perhaps you are running on a JRE rather than aJDK:
(参考博客:https://blog.csdn.net/ywb201314/article/details/51181385)
问题原因:eclipse配置的默认环境是JRE不是JDK
解决方案:配置eclipse的默认开发环境为JDK
这里发现还有一个问题就是,有时候即使已经将默认环境配置为jdk了,还是会出现这个错误,这时候需要对项目单独build path,选中项目右键BuildPath
问题二、Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.6:war
(参考博客:https://blog.csdn.net/stemq/article/details/52922790)
问题原因:打包时在Tomcat的WebContent/WEB-INF/文件夹下找不到web.xml文件。
解决方案:如果WebContent/WEB-INF/web.xml文件存在,需要在pom.xml文件的节点中,加上maven-war-plugin插件配置(注,plugin标签需要配置在build 下的plugins标签内)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webResources>
<resource>
<directory>WebContent</directory>
</resource>
</webResources>
</configuration>
</plugin>
如果WebContent/WEB-INF/web.xml文件不存在,则按下面的方式配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
最后打包的war包或者jar所在的位置:maven-install执行成功后,控制台显示