我们有一个带有 Java 文件的 Maven 项目(打包为JAR)。最近在此项目中添加了一个新的 Java 源文件。添加Java文件的路径与其包声明不匹配。正如预期的那样,Eclipse在类中显示错误的错误。但是,Maven很好地构建了这个项目。在生成的JAR文件中,.class文件存在于包声明指示的路径中。我们尝试将Java源文件移动到其他不正确的文件夹(即与包声明不同),但每次Maven构建项目都很好。
那么,Maven是否忽略了.java文件所在的实际目录?它只考虑包裹声明吗?
答案 0 :(得分:9)
Maven编译器插件在内部组装一个命令行调用,其中包含传递给javac的参数,每个源文件一个参数(使用the sourcefiles
version of the javac call)。它确实传递了实际的源文件夹,也用于注释处理之类的元功能,但是当单个源文件传递给javac时,这些优先级并且编译器没有有效的方法来找出哪个文件属于哪个源文件夹,因此可以' t验证包结构。
Maven编译器插件在内部使用Plexus Compiler API,您可以在这两个类中找到相关代码: