Maven,包不存在

时间:2013-03-05 00:53:34

标签: java maven intellij-idea

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

8 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:5)

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

mvn idea:idea
在IntellijIDEA Maven控制台上

重置这些文件对我来说很成功。另请参阅: Package doesn't exist error in intelliJ

答案 2 :(得分:3)

对于任何挣扎于此并且不熟悉java的人,请确保所述包存在于本地存储库中。 Maven有一个本地存储库let withLog = func => (...args) => { console.log(...args); return func(...args); }; let add = (x, y) => x + y; withLog(add)(2, 3); // outputs '2 3', returns 5 ,其中安装了软件包以进行本地访问,因此即使您的依赖包在~/.m2中被正确声明为依赖项并且已编译并存在于您的项目中,如果它不存在存在于本地存储库中,pom.xml将触发mvn compile错误。

解决此问题:

在缺少的包文件夹中,执行:

"package does not exist"

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

mvn install //--> this will package and install your missing package in the local repo

答案 3 :(得分:1)

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

我希望这可能有所帮助。

答案 4 :(得分:1)

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

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

希望能帮助从搜索引擎中获得此问题的人。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

对我来说问题出在我的pom.xml中的 sourceDirectory testSourceDirectory 节点。 我正在使用

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

并将其更改为

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

答案 7 :(得分:-1)

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