【问题标题】:Maven, package does not existMaven,包不存在
【发布时间】:2013-02-19 06:30:15
【问题描述】:

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

【问题讨论】:

    标签: java maven intellij-idea


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      对于遇到此问题且不熟悉 java 的任何人,请确保所述包存在于您的本地存储库中。 Maven 有一个本地存储库~/.m2,其中安装了包以供本地访问,因此即使您的依赖包在pom.xml 中正确声明为依赖项并且已编译并存在于您的项目中,如果它不存在于本地存储库中,mvn compile 将触发 "package does not exist" 错误。

      解决这个问题:

      在丢失的包文件夹中,执行:

      mvn install //--&gt; this will package and install your missing package in the local repo

      然后在你想要编译的项目中:

      mvn compile // --&gt; now that the missing package is in the local repo it should work

      【讨论】:

      • 谢谢,这对我有帮助 - 我有 1 个项目依赖于其他 7 个项目,mvn 找不到它们。我将它们全部转换为 maven 项目,安装了 mvn - 现在原始项目可以正确编译!
      【解决方案3】:

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

      mvn idea:idea
      

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

      【讨论】:

        【解决方案4】:

        如果我错了,请纠正我。我知道 common 是一个 POM,它定义了几个依赖于其他模块的意图。 Importing Dependencies 可以满足您的要求。

        例如

        <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>
        

        我希望这会有所帮助。

        【讨论】:

        • 试过了,没用,可能是另一种情况。谢谢你的帮助。
        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

            改成

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

            【讨论】:

              【解决方案8】:

              您需要将 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

              【讨论】:

                猜你喜欢
                • 2018-12-23
                • 2021-08-10
                • 2019-02-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-06-19
                • 1970-01-01
                相关资源
                最近更新 更多