我有一个复杂的Maven项目,它有一个父文件夹与父pom.xml
和子项目的一些子文件夹,每个子项目都有自己的pom.xml
。
当我从SVN存储库'作为maven项目'签出父文件夹时,它在工作区中正确显示为每个单独的项目。
但是现在我从项目的其他分支中检出了父文件夹。我想以相同的方式将此父文件夹添加到当前工作空间。所以我只选择Import > Maven project
,从svn得到与checkout相同的对话框,Eclipse找到所有具有适当层次结构的pom文件,并要求我给父项目提供其他名称,因为alredy存在相同的名称(项目的截断版本) ,我给它别的名字。但是在导入之后我在eclipse中只将父文件夹作为maven项目,所有其他子项目都很简单,位于父项目下作为其子文件夹。
那么,我该如何正确导入这样的项目呢?我只想将所有子项目创建为maven项目。
答案 0 :(得分:9)
Eclipse不允许一个项目多次导入,在您的情况下从trunk和分支导入。 This article显示了如何使用自定义maven配置文件绕过此限制。基本上,步骤是:
将以下个人资料添加到您的父级pom.xml
<profiles>
<!-- Specific profile used to append a string to project name -->
<profile>
<id>append-to-project-name</id>
<activation>
<property>
<name>append.to.project.name</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<projectNameTemplate>
[artifactId]-${append.to.project.name}
</projectNameTemplate>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
在将项目导入Eclipse之前,让maven生成项目设置:
mvn eclipse:eclipse -Dappend.to.project.name = [your-branch-name]
将项目作为现有项目(而非maven项目)导入Eclipse。
这应解决命名问题。
至于子项目的导入:我还有一个带有子子项目的父maven项目,并使用Ecplise的m2e插件。当我选择Import > Existing Maven Project
时,我可以检查父母和孩子。导入后,我同时拥有父项目和每个子项。屏幕:
所以我希望结合上面的命名解决方案可以解决你的问题。
答案 1 :(得分:3)
为了从SCM(无论是SVN,Git还是任何其他SCM)导入复杂(或实际上任何)Maven项目,我使用以下方法:
文件 - &gt;导入 - &gt;从SCM查看Maven项目
如果没有将特定于IDE的文件提交给SCM,则效果最佳。它将导入所有嵌套项目,或者您可以选择要导入的项目。它完全依赖于Maven设置来确定正在创建的项目的性质,因此,假设POM文件是正确的,您最终可以完成所有配置。
您可能需要安装附加组件,以便m2eclipse可以访问您选择的SCM。
答案 2 :(得分:0)
我想可能存在一些工作空间问题。您可能已经在工作区本身检出了项目(不确定如此原谅)。 您可以做的是,尝试在其他驱动器中检出您的项目,然后导入父项目。您将再次看到所有POM以分层方式对齐,然后我想,您将不会被要求输入父项目的名称,这将起到作用。
答案 3 :(得分:0)
删除已签出为Maven项目的项目,然后简单地检查父项目(而不是Maven项目),然后将子模块导入为现有Maven项目。确保它们在父POM中列为子模块。