Maven忽略无法找到特定包的符号

时间:2014-08-29 17:23:49

标签: java maven

我正在尝试在包含源代码的maven项目上使用maven package,该项目位于我的本地计算机上。我已将它们作为依赖项添加到我的IDE中(在我的案例中为IntelliJ),但是每当我尝试构建我的项目时,它都会给我错误消息

/location/to/package/and/Class.java:[##,##] error: cannot find symbol
symbol: variable SomeRandomClass
location: class SomeClassThatTheVariableWasLocatedIn

我要问的是,是否有办法制作特定的包装,例如my.package以及来自(包括子包)的所有内容,来自生成错误。

PS:需要排除的软件包应该是未在Maven中作为依赖项添加的项目中的软件包。

2 个答案:

答案 0 :(得分:1)

没有办法做到这一点。

Java编译器(而不是Maven)抱怨丢失的符号。它根本无法编译引用缺少的包的类。 Java语言不允许这样做。编译代码时,缺少的符号 可用。

您有三种选择:

  • 创建一个新的maven工件以包含“缺失”的包,并将依赖项添加到需要它们的其他模块。

  • 将“缺失”包移动到现有模块中。

  • 不要尝试构建缺少依赖项的类。

答案 1 :(得分:0)

如果您想跳过编译某些源文件(例如,在源代码中是可选的并且由于外部依赖性而失败),您可以尝试使用maven-compiler-plugin的{​​{3}}。

即。以下将排除(源)文件夹sunshine/web/shaker/commons/下的任何内容(它甚至从IDE中的项目中删除):

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>sunshine/web/shaker/commons/**</exclude>
                </excludes>
            </configuration>
        </plugin>

对于我来说,文档对于该元素的正确格式是不是很清楚(例如我以前尝试指定整个包名,但是失败了),所以你可能需要尝试一下。

相关问题