【问题标题】:How to correctly version control (svn:ignore) a Java project (Maven, Spring)?如何正确地对 Java 项目(Maven、Spring)进行版本控制(svn:ignore)?
【发布时间】:2011-06-10 09:13:43
【问题描述】:

我参加了为期 2 天的介绍 Java EE 的培训。我们在那里使用了 Java EE、Spring Framework、Maven、Springsource Tool Suite (Eclipse)、Tomcat。

我使用了我们在那里创建的 Eclipse 工作区并在我的工作 PC 上运行它。如果我没记错的话,我只需要正确配置 Tomcat,它就可以在我的 PC 上运行。

现在我想在 subversion 中保存创建的包含 5 个“子”项目的 Eclipse 工作区,以便我的工作同事可以将其签出给他们并在他们的计算机上运行它。

如何正确地做到这一点?我在某处发现了一个 svn:ignore 规则:

.classpath
.project
.settings
target

使用 tortoiseSVN 我将这个忽略规则添加到带有工作区的文件夹中,但发现底层文件夹目标没有被删除,所以我手动删除了它们并“添加到忽略列表”。但在那之后,spring 源工具套件中的项目没有看到 mevan 依赖项(我认为是这样),因为导入被破坏了。 STS 强调 org.在进口和说它不能解决这个问题。

我如何正确地控制这样一个项目?

【问题讨论】:

    标签: java svn spring maven ignore


    【解决方案1】:

    在我的项目中,我们使用 Maven 和 Eclipse(目前是 Helios)以及 Eclipse 的 Maven 插件:

    Eclipse 的 Maven 集成 WTP 的 Maven 集成

    我们的版本控制系统中只有 pom.xml 文件和 src/ 目录树。我们确保 在那里添加 eclipse 文件。然后,当新开发人员开始在项目中时,他们会执行 Import -> Maven -> Existing Maven Projects。 Eclipse 的 Maven 插件然后设置完美的构建路径、设置等。

    这种方式也很容易根据需要将您的项目重新导入 Eclipse。

    所以,我的建议是将 Eclipse 文件排除在 SVN 之外,并确保您只需导入 Maven 项目即可自动正确设置项目。

    【讨论】:

    • 我试过这个方法,除了一件事之外,它似乎大部分都可以:我在我的项目中添加了一个 spring bean,STS 将 Spring Bean 配置文件 (SpringBeans.xml) 添加到 /src 目录。除非我右键单击 src 文件夹并选择 Build Path -> Use as source folder,否则项目不会编译,这会在 .classpath 中添加一行。那么 .classpath 是否要进行版本控制,或者 spring bean 配置文件应该放在其他地方吗?
    • 尝试将 SpringBeans.xml 放入 src/main/resources。这将是默认使用 Maven 构建路径的一部分。
    • 我没有这个文件夹。我使用 Maven Quick Start Archteype 创建了一个 Maven 项目。我必须手动创建这个文件夹还是应该由 STS 创建?
    • 嗨,我没有资源文件夹。我为我的项目使用了 Maven 快速入门原型,它不创建资源文件夹。我如何手动正确添加它。我猜想以某种方式通过 pom.xml 使其不在 .classpath 中存储。
    • 好的,我手动创建了 z 新的源文件夹。 Maven 有一个默认的资源文件夹路径含义:src/main/resources。现在我只能对 pom.xml 和 src 文件夹进行版本控制。我想我现在可以安全地接受这个答案了。
    【解决方案2】:

    如果我以正确的方式理解您的问题,您需要配置 Eclipse 以便能够从中启动 tomcat。我认为这里的关键不再是 maven,而是 Eclipse。由于您在工作区中进行了无法放入 maven 配置文件(pom.xml)的修改,因此您将成为“Eclipse 依赖”。

    这里的关键是,由于您依赖于 Eclipse,因此您需要 Eclipse 配置文件才能工作。因此,恐怕您需要将.classpath.project.settings 添加到您的版本控制工具中......这不是通用的,因为您强迫从事您项目的人使用 Eclipse。但是,如果您团队中的每个人都这样做,那应该不是问题。

    由于我不再使用 Eclipse,我不知道对这些文件进行版本控制是否会导致问题。但是,我希望这个答案能帮助您重新配置您的项目......

    编辑:更准确...也许给出更好的答案。

    使用版本控制系统时,主要目标通常是(总是?)提供使用源代码的所有密钥,并从中进行开发。因此,您需要在您的 VCS 中放入您的源代码,以及有效使用它们所需的所有配置。

    在您的具体情况下,关键是您已经通过其 Springsource Tool Suite 插件依赖于 Eclipse。因此,为这个工具添加配置文件变得很重要,因为没有它们它们就无法工作,如果它们不能工作,你就不能工作。

    【讨论】:

    • 感谢您的回答。我希望我不依赖于 Eclipse,我不想成为。我们在培训中被告知使用 Maven 使我们独立于 IDE。但我忘了问如何对这样的项目进行版本控制。现在我在尝试它并不能这样做,所以我在这里问。
    • 我认为,在大多数使用它的项目中,它是 maven 的最大作用之一。对 Eclipse 的依赖可以通过 STS 创建,但是......我认为确实如此,因为当你删除 Eclipse conf 文件时出现了问题......在某些方面这是合乎逻辑的,因为你运行 tomcat 的方式(如果我理解正确,我不是 JEE 专家)直接链接到 STS 和 Eclipse。但我可能错了。
    【解决方案3】:

    我可以告诉你我颠覆 maven eclipse 项目的方式。 首先,当您创建项目结构时,您必须将 .setting、.classpath、.project 文件提交到 subversion 存储库中。如果您不能这样做,其他同事将无法在结帐后使用该项目结构。提交项目结构后,最好不要提交这些文件,除非你更改了重要的 eclipse 或构建路径设置,因为其他文件会因系统相关信息而发生冲突。 永远不要提交 maven 目标目录。对不起我的英语不好。希望对您有所帮助。

    【讨论】:

    • 实际上你在共享一个maven项目时不需要.settings、.classpath或.project。如果将项目作为 Maven 项目导入 Eclipse,则会自动生成这些文件。
    • 但是如果使用 subclipse 进行 checkout,eclipse 会自动打开项目,这与导入现有的 maven 项目不同。所以如果你想用eclipse签出项目,我认为这些文件必须提交。
    • 嗯,很棘手。我想我更喜欢使用单独的 SVN 应用程序(例如,如果您使用 Windows,则使用 TortoiseSVN)检查项目,然后将项目作为 Eclipse 中的 Maven 项目导入。您仍然可以访问 Subclipse 功能,只是不是为了初始签出,并且您获得了不必对项目文件进行版本管理的优势。但是,是的,有点缺点。
    猜你喜欢
    • 2023-02-11
    • 2015-03-08
    • 2018-02-16
    • 2019-11-03
    • 2020-02-27
    • 2010-09-13
    • 2017-03-10
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多