17

我有一个模块,其 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 install 它总是抱怨:包 com.mycompany.common.objects 不存在。

我尝试在错误所在的类中显式导入:

import com.mycompany.common.objects

没运气。我在 IDE(IntelliJ)和命令行中都试过了。任何的想法?谢谢

4

8 回答 8

12

从您的示例中,我们看不到任何包含com.mycompany.common.objects您正在使用的包的工件。

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

于 2013-03-05T01:14:21.873 回答
10

对于遇到此问题且不熟悉 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

于 2018-05-18T19:20:50.857 回答
10

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

mvn idea:idea

在 IntellijIDEA Maven 控制台上重置这些文件对我有用。另请参阅: IntelliJ 中的包不存在错误

于 2020-08-09T14:53:07.517 回答
2

请纠正我,如果我错了。我知道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>

我希望这可能会有所帮助。

于 2013-03-05T01:34:31.487 回答
2

我最近遇到了同样的问题。我项目中的所有内容都使用依赖项等正确设置。我尝试删除 /target 目录但没有任何效果。

最后,我通过从依赖项目中删除模块依赖关系然后读取依赖关系来解决它。不确定后台发生了什么,但必须对类路径进行某种刷新。也许问题是由于 Maven 设置造成的。

希望它可以帮助从搜索引擎找到这个问题的人。

于 2013-04-19T07:34:17.417 回答
0

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

于 2014-01-02T16:15:14.193 回答
0

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

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

并将其更改为

<sourceDirectory>../src/test/java</sourceDirectory>
<testSourceDirectory>../src/test/java</testSourceDirectory>
于 2017-03-06T14:42:08.543 回答
-1

您需要将 maven-plugin 添加到(每个)子模块中(用于编译主和测试源)

    <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

于 2020-05-05T21:06:27.993 回答