maven一波流(6)——解决烦人的maven工程编码和jdk版本自动切换问题

简介: 背景有时候拿过别人的工程使用,update project之后发现编码不对,中文全部乱码,然后jdk也自动变成了1.5版本,项目报了一大堆错误。这时候老手心里还是很淡定,右击项目,在属性里修改下编码,然后在build path里面改下jdk版本,搞定。后来再update project编码和jdk又自动变回去了,于是乎大怒,无奈又重新操作一遍。

问题分析

肯定是maven引起的,因为用maven update的时候才出现这问题。


怎么修改,肯定一个是修改maven整个的配置文件,也就是maven安装目录下的conf目录下的settings.xml,然后修改了之后eclipse也得知道这个修改,得从eclipse的首选项preferences里面更新下配置,最后改下项目的pom.xml配置文件。


这样从maven到eclipse到工程全部统一了,应该OK。


具体实施

首先改下settings.xml

打开我计算机目录D:\Tool\\apache-maven-3.5.3\\conf


在<profiles>和</profiles>中间添加如下代码,就是指定JDK为1.8版本。


<profile>    

 <id>jdk-1.8</id>    

  <activation>    

    <activeByDefault>true</activeByDefault>    

    <jdk>1.8</jdk>    

   </activation>    

<properties>    

<maven.compiler.source>1.8</maven.compiler.source>    

<maven.compiler.target>1.8</maven.compiler.target>    

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>    

</properties>    

</profile>


然后改下eclipse的首选项

点击eclipse菜单Window-Preferences-Maven-User Settings,将Global和User的Settings都设置为刚刚修改过的配置文件,并且点击Update Settings后Apply。

image.png

修改项目maven配置文件pom.xml

打开项目pom.xml文件,在 <plugins>和</plugins>之间添加两个插件,用于指定资源文件编码,指定编译的jdk版本并制定编译字符集编码。


<!-- 本插件解决资源文件编码问题 -->

  <plugin>

   <groupId>org.apache.maven.plugins</groupId>

   <artifactId>maven-resources-plugin</artifactId>

   <version>2.5</version>

   <configuration>

    <encoding>UTF-8</encoding>

   </configuration>

  </plugin>

  <plugin>

   <!-- 本插件用于指定maven编译的jdk版本。maven3默认用jdk1.5,maven2默认用jdk1.3。 -->      

   <groupId>org.apache.maven.plugins</groupId>

   <artifactId>maven-compiler-plugin</artifactId>

   <version>2.3.2</version>

   <configuration>

    <!-- 源代码使用的JDK版本 -->

    <source>1.8</source>

    <!-- 生成的目标版本 -->

    <target>1.8</target>

    <!-- 字符集编码 -->

    <encoding>UTF-8</encoding>

   </configuration>

  </plugin>


总结

多看文档多总结,多多益善。

相关文章
|
1月前
|
Java Maven
Maven 将询问原型的版本
在创建 Maven 项目时,选择 `maven-archetype-quickstart` 的 1.1 版本。配置包括 `groupId`(com.companyname.insurance)、`artifactId`(health)、`version`(1.0-SNAPSHOT)和 `package`(com.companyname.insurance)。用户确认设置后,Maven 创建项目结构,成功完成于 C:\MVN\health 目录,总耗时 4 分钟 12 秒。
|
1月前
|
Java Maven
Maven 将询问原型的版本
Maven prompts for the version of `maven-archetype-quickstart`, defaulting to 1.1. It then asks for project details like `groupId`, `artifactId`, `version`, and `package`, accepting default values or custom inputs. Upon confirmation
|
1月前
|
Java Maven
Maven 将询问原型的版本
在创建项目时,Maven 提供了 `maven-archetype-quickstart` 的版本选择,用户选择了版本 1.1。接着,用户输入了项目详细信息,包括 `groupId` 为 `com.companyname.insurance`,`artifactId` 为 `health`,以及 `version` 为 `1.0-SNAPSHOT`,并确认了这些配置。然后,Maven 创建了项目结构,输出了相关参数和成功完成的信息,整个过程耗时4分12秒。
|
14天前
|
Java 应用服务中间件 Maven
JDK版本错误:Unsupported major.minor version 51.0个人找到的解决办法
JDK版本错误:Unsupported major.minor version 51.0个人找到的解决办法
|
19天前
|
Java Maven
Maven 将询问原型的版本
在创建项目时,Maven 提示选择 `maven-archetype-quickstart` 的版本,用户选择了 6,即版本 1.1。接着,Maven 请求输入项目详细信息,包括 `groupId`、`artifactId`、`version` 和 `package`,用户提供了自定义值。确认细节无误后,Maven 开始生成项目结构,成功创建了一个位于 `C:\MVN\health` 的项目,总耗时 4 分钟 12 秒。
|
24天前
|
Java Maven
Maven 将询问原型的版本
在创建项目时,Maven 提示选择 `maven-archetype-quickstart` 的版本,用户选择了 6,即版本 1.1。接着,Maven 请求输入项目详细信息,包括 `groupId`、`artifactId`、`version` 和 `package`,用户分别设定了相应值。用户确认这些配置后,Maven 开始生成项目结构,成功创建了一个位于 `C:\MVN\health` 的新项目,总耗时4分钟12秒。
|
2天前
|
Oracle Java 关系型数据库
Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)
Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)
|
27天前
|
Java Maven
Maven 将询问原型的版本
Maven prompts for the version of `maven-archetype-quickstart`, defaulting to 1.1. It then asks for project details like `groupId`, `artifactId`, `version`, and `package`, accepting default values or user inputs.
|
30天前
|
Java Maven
Maven 将询问原型的版本
Maven prompts for the version of `maven-archetype-quickstart`, defaulting to 1.1. It then requests details like `groupId`, `artifactId`, `version`, and `package`, with user input or default values accepted.
|
15天前
|
Ubuntu Java Linux
Ubuntu20.04下载jdk遇到各种奇怪问题大集,Linux如何将默认的OpenJDK切换成自己安装的JDK版本(以JDK1.8为例),无需卸载原有OpenJDK,Some packages co
Ubuntu20.04下载jdk遇到各种奇怪问题大集,Linux如何将默认的OpenJDK切换成自己安装的JDK版本(以JDK1.8为例),无需卸载原有OpenJDK,Some packages co