Maven报错“No Sources to Compile”
文章目录
本人第一次运行Maven项目,踩了不少雷,在此记录方便日后查看。
项目介绍
跟着慕课上的视频学习Maven,敲得HelloMaven。
目录结构是这样的
-demo
POM.xml
|-src
|-main
|-resources
|-java
|-package
|-com
|-imooc
|-www
HelloWorld.java
|-test
|-resources
|-java
|-package
|-com
|-imooc
|-www
HelloWorldTest.java
HelloWirld.java
package com.imooc.www;
public class HelloWorld{
public String sayHello(){
return "Hello World!";
}
}
HelloWorldTest.java
package com.imooc.www;
import org.junit.*;
import org.junit.Assert.*;
public class HelloWorldTest{
@Test
public void testsayHello(){
Assert.assertEquals("Hello World!",new HelloWorld().sayHello());
}
}
POM.xml
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <!-->maven版本</-->
<groupId>com.imooc.www</groupId> <!-->项目的包名</-->
<artifactId>demo-module</artifactId> <!-->模块名</-->
<version>0.0.1-SNAPSHOT</version> <!-->版本</-->
<dependencies>
<dependency> <!-->相关的依赖,这里需要Junit</-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<properties>
<!-->指定使用UTF-8</-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-->编译和运行时指定使用的JDK版本,这里我用的是最新的11</-->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</project>
问题一:“No Sources to Compile”
当第一次在命令行输入:mvn compile,敲入回车,看着它一直在下载jar包,还以为第一次就成功运行了,心里美滋滋的。结果没多久就告诉我“No Sources to Compile”
报错如下:
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\学习\Maven\demo\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo-module ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo-module ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\学习\Maven\demo\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ demo-module ---
[INFO] No sources to compile
解决:
出现了这个原因应该是项目目录结构的问题。
在一个Maven项目中必须要有‘’src“目录和”POM.xml“文件,这两个是同一个层次的。其次在”src“目录下必须存在”main“和”test“目录。在”main“和”test“目录下有必须要有”java“目录。剩下的就可以自己定义包名,项目名了。
几点注意
- 文件目录区分大小写。“java”和“Java”是不同的
- 注意拼写错误,我就是将“src”写成了“sre”
问题二:平台使用“GBK”而保存的java文件却是“UTF-8”
相信细心的同学在上一个问题的报错相信中注意到了还存在一个警告
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
解决:
出现这问题的原因就是平台使用“GBK”而保存的java文件却是“UTF-8”。
所以只需要在POM.xml文件中加上
<properties>
<!-->指定使用UTF-8</-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
问题三:“不再支持目标选项 1.5。请使用 1.6 或更高版本。”
解决:
这个问题就很好解决了
只需要指定JDK5以上的版本就行
同样在POM.xml文件中加上指定JDK的语句
<properties>
<!-->编译和运行时指定使用的JDK版本,这里我用的是最新的11</-->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
解决以上问题,终于可以mvn test了!
mvn test运行成功的信息
T E S T S
-------------------------------------------------------
Running com.imooc.www.HelloWorldTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.051 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.110 s
[INFO] Finished at: 2019-06-08T13:24:21+08:00
[INFO] ------------------------------------------------------------------------