我正在开发一个包含许多模块的项目。我想有一个命令来构建每个模块并生成Eclipse配置文件,但是当我在父pom上运行mvn eclipse:eclipse
时,Eclipse没有看到依赖项并且给我这个错误:'module2' is missing required Java project: 'module1'
。当我在模块的文件夹而不是父文件夹中运行相同的命令时,它可以正常工作。
项目设置如下,其中module2依赖于模块1。
.
|-- module1
| `-- pom.xml
|-- module2
| `-- pom.xml
`-- pom.xml
这是我在父文件夹中运行mvn eclipse:eclipse
与模块文件夹时的.project和.classpath的比较:
$ diff module_project parent_project
5c5,10
< <projects/>
---
> <projects>
> <project>module1</project>
> </projects>
$ diff module_classpath parent_classpath
15c15
< <classpathentry kind="var" path="M2_REPO/path/to/module1/module1-0.1.jar"/>
---
> <classpathentry kind="src" path="/module1"/>
如果不单独在每个文件夹上运行命令,如何使其正常工作?
顺便说一下,这是我正在使用的版本号。 Eclipse和maven都是在Ubuntu 13.10上使用apt-get安装的。
Eclipse:
Version: 3.8.1
Build id: debbuild
Maven:
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.11.0-15-generic", arch: "amd64", family: "unix"
答案 0 :(得分:0)
如果从父文件夹运行eclipse:eclipse命令,则需要打开两个项目'module1'&amp; 'module2'在同一个工作区中,以便它可以工作。
在第一种情况下:
<classpathentry kind="var" path="M2_REPO/path/to/module1/module1-0.1.jar"/>
如果你想从eclipse运行你的项目'module2',它将在存储库中查找它的依赖'module1',这意味着你在'module1'中所做的任何更改都不可用于项目模块2,直到你安装它在存储库中。
在第二种情况下:
<classpathentry kind="src" path="/module1"/>
您对项目模块1所做的任何更改都将立即用于项目模块2,因为这两个项目直接链接在同一工作区中。