【问题标题】:Bootstrap order for simple Maven project in Eclipse and Subversion?Eclipse 和 Subversion 中简单 Maven 项目的引导顺序?
【发布时间】: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


【解决方案1】:

哪些插件(m2eclipse、subclipse 等)更新了 svn:ignore ?推荐 m2eclipse 和 subclipse。

关于 svn ignore,当您签入源代码时,您有两种方法可以忽略 eclipse 生成的工件:

  1. 使用子剪辑

    右键->团队->设置属性 在输入属性中输入以下属性:

    • 目标
    • .classpth
    • .设置
    • .project
    • .wtpmodules
  2. 使用 Svn

    $ svn propset svn:ignore 'target .classpath .settings .project .wtpmodules' .
    $ svn commit -m"remove eclipse artifacts" .
    

当 POM 编辑器询问 SCM URL 时,它会将这些信息用于什么目的?

SCM 可用于报告目的或可与 Maven 发布插件一起使用。该插件自动化整个发布过程。

我应该先在存储库中创建项目目录吗?还是应该让其中一个插件创建它?

您可以使用 archetype:plugin 提供的原型创建目录布局。

【讨论】:

  • 谢谢!我需要将所有的 cmets 和问题整合到我的笔记中,看看我是否有完整的链条。从高层次的角度来看:在新的 Eclipse 工作区、Maven 和 Subversion 以及所有“最佳实践”中引导一个全新的全新 Eclipse 项目。这似乎是每个人都做过的事情,但我还没有看到一个简洁的“食谱”。
【解决方案2】:

据我所知...

Maven 与 SVN 几乎没有任何关系[编辑:为了您的目标],暂时忘记 Maven SCM,因为您现在不需要它。

要使 Maven 和 Eclipse 一起工作,您需要使它们使用相同的类路径和输出目录,这就是正确配置的插件将为您做的事情。它还可以让您在 Eclipse 中执行 Maven 任务(运行目标等)。

Subversion 客户端会跟踪您所做的更改并让您执行 Subversion 任务(同步、更新、签出、提交等)。 Subclipse 是 Eclipse Subversion 插件。

在让 Maven 和 Eclipse 一起工作后,使用 SVN(Subclipse 或其他)共享您的项目文件,包括 pom.xml、.classpath、.project 并且可能是 .settings 但不包括所有派生文件(编译器输出等) .

【讨论】:

  • 感谢您的回答。我很好奇你在哪里说“......暂时忘记 Maven SCM,因为你现在不需要它” - 如果这不是它的用途,那么它似乎有点奇怪。也许它有助于分支或合并或标记或其他东西,但即便如此,它似乎仍然只是检查 URL 是否有效并且同步当前版本将是所有这些的一个子集。到底是为了什么? (我可以去网上多看看,但如果你知道了,那就太好了)
  • 事实上你不需要它来实现你所说的目标。但要了解它如何帮助您查看:wiki.gxdeveloperweb.com/confluence/display/GXDEV/…,您可以在(maven)本地存储库 pom.xml 文件中找到许多使用 scm 的示例。
  • @Mark Bennett 顺便说一句,我不建议将 Eclipse 项目文件提交到 svn repo。最好只共享 pom.xml 文件,然后使用它们来创建特定于 IDE 的项目。
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
相关资源
最近更新 更多