将Java11指定为Spring(或Spring Boot)pom.xml文件中使用的版本的正确方法是什么?
例如,我需要在POM的java.version
属性中放入什么值?
对于Java8,我们使用1.8
,正如文档所示,对于Java9,我们使用1.9
。
我不确定Java11是否是1.11
(尽管这似乎不太可能),并且在使用maven-compiler-plugin
时,我看到它被指定为11
,但我没有使用编译器插件。
例如。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
我到处找都找不到答案,因为几乎所有我读过的文档以及与Java版本相关的博客文章都只显示版本8或版本9。
那我该用什么呢?1.11
还是仅仅11
?
我尝试了这两种方法,我的web服务器似乎可以正确启动和正确编译(IntelliJ显示信息:javac 11.0.2曾用于编译java Source
)。但是,我并不完全相信更改java.version
值是有用的,因为我可以将它设置为例如100
,并且一切正常。
我能找到的唯一相关问题是:与Java11兼容的Spring最低版本、Spring在迁移到JDK11和OpenJDK11的Spring4.3.x后由于Hibernate错误导致启动失败,但这些问题并没有真正说明问题。
简短回答:
正确的方法是对不同的Java版本使用
中的以下值:
<properties>
<java.version>11</java.version>
</properties>
实际上,最后它仍然使用maven-compiler-plugin
来编译。Springboot只配置一个
属性,这样通过更改该值,您就可以隐式地将maven-compiler-plugin
的和
更改为与
中指定的值相同的值:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source> <!-- same as <java.version> -->
<target>11</target> <!-- same as <java.version> -->
</configuration>
</plugin>
详细回答:
好像你想要细节来说服你。
这是因为每个Spring Boot项目都会扩展父pomspring-boot-starter-parent
,该pom定义了
,如下所示:
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source> <!-- maven.compiler.source -->
<target>11</target> <!-- maven.compiler.target -->
</configuration>
</plugin>
在maven-compiler-plugin
文档中,和
是Java编译器(javac
)的-source
和-target
参数。然后,从javac文档中,我们可以看到允许这两个参数具有以下值:
因此,对于Java11,
应该设置为11
。
指定Java11作为Spring(或Spring Boot)pom中使用的版本的正确方法是什么。xml文件? 也就是说,我需要在属性? 对于Java8,我们使用,就像留档显示的那样,对于Java9,它是。 我不确定Java 11是否会是(尽管这似乎不太可能),我看到在使用 还是仅仅? 我尝试了这两种方法,我的网络服务器似乎启动正确,编译正确(IntelliJ显示),但是我并不完全相信改变值是什么,
Android Studio给我一个Gradle构建错误,看起来像这样: 现在它给了我这些可点击的提示: 我已经下载并安装了JDK 7。问题是,当我在“文件系统”中选择它时,我只能找到一个名为1.6的目录。0 JDK。此外,JDK 7的安装跳过了我选择安装目录的要点,所以我真的不确定它在哪里。我的java控制面板上说我有“Java7Update79”,所以我很确定我已经接近了,我只需要告诉andr
我想使用最新版本的spring data mongodb,以便使用全文搜索功能,但我不知道如何使用spring boot starter data mongodb依赖项来指定这一点。 你可以在这里阅读:没有指定spring-data-mongodb版本的maven repository。 这是我的pom文件:
问题内容: 我有一个需要节点版本12或更高版本的Node.js项目。有没有办法在packages.json文件中指定此名称,以便安装程序将自动检查并通知用户是否需要升级? 问题答案: 我认为您可以使用“引擎”字段: 正如您所说的那样,您的代码绝对不能与任何较低版本一起使用,您可能也希望“ engineStrict”标志: 可在npmjs网站上找到package.json文件的文档 更新资料 现在已
Spring Boot中有三个启动器:JarLauncher/Property tiesLauncher/WarLauncher。对于可执行jar,默认将使用JarLauncher。现在我想改用Property tiesLauncher,以便我可以使用外部类路径。我如何指定那是Spring boogradle插件? 根据D3。在这个文档D.3.1启动器清单中,我可以在清单中指定主类。MF如下: 但
问题内容: 我在netbeans上编写了一个Maven代码,大约有2000多行。当我在netbeans上编译它时,一切都很好,但是如果我想在命令行上运行它,则会出现以下错误: 我尝试使用Java 1.3.1,编译器错误,但出现了更多错误。我从其他帖子中发现我应该修改pom.xml,但我不知道如何。这是我的pom.xml 如果您能帮助我,那就太好了。 问题答案: 请参阅配置页面以获取Maven编译器