1

不是一个很好的标题,我会尝试解释。

这已经工作了几个月,然后今天由于某种未知的原因,当一切都没有改变(真的!)时,eclipse 无法解决来自兄弟姐妹(对等项目)的任何导入。没有 eclipse 或 eclipse 插件更新,没有源代码更改,没有配置更改。

我有一个相当标准的项目结构:

父项目
-- clild_project_a
---- pom.xml
-- clild_project_b
---- pom.xml
--child_project_c
---- pom.xml
-- pom.xml(用于父级)。

现在项目 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 中的所有导入语句都是从项目 c 导入的:

package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;

这给出了:

The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.

我尝试了以下操作:

  • 对所有孩子和父母进行 maven clean (使用右键单击-> run as-> maven clen。
  • 对所有项目做一个maven更新依赖
  • 在每个项目上做一个 Maven 包。
  • 在所有项目上执行 m2 maven->“更新项目配置”。
  • 重启日食。
  • 重新启动计算机。

注意 1,在 eclipse 中,我有 4 个单独的项目,每个孩子一个,一个给父母。三个子项目也被签入SVN,但我无法轻松签入父项目,因为它下面有子项目文件夹。
注意 2,我对 ant 了解很多,但我是 maven 的菜鸟,但到目前为止还没有遇到任何问题。例如,我不知道 maven 是否告诉 eclipse 使用依赖项目的源代码,或者它是否必须不断地将 jar 编译到本地 m2 存储库中,并且依赖项目使用它。
注意 3,所有其他(外部)依赖都可以。
注意 4,我检查了“解决工作区项目的依赖关系”是否已选中。
注 5,在 ecipse java 构建路径对话框中,它所依赖的对等项目似乎不在“源”、“项目”或“库”选项卡中。库有一个“maven 依赖”子树,但在树下只是像 log4j 这样的外部 jar。

4

3 回答 3

1

mvn clean install如果您从命令行而不是在 Eclipse 中对父 pom执行操作,它是否有效?这将排除两件事:

  1. 是否是日食问题
  2. 您的问题是否与您使用package而不是install

我注意到您正在使用 Maven 包目标。通常,您应该始终在本地计算机上做mvm clean install而不是mvn clean package工作。如果您不使用 install 目标,则项目 C 永远不会安装到您的本地存储库(默认情况下在 $HOME/.m2/repository 或 Windows 中的等效项),因此项目 A 将无法引用和 B。

如果做不到这一点,请进入您的 $HOME/.m2/repository 并检查项目 c 的实际安装的 .jar/.pom。它的目录路径将对应于它的 maven 坐标(例如 com/mydomain/ge/child_project_c/0.0.1-SNAPSHOT)。确保 jar 中包含您期望的类,并确保安装在它旁边的 pom 看起来像源存储库中的那个。

于 2010-08-13T13:31:58.357 回答
0

还不能发表评论,但 m2eclipse 不应该解析工作区项目,而不是将它们安装到本地存储库并从那里解决它们吗?

于 2010-10-14T14:40:20.207 回答
0

我发现,mvn 对里面的内容非常挑剔build.properties!我遇到了同样的问题,必须注意

  1. 两者source.. = src/output.. = bin/正确输入。
  2. bin.includes = META-INF,/.正确输入。

在我解决这个问题之后, mvn clean install 确实像一个魅力!@whaley,感谢它的提示$HOME/.m2/repository实际上让我看到由于上述原因,jar 中的文件确实丢失了!

于 2013-07-01T11:43:44.727 回答