如何正确导入maven项目以进行日食?

时间:2013-06-07 10:50:17

标签: eclipse maven maven-2

我有一个复杂的Maven项目,它有一个父文件夹与父pom.xml和子项目的一些子文件夹,每个子项目都有自己的pom.xml

当我从SVN存储库'作为maven项目'签出父文件夹时,它在工作区中正确显示为每个单独的项目。

但是现在我从项目的其他分支中检出了父文件夹。我想以相同的方式将此父文件夹添加到当前工作空间。所以我只选择Import > Maven project,从svn得到与checkout相同的对话框,Eclipse找到所有具有适当层次结构的pom文件,并要求我给父项目提供其他名称,因为alredy存在相同的名称(项目的截断版本) ,我给它别的名字。但是在导入之后我在eclipse中只将父文件夹作为maven项目,所有其他子项目都很简单,位于父项目下作为其子文件夹。

那么,我该如何正确导入这样的项目呢?我只想将所有子项目创建为maven项目。

4 个答案:

答案 0 :(得分:9)

Eclipse不允许一个项目多次导入,在您的情况下从trunk和分支导入。 This article显示了如何使用自定义maven配置文件绕过此限制。基本上,步骤是:

  1. 将以下个人资料添加到您的父级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>
    
  2. 在将项目导入Eclipse之前,让maven生成项目设置:

    mvn eclipse:eclipse -Dappend.to.project.name = [your-branch-name]

  3. 将项目作为现有项目(而非maven项目)导入Eclipse。

  4. 这应解决命名问题。


    至于子项目的导入:我还有一个带有子子项目的父maven项目,并使用Ecplise的m2e插件。当我选择Import > Existing Maven Project时,我可以检查父母和孩子。导入后,我同时拥有父项目和每个子项。屏幕:

    project import imported projects

    所以我希望结合上面的命名解决方案可以解决你的问题。

答案 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中列为子模块。