【发布时间】:2011-02-26 17:55:49
【问题描述】:
我在网上找到了很多关于花哨的 Maven 设置的信息,但是对于 Maven 而言,它是“hello world”级别的东西并不太清楚。
目标:从 Eclipse 创建一个简单的 Maven 项目,并将其签入我们的 Subversion 存储库。签入正确的文件,并且不要包含不应签入的内容。第 2 步将让第二个 Eclipse 工作站也在同一个项目上工作。
警告:是的,我对 Maven 比较陌生。 Eclipse 和 SVN 之间的非 maven 引导对我来说并不总是 100% 清楚。
系统:
- OS X Snow Leopard w 默认 Java 1.6
- Eclipse 3.6 和最近安装的插件
- Subclipse 和 SVN 的 Collab.net 版本 - 工作
- m2eclipse,也可以工作
- 命令行mvn工作,本地仓库,可以创建项目
- 通过 https 的 Subversion 存储库
我不会因为我所有的错误开始而让你厌烦,但这是对当前状态的总结:
- 在我们的 SVN 服务器上创建了一个项目,其 URL 格式为 https://foo.com/svn/PROJECTONE/trunk
- 在 Eclipse 中使用 m2eclipse 创建 Maven 项目,而不是使用命令行工具(至少在学习时)
- 从空白的 Eclipse 工作区开始,并接受新项目的默认位置
- 新建项目向导,maven 项目,使用 maven-archtype-quckstart,称之为 ProjectOne
- 在 POM 编辑器中用上面的 Subversion URL 填写 SCM URL,https://foo.com/svn/PROJECTONE/trunk
- 修改maven默认的App.java程序,更改Hello World字符串,验证是否运行
这里有一些我觉得奇怪的地方:(显然我误解了一些东西)
- 在 POM 编辑器中,既然我已经填写了我的 SVN 存储库的 SCM URL,我本来希望它会提供签入我的代码的功能。没有报价,我没有注意到任何其他选择。问题:那么这个领域的意义何在?鉴于 maven 的面向任务的概念,并且它询问了我的 URL,难道不会让文件同步成为其中的一部分吗?
- 我决定手动操作,我右键单击该项目,在 Team 下告诉它 SVN URL,它警告说目录已经存在,我说 OK,现在目录已链接。
- 然后我开始签入过程,我注意到 Subclipse 建议 .settings 下的一些文件。当然,不应签入 Ecliipse 二进制工作区文件,并且看起来其中一个插件发现不包含构建目录(?),但不确定这些文件。问题:Maven 会在多大程度上更新 svn:ignore 属性?或者 Subclipse 是否根据 Eclipse 项目设置更新 svn:ignore,因为它确实了解这两者?
一般问题:
- 将一个新的 Maven 项目引导到 Eclipse 和 Subversion 中的“最佳实践”是什么?先执行哪些任务?
- 如果该项目具有所有插件,那么将该项目放入第二个 Eclipse 工作站的“最佳实践”是什么?
- 哪些插件(m2eclipse、subclipse 等)更新了 svn:ignore ?
- 当 POM 编辑器询问 SCM URL 时,它会将这些信息用于什么目的?
- 我应该在该 SCM URL 中包含“trunk”吗?
- 我应该在 SCM URL 中包含项目名称吗?
- 我应该先在存储库中创建项目目录吗?还是应该让其中一个插件创建它?
- m2eclipse 和 subclipse 能相互识别吗?或者,更有可能的是,核心 maven 和 subversion 系统彼此了解吗?比如maven一般都知道svn:ignore吗?我不希望 subversion 对 maven 了解很多,这似乎是错误的方向。
为这篇长文道歉,但这些都有些相关,也许可以更好地了解新的 maven 用户可能在想什么。
【问题讨论】:
-
写得好。太长。写一篇回答这个问题的博文可能是个好主意,并在周末将链接粘贴到此处。 :)
-
好点。单独提出一个问题。一旦 20 分钟窗口过去,我将移动另一部分。
-
我后来又把另一个问题放到了一个单独的话题上。
标签: eclipse svn plugins maven m2eclipse