1 在终端界面,使用mvn compile,无法成功构建
报错:
BUILD FAILURE
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] 不再支持源选项 1.5。请使用 1.6 或更高版本。
[ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。
查找原因可能是JDK版本问题,在pom.xml中配置JDK版本
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>9</java.version> //声明JDK版本
<maven.compiler.source>9</maven.compiler.source>
<maven.compiler.target>9</maven.compiler.target>
</properties>
2 配置好pom.xml后,mvn compile仍然出现Error
[ERROR]D:/IDEA文件/travel/src/main/java/cn/itcast/travel/util/MailUtils.java:[1,1] 非法字符: '\ufeff'
[ERROR]/D:/IDEA文件/travel/src/main/java/cn/itcast/travel/util/MailUtils.java:[1,10] 需要class, interface或enum [ERROR]
用txt记事本时,java文件保存格式为UTF-8,但是用notepad检查java文件的格式,发现是UTF-8-BOM:
更改格式为UTF-8
保存运行,即可解决问题。
3 运行Maven命令,下载时间过长,甚至有时出现中断
(1)在不配置镜像的情况下,maven默认会使用中央库.
(2)maven中央库在国外,有时候访问会很慢,尤其是下载较大的依赖的时候,有时候速度会很慢,甚至会出现无法下载的情况.
(3)为了解决依赖下载速度的问题,需要配置maven国内镜像
解决办法:
(1)可以直接在pom.xml中配置远程仓库,但是只是针对该项目,不推荐
(2)在Maven安装目录下,配置config/settings.xml文件
找到mirrors标签
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
-->
添加阿里云为远程仓库:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
注意:不要将mirror标签写入了注释内部,导致失效。
除了阿里云的远程仓库外,还有以下远程仓库可供参考。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
4 使用Idea,每次运行maven构建工程都报错
检查发现每次pom.xml都报红,发现是由于本地仓库配置仍采用默认仓库所导致。
选择File–>other settings–>default settings–>build,execution,deployment–>build tools–>maven,重新设置本地仓库即可。
5 IDEA执行maven命令控制台中文输出为乱码
查找:settings–>build,execution,deployment–>build tools–>maven–>runner
VM Options设置为:-Dfile.encoding=GB2312 即可
6 无法获取依赖,手动下载jar包,如何部署到本地仓库
将本地jar包放入本地仓库。只需执行如下命令即可:
mvn install:install-file -Dfile=D:/demo/fiber.jar -DgroupId=com.sure -DartifactId=fiber -Dversion=1.0 -Dpackaging=jar
根据jar包的实际情况更改上述参数,打开本地maven仓库所在目录即可看到被添加的本地jar包。
7 使用maven自带tomcat引发的兼容性问题
maven中内嵌的是tomcat6,有可能会和JDK不相容。可以只用插件,使用tomcat7或更高版本。
<build>
<!--maven插件-->
<plugins>
<!--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>
</configuration>
</plugin>
<!--tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<!-- tomcat7的插件, 不同tomcat版本这个也不一样 -->
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 通过maven tomcat7:run运行项目时,访问项目的端口号 -->
<port>80</port>
<!-- 项目访问路径 本例:localhost:9090, 如果配置的aa, 则访问路径为localhost:9090/aa-->
<path>/travel</path>
</configuration>
</plugin>
</plugins>
</build>
8 添加依赖时出现依赖冲突
可以在依赖中使用exclusions标签,去除冲突的依赖。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
<exclusions>
<exclusion>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
9 依赖已经导入,但无法导包
(1)导入依赖时,出现unknown红色告警。检查本地库,发现有unknown文件夹产生。删除unknown,重新导入,仍然显示unknown红色报警。
(2)再次删除unknown文件夹,选择手动部署jar包到文件夹,重新导入依赖。
(3)依赖不再显示红色告警,但是import导包却无法成功。
(4)检查项目的external library,显示包已经导入,但是查看maven projects中的依赖,无法点击查看子包。
(5)重启计算机,删除本地库依赖的文件夹,重新导包,成功。
10 Idea中无法使用switch case
检查IDEA的项目和模块SDK都是JDK1.5以上版本,但是swtich代码飘红,显示只支持byte,char,short和int类型。出现以上原因是因为使用了maven构建项目,而maven默认的JDK是1.5以下的版本。可以查看maven的settings配置文件,有如下的配置:
<profile>
<id>jdk-1.4</id>
<activation>
<jdk>1.4</jdk>
</activation>
</profile>
解决办法:
(1)先解决idea的问题,将项目和模块的SDK版本调整为1.5以上版本
(2)解决maven项目的问题
可以选择配置settings文件,永久更改JDK版本,如下:
<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>
或者临时更改当前maven项目的JDK版本,只需要添加如下依赖:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
将maven中使用的JDK版本更改为IDEA使用的版本即可。