我有一个模块,它的pom文件是:
<groupId>com.mycompany.Common</groupId>
<artifactId>common</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>common module</name>
在这个工件('common ')中,我有一个名为com.mycompany.common.objects的包,在这个消费包中,我的pom文件是:
<dependency>
<groupId>com.mycompany.Common</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
</dependency>
当我运行mvn安装时,它总是抱怨:包com.mycompany.common.objects不存在.
我尝试在类中显式导入,错误是:
import com.mycompany.common.objects
没有运气。我在IDE(IntelliJ)和命令行中都试过了。有什么想法吗?谢谢
9条答案
按热度按时间juzqafwq1#
使用IntellijIDEA时,生成的文件可能会导致此问题。
在IntellijIDEA Maven控制台上重置这些文件对我来说很有用。另请参见:Package doesn't exist error in intelliJ
qxsslcnc2#
从您的示例中,我们看不到任何包含您正在使用的包
com.mycompany.common.objects
的工件。您正在添加依赖项com.mycompany.Common:common作为POM(并且您也正在声明com.mycompany.Common:common的打包为POM)。如果它实际上是一个包含您需要使用的包的JAR工件,则从POM和依赖项中删除
packaging
(这意味着使用默认值JAR)。ht4b089n3#
对于任何在这方面有困难并且不熟悉Java的人,请确保上述包存在于您的本地存储库中,Maven有一个本地存储库
~/.m2
,其中安装了包以供本地访问,因此即使您的依赖包在pom.xml
中被正确声明为依赖项,并且被编译并存在于您的项目中,如果它不存在于本地存储库中,mvn compile
将触发"package does not exist"
错误。要解决此问题:
在缺少的包文件夹中,执行以下操作:
mvn install //--> this will package and install your missing package in the local repo
然后在要编译的项目中:
mvn compile // --> now that the missing package is in the local repo it should work
hfwmuf9z4#
如果我说错了,请纠正我。我知道 common 是一个 POM,它定义了几个依赖项,打算被其他模块使用。导入依赖项可能符合您的要求。
例如
我希望这能有所帮助。
8iwquhpp5#
我最近遇到了同样的问题。我的项目中的所有东西都正确地设置了依赖项等。我尝试删除/target目录,但没有任何效果。
最后,我解决了这个问题,从我的依赖项目中移除模块依赖,然后重新写入依赖。不确定后台是怎么回事,但一定是对类路径进行了某种刷新。也许这个问题是由于Maven的设置。
希望它能帮助那些从搜索引擎中找到这个问题的人。
xmd2e60i6#
不确定是否有文件损坏或什么,但在确认正确的pom配置后,我能够解决这个问题,方法是从我的本地m2存储库中删除jar,强制Maven在我运行测试时再次下载它。
u0njafvf7#
对我来说,问题出在pom.xml中的sourceDirectory和testSourceDirectory节点上。
并将其更改为
laik7k3q8#
您的IDE(在我的例子中是Eclipse)可能无法区分编译和运行时作用域。这意味着IDE将允许您在代码中使用运行时作用域依赖项,但maven不会。在这种情况下,将依赖项作用域从运行时更改为编译。
h7appiyu9#
你需要添加maven插件到(每一个)子模块(编译主和测试源)
然后将插件管理添加到父pom中,用于集中插件配置(版本...)
然后可以将依赖项添加到依赖模块pom中
http://www.jouvinio.net/wiki/index.php/Projet_Maven_multi-modules