11

我们有一个带有Java文件的Maven项目(打包为 JAR) 。最近向该项目添加了一个新的Java源文件。添加 Java 文件的路径与其包声明不匹配。正如预期的那样,Eclipse 在类中显示了不匹配的错误。但是,Maven 可以很好地构建项目。在生成的 JAR 文件中,.class 文件位于包声明指示的路径中。我们尝试将 Java 源文件移动到其他不正确的文件夹(即与包声明不同),但每次 Maven 构建项目都很好。

那么,Maven 会忽略 .java 文件所在的实际目录吗?它只考虑包声明吗?

4

1 回答 1

9

Maven 编译器插件在内部组装了一个命令行调用,其中包含传递给 javac 的参数,每个源文件一个参数(使用javac 调用sourcefiles版本)。它确实传递了实际的源文件夹,也用于注释处理等元功能,但是当单个源文件传递给 javac 时,这些优先,编译器没有有效的方法来找出哪个文件属于哪个源文件夹,因此不能t 验证包结构。

Maven Compiler Plugin 内部使用Plexus Compiler API,您可以在这两个类中找到相关代码:

于 2012-11-16T10:42:17.820 回答