14

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

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

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

那么,我怎样才能导入这样的项目属性呢?我也只想将所有子项目都创建为 Maven 项目。

4

4 回答 4

9

Eclipse 不允许多次导入一个项目,在您的情况下,从主干和分支导入。本文展示了如何使用自定义 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=[你的分支名称]

  3. 将项目作为现有项目(不是 Maven 项目)导入 Eclipse。

这应该解决命名问题。


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

项目导入 导入项目

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

于 2013-06-07T11:16:24.947 回答
3

对于从 SCM(无论是 SVN、Git 还是任何其他 SCM)导入复杂(或实际上任何)Maven 项目,我使用以下方法:

File->Import->Check out Maven Projects from SCM

如果没有 IDE 特定文件已提交到 SCM,则此方法效果最佳。它将导入所有嵌套项目,或者您可以选择要导入的项目。它完全依赖于 Maven 设置来确定正在创建的项目的性质,因此,假设 POM 文件是正确的,您最终会得到正确配置的所有内容。

您可能需要安装附加组件,以便 m2eclipse 可以访问您选择的 SCM。

于 2013-06-07T11:23:25.183 回答
0

我想可能有一些工作空间问题。您可能已经在工作区本身中签出了项目(不确定,请原谅)。您可以做的是,尝试在其他驱动器中检出您的项目,然后导入父项目。您将再次看到所有 POM 以分层方式对齐,然后我想,您不会被要求输入父项目的名称,这样就可以解决问题。

于 2013-06-07T11:10:17.007 回答
0

删除作为 Maven 项目签出的项目,然后简单地签出父项目(不是作为 Maven 项目),然后将子模块导入为现有 Maven 项目。确保它们在父 POM 中列为子模块。

于 2013-06-07T11:17:38.780 回答