问题 如何正确版本控制(svn:ignore)一个Java项目(Maven,Spring)?


我正在进行为期两天的Java EE培训。我们在那里使用Java EE,Spring Framework,Maven,Springsource Tool Suite(Eclipse),Tomcat。

我带了我们在那里创建的Eclipse工作区并在我的工作PC上运行它。如果我没记错的话,我只能正确配置Tomcat,它可以在我的电脑上运行。

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

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

.classpath
.project
.settings
target

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

我如何正确版本控制这样的项目?


3274
2018-06-10 09:13


起源



答案:


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

Eclipse的Maven集成 WTP的Maven集成

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

这样,根据需要将项目重新导入Eclipse也非常容易。

因此,我的建议是将Eclipse文件从SVN中删除,并确保只需导入Maven项目即可自动正确设置项目。


14
2018-06-10 14:22



我试过这个approch,除了一件事之外它似乎最好:我在我的项目中添加了一个spring bean,并且STS将Spring Bean配置文件(SpringBeans.xml)添加到了 / src目录 目录。除非我右键单击src文件夹并选择,否则项目将无法编译 构建路径 - >用作源文件夹 它在.classpath中添加了一行。那么.classpath是否要进行版本控制,或者spring bean配置文件是否应该转到其他位置? - Robert Niestroj
尝试将SpringBeans.xml放在src / main / resources中。默认情况下,这将成为构建路径的一部分,使用Maven。 - Daniel Lundmark
我没有这个文件夹。我使用Maven Quick Start Archteype创建了一个maven项目。我是否必须手动创建此文件夹,还是应由STS创建? - Robert Niestroj
嗨,我没有资源文件夹。我已经为我的项目使用了Maven Quickstart Archetype,它没有创建资源文件夹。如何手动正确添加它。我想通过pom.xml以某种方式存储它不存在.classpath。 - Robert Niestroj
好的我手动创建了z新的源文件夹。 Maven有一个默认的资源文件夹路径,意思是:src / main / resources。现在我只能通过版本控制pom.xml和src文件夹。我想我现在可以安全地接受这个答案了。 - Robert Niestroj


答案:


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

Eclipse的Maven集成 WTP的Maven集成

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

这样,根据需要将项目重新导入Eclipse也非常容易。

因此,我的建议是将Eclipse文件从SVN中删除,并确保只需导入Maven项目即可自动正确设置项目。


14
2018-06-10 14:22



我试过这个approch,除了一件事之外它似乎最好:我在我的项目中添加了一个spring bean,并且STS将Spring Bean配置文件(SpringBeans.xml)添加到了 / src目录 目录。除非我右键单击src文件夹并选择,否则项目将无法编译 构建路径 - >用作源文件夹 它在.classpath中添加了一行。那么.classpath是否要进行版本控制,或者spring bean配置文件是否应该转到其他位置? - Robert Niestroj
尝试将SpringBeans.xml放在src / main / resources中。默认情况下,这将成为构建路径的一部分,使用Maven。 - Daniel Lundmark
我没有这个文件夹。我使用Maven Quick Start Archteype创建了一个maven项目。我是否必须手动创建此文件夹,还是应由STS创建? - Robert Niestroj
嗨,我没有资源文件夹。我已经为我的项目使用了Maven Quickstart Archetype,它没有创建资源文件夹。如何手动正确添加它。我想通过pom.xml以某种方式存储它不存在.classpath。 - Robert Niestroj
好的我手动创建了z新的源文件夹。 Maven有一个默认的资源文件夹路径,意思是:src / main / resources。现在我只能通过版本控制pom.xml和src文件夹。我想我现在可以安全地接受这个答案了。 - Robert Niestroj


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

这里的关键是,由于您依赖于Eclipse,因此需要Eclipse配置文件才能工作。因此,我担心你需要加回来 .classpath.project.settings 你的版本控制工具...它不是通用的,因为你强迫那些在你的项目上工作的人使用Eclipse。但如果你团队中的每个人都这样做,那应该不是问题。

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

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

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

在您的特定情况下,关键是您通过其Springsource Tool Suite插件成为Eclipse依赖项。因此,添加此工具的配置文件变得至关重要,因为没有它们它们无法工作,如果它们无法工作,则无法工作。


1
2018-06-10 09:28



感谢你的回答。我希望我不依赖Eclipse,我不想成为。我们在培训中被告知使用Maven使我们独立于IDE。但我忘了问如何版本控制这样的项目。现在我尝试它并且不能这样做,所以我在这里问。 - Robert Niestroj
我认为,这是大多数使用它的项目中maven最大的角色之一。 Eclipse的依赖可能是通过STS创建的,但是......我想是的,的确,因为你在删除Eclipse conf文件时出现了问题...这在某些方面是合乎逻辑的,因为你运行tomcat的方式(如果我已经正确理解,我不是JEE专家)与STS和Eclipse直接相关。但我可能错了。 - Agemen


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


0
2018-06-10 10:46



实际上,在共享maven项目时,您不需要.settings,.classpath或.project。如果将项目作为Maven项目导入Eclipse,则会自动生成这些文件。 - Cem Catikkas
但是在使用subclipse进行checkout的情况下,eclipse会自动打开与导入现有maven项目不同的项目。因此,如果您想使用eclipse签出项目,我认为必须提交这些文件。 - lepike
嗯,很棘手。我想我更喜欢使用单独的SVN应用程序检查项目(例如,如果您使用的是Windows,则使用TortoiseSVN),然后在Eclipse中将项目作为Maven项目导入。您仍然可以访问Subclipse功能,而不是初始结账,您可以获得无需对项目文件进行版本管理的优势。但是,是的,有些缺点。 - Daniel Lundmark