Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于IntelliJ Builder中的任意包列表,选择一个依赖项作为先例_Java_Maven_Intellij Idea_Intellij Plugin - Fatal编程技术网

Java 对于IntelliJ Builder中的任意包列表,选择一个依赖项作为先例

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

目标

我试图让我的maven项目在编辑代码时使用
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可以完美地工作。我被这个僵化的maven
hackjob
束缚住了,但我仍然想找到一种方法,让
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项目或其依赖项进行更改。你为什么排除这个可能性?