不是很好的标题,我会尝试解释。
这已经工作了几个月,然后今天由于某种未知的原因,当没有任何改变时(真的!),eclipse无法解决兄弟姐妹(对等项目)的任何进口。没有eclipse或eclipse插件更新,没有源代码更改,没有配置更改。
我有一个相当标准的项目结构:
parent_project -- clild_project_a ---- pom.xml -- clild_project_b ---- pom.xml -- child_project_c ---- pom.xml -- pom.xml (for parent).
现在,项目a和b都依赖于c。
中的代码投射一个pom.xml。
<parent>
<artifactId>parent_project</artifactId>
<groupId>com.mydomain.ge</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
...
<dependencies>
<dependency>
<groupId>com.mydomain.ge</groupId>
<artifactId>child_project_c</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
并在父pom.xml中:
<modules>
<module>child_project_a</module>
<module>child_project_b</module>
<module>child_project_c</module>
</modules>
现在在Eclipse中,项目A中的所有import语句都从项目c:
导入package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;
这给出了:
The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.
我尝试了以下内容:
注1 ,在eclipse中我有4个独立的项目,每个孩子一个,父母一个。这三个子项目也被检入SVN,但我不能轻易地检查父项目,因为它下面有子项目文件夹。
注意2 ,我对蚂蚁有很多了解,但对于maven来说是一个菜鸟,但直到现在还没有任何问题。例如我不知道maven是否告诉eclipse使用了从属项目的源,或者它是否必须不断地将jar编译到本地m2存储库中,并且依赖项目使用它。
注3 ,所有其他(外部)依赖都没问题
注4 ,我检查过“解决Workspace项目的依赖关系”
注意5 ,在ecipse java构建路径对话框中,它所依赖的对等项目似乎不在“源”,“项目”或“库”选项卡中。库有一个“maven depedencies”子树,但是只有像log4j这样的外部罐子。
答案 0 :(得分:1)
如果从命令行而不是在eclipse中对父pom执行mvn clean install
,它是否有效?这将排除两件事:
package
代替install
我注意到你正在使用maven包目标。通常,在本地计算机上工作时,应始终mvm clean install
而不是mvn clean package
。如果您不使用安装目标,那么项目C永远不会安装到您的本地存储库(默认位于$ HOME / .m2 / repository或Windows中的equiv),因此项目A将无法引用和B.
如果失败了,请进入$ HOME / .m2 / repository并查看项目c的实际安装的.jar / .pom。它的目录路径将对应于它的maven坐标(例如com / mydomain / ge / child_project_c / 0.0.1-SNAPSHOT)。确保jar中包含您期望的类,并确保安装在它旁边的pom看起来像源库中的那个。
答案 1 :(得分:0)
无法发表评论,但是m2eclipse不应该解析工作区项目而不是将它们安装到本地存储库并从那里解析它们吗?
答案 2 :(得分:0)
我发现,mvn对build.properties
内写的内容非常挑剔!我遇到了同样的问题,不得不小心
source.. = src/
和output.. = bin/
。bin.includes = META-INF,/
和.
已正确输入。我修好后,mvn clean install就像魅力一样! @whaley,感谢$HOME/.m2/repository
的提示,由于上述原因,它实际上让我看到罐子里的文件真的丢失了!