我正在尝试在包含源代码的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中作为依赖项添加的项目中的软件包。
答案 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>
对于我来说,文档对于该元素的正确格式是不是很清楚(例如我以前尝试指定整个包名,但是失败了),所以你可能需要尝试一下。