java - Maven + Java 包声明

标签 java maven package

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

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

最佳答案

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

Maven 编译器插件内部使用 Plexus Compiler API ,你可以在这两个类中找到相关代码:

关于java - Maven + Java 包声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13414638/

相关文章:

java - Selenium 和 JUnit 在多个驱动程序中并行执行测试方法

oracle - 重新编译 Oracle Packages 安全吗

java - 对于循环整数和字符串变量?

java - 参数 'sourceEncoding' rpm-maven-plugin 丢失或无效

java - Intellij Idea 社区不断卡住,Maven 项目长时间卡在读取 pom.xml 上

java - 为什么不使用所有进口?

c++ - 在 omnetpp 中定义模块时出现问题

Java Socket - 具有指定地址的 UnknownHostException

java - @ExceptionHandler 响应在 Tomcat 中不起作用

maven - 如何从 go lang 代码运行 maven 构建