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