Apache tomcat maven 插件在 Java 的不存在版本上编译
Apache tomcat maven plugin compiling on non-existing version of Java
我正在尝试将我的 Maven 项目与 Tomcat 服务器 8.5 集成。没有集成,一切正常。我在 pom.xml 中将 maven-compiler-plugin 替换为 tomcat7-maven-plugin 并进行了其他配置。在 mvn install、mvn clean install 和 mvn tomcat7:deploy 之后,一切都失败了,但出现以下异常。
TestServiceCSV.java:[345,48] strings in switch are not supported in -source 1.5
(use -source 7 or higher to enable strings in switch)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
很明显,编译是使用 java 1.5 执行的,而我的 jdk 版本是 1.8.0_144。其他详细信息如下:
>mvn -version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T02:58:13-05:00)
Maven home: C:\Maven\apache-maven-3.5.2\bin\..
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_144\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
>java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
我已将 Eclipse 中的 Installed JRE 设置为 JDK。我的项目的构建路径也反映了同样的情况。
>echo $MAVEN_HOME
C:\Maven\apache-maven-3.5.2
>echo $JAVA_HOME
C:\Program Files\Java\jdk1.8.0_144
Tomcat 版本 8.5.23
POM.xml条目
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/html</url>
<server>TomcatServer</server>
<username>admin</username>
<password>xxxx</password>
</configuration>
</plugin>
为什么编译是在1.5而不是实际版本上进行的?
Default source level of the compiler plugin is 1.5. The compiler:compile
goal is bound to the compile
phase of the default lifecycle. You always have to set the source and target 级,如果您想使用版本 6 的高级语言功能。
我正在尝试将我的 Maven 项目与 Tomcat 服务器 8.5 集成。没有集成,一切正常。我在 pom.xml 中将 maven-compiler-plugin 替换为 tomcat7-maven-plugin 并进行了其他配置。在 mvn install、mvn clean install 和 mvn tomcat7:deploy 之后,一切都失败了,但出现以下异常。
TestServiceCSV.java:[345,48] strings in switch are not supported in -source 1.5
(use -source 7 or higher to enable strings in switch)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
很明显,编译是使用 java 1.5 执行的,而我的 jdk 版本是 1.8.0_144。其他详细信息如下:
>mvn -version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T02:58:13-05:00)
Maven home: C:\Maven\apache-maven-3.5.2\bin\..
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_144\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
>java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
我已将 Eclipse 中的 Installed JRE 设置为 JDK。我的项目的构建路径也反映了同样的情况。
>echo $MAVEN_HOME
C:\Maven\apache-maven-3.5.2
>echo $JAVA_HOME
C:\Program Files\Java\jdk1.8.0_144
Tomcat 版本 8.5.23
POM.xml条目
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/html</url>
<server>TomcatServer</server>
<username>admin</username>
<password>xxxx</password>
</configuration>
</plugin>
为什么编译是在1.5而不是实际版本上进行的?
Default source level of the compiler plugin is 1.5. The compiler:compile
goal is bound to the compile
phase of the default lifecycle. You always have to set the source and target 级,如果您想使用版本 6 的高级语言功能。