java Maven,包不存在

wnavrhmk  于 2023-02-02  发布在  Java
关注(0)|答案(9)|浏览(174)

我有一个模块,它的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)和命令行中都试过了。有什么想法吗?谢谢

juzqafwq

juzqafwq1#

使用IntellijIDEA时,生成的文件可能会导致此问题。

mvn idea:idea

在IntellijIDEA Maven控制台上重置这些文件对我来说很有用。另请参见:Package doesn't exist error in intelliJ

qxsslcnc

qxsslcnc2#

从您的示例中,我们看不到任何包含您正在使用的包com.mycompany.common.objects的工件。
您正在添加依赖项com.mycompany.Common:common作为POM(并且您也正在声明com.mycompany.Common:common的打包为POM)。如果它实际上是一个包含您需要使用的包的JAR工件,则从POM和依赖项中删除packaging(这意味着使用默认值JAR)。

ht4b089n

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

hfwmuf9z

hfwmuf9z4#

如果我说错了,请纠正我。我知道 common 是一个 POM,它定义了几个依赖项,打算被其他模块使用。导入依赖项可能符合您的要求。
例如

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.mycompany.Common</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我希望这能有所帮助。

8iwquhpp

8iwquhpp5#

我最近遇到了同样的问题。我的项目中的所有东西都正确地设置了依赖项等。我尝试删除/target目录,但没有任何效果。
最后,我解决了这个问题,从我的依赖项目中移除模块依赖,然后重新写入依赖。不确定后台是怎么回事,但一定是对类路径进行了某种刷新。也许这个问题是由于Maven的设置。
希望它能帮助那些从搜索引擎中找到这个问题的人。

xmd2e60i

xmd2e60i6#

不确定是否有文件损坏或什么,但在确认正确的pom配置后,我能够解决这个问题,方法是从我的本地m2存储库中删除jar,强制Maven在我运行测试时再次下载它。

u0njafvf

u0njafvf7#

对我来说,问题出在pom.xml中的sourceDirectorytestSourceDirectory节点上。

<sourceDirectory>${basedir}/src/test</sourceDirectory>
<testSourceDirectory>${basedir}/test</testSourceDirectory>

并将其更改为

<sourceDirectory>../src/test/java</sourceDirectory>
<testSourceDirectory>../src/test/java</testSourceDirectory>
laik7k3q

laik7k3q8#

您的IDE(在我的例子中是Eclipse)可能无法区分编译和运行时作用域。这意味着IDE将允许您在代码中使用运行时作用域依赖项,但maven不会。在这种情况下,将依赖项作用域从运行时更改为编译。

h7appiyu

h7appiyu9#

你需要添加maven插件到(每一个)子模块(编译主和测试源)

<plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
     <plugins>

然后将插件管理添加到父pom中,用于集中插件配置(版本...)

<pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
         </pluginManagement>

然后可以将依赖项添加到依赖模块pom中

<dependency>
        <groupId>com.mycompany.Common</groupId>
        <artifactId>common</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>pom</type>
</dependency>

http://www.jouvinio.net/wiki/index.php/Projet_Maven_multi-modules

相关问题