我读到了maven-compiler-plugin
。在链接页面上,它告诉:
目前,编译器插件与
javac
编译器工件捆绑在一起,其中artifactIdplexus-compiler-javac
可以看作是编译器插件POM中声明的依赖项之一
根据我的理解,我们不再需要本地javac
了,比如在我的本地操作系统上,仅仅JRE
而不是JDK
就足够了。
我确实尝试删除JDK
并仅在我的本地系统上安装了JRE
。但是,当我尝试使用命令maven
使用mvn clean compile
进行编译时,出现了错误消息 -
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
有人可以解释为什么会这样吗?可能我的理解是错的?
答案 0 :(得分:2)
Plexus编译器
Plexus编译器是使用不同编译器的Plexus组件 通过统一的API。
与此插件的名称相反,Compiler Plugin不会自行编译项目的来源。
因此,plexus-compiler-javac
工件必须被视为要编译的wrapper
没有声明它包含javac
程序。
确切地说,从3.0版本开始,默认情况下不会直接javac
使用javax.tools
(更具体地说是javax.tools.JavaCompiler
)。
maven-compiler-plugin
文档确实说明了:
从3.0开始,默认编译器是 javax.tools.JavaCompiler (如果你 正在使用java 1.6)并用于编译Java源代码。如果你想 要使用
javac
强制插件,您必须配置插件选项 forceJavacCompilerUse
你必须明白,Maven核心插件不会重新发明轮子并猜测你需要什么
要编译java类,您需要一个Java编译器,通常您希望能够确保使用特定的Java编译器作为操作系统和Java版本。
所以maven编译器插件需要并使用JDK。
答案 1 :(得分:1)
Maven不是java编译器。 Maven为您运行java编译器并配置所有路径。
运行mvn -X compile时,您将看到编译器的详细信息。
总之:你需要安装一个java编译器来编译java - 即使maven为你启动编译器。