Java 对于IntelliJ Builder中的任意包列表,选择一个依赖项作为先例
目标 我试图让我的maven项目在编辑代码时使用Java 对于IntelliJ Builder中的任意包列表,选择一个依赖项作为先例,java,maven,intellij-idea,intellij-plugin,Java,Maven,Intellij Idea,Intellij Plugin,目标 我试图让我的maven项目在编辑代码时使用IntelliJbuilder,因为IDE提供了快速重建和热部署功能,可以加快我的工作。然而,由于我的maven项目是如何设置的,我遇到了一个障碍 约束 我必须按照使用maven的方式使用它。解决方案必须位于IntelliJ 请注意,创建IntelliJ插件是一个选项。我意识到由于IntelliJbuild配置的限制,这可能是必要的 问题 我的项目依赖于两个库,SharedLibA和SharedLibB,它们包含com.shared包SharedL
IntelliJ
builder,因为IDE提供了快速重建和热部署功能,可以加快我的工作。然而,由于我的maven项目是如何设置的,我遇到了一个障碍
约束
我必须按照使用maven的方式使用它。解决方案必须位于IntelliJ
请注意,创建IntelliJ
插件是一个选项。我意识到由于IntelliJ
build配置的限制,这可能是必要的
问题
我的项目依赖于两个库,SharedLibA
和SharedLibB
,它们包含com.shared包SharedLibA
是一个新库,sharedLibB
是一个旧库SharedLibA
和SharedLibB
包含我的项目所需的其他包中不包含的包。他们都拥有的包com.shared也是项目所需要的。然而,SharedLibB
是遗留的/旧的,所以我们总是希望Tomcat优先考虑com.shared中类的实现,而不是SharedLibB
中类的实现。我们通过一个maven目标来实现这一点,即在打包WAR时,将com.shared包下的类从SharedLibA
提取到WEB-INF/classes
当我试图在IntelliJ
中构建我的项目时,它在com.shared.*中选择了错误的类实现,并抛出编译错误,尽管编译通过maven可以完美地工作。我被这个僵化的mavenhackjob
束缚住了,但我仍然想找到一种方法,让IntelliJ
明白我想要SharedLibA的
com.shared.*编译中使用的类不是SharedLibB的
。我无法从考虑中删除SharedLibB
,因为我需要SharedLibB
中的其他类来编译我的项目
所需解决方案
我在寻找类似“当考虑com.shared.*类时,选择SharedLibA
”或“当类路径解析中发生任何包冲突时,优先排序SharedLibA
”,因为我非常确定SharedLibA
应该在任何包冲突中优先排序
谢谢
我希望这能很好地解释这一点,提前感谢所有在此插话的人。您应该尝试转到您的项目“.IML”文件,然后: 您可以创建或修改模块 在其中,您可以包括或排除LIB或定义其使用优先级 你可以用这个片段来激发灵感
...
...
...
基于依赖项IDE类路径和构建路径。它还考虑-将使用与给定类匹配的第一个依赖项
对于基于Maven的项目,依赖项列表及其顺序IDE取自模块的Maven pom.xml文件。因此,您可以在pom.xml文件中设置顺序
另一个提到的选择是。但是更好的解决方案是正确配置Maven build。最好的解决方案是对Maven项目或其依赖项进行更改。你为什么排除这个可能性?