4

我知道,还有另一个多项目问题。我已经看到(冲突的)我的目标子集的答案,但没有涵盖所有内容。 我是 eclipse 的新手,不知道 hg 的肮脏细节。

给定一个通用的库 jar,两个应用程序和一些通用的 ant 脚本......

我会设置这个

/top/
    build-common/
    lib1/
    app1/
    app2/

我读过 eclipse 不做子项目,所以我认为这将是 4 个 eclipse 项目,而“top”对 eclipse 来说没什么。

我已经阅读了如何将 ant 用于 Eclipse 构建,包括自动构建。

  • 3 个 java 项目在其 build.xmls 中引用 ../build-common/{scripts} 是一种好习惯吗?(当这是一个不同的eclipse项目时)
  • app1 和 app2 是否应该引用 ../lib1/target/lib.jar?如何?
  • 如果 ant 正在构建 Eclipse,我是否仍然维护 .classpath (通过任何 gui )?
  • 我假设 Eclipse 用户不会期望自动构建来传播项目。正确的?

我不清楚是否有 4 个 eclipse 项目会强制执行 4 个 mercurial 项目。 如果mercurialeclipse 插件支持它,我可以将其设为一个 hg 项目(“top”)。但我不确定利弊。Team->Commit 可能会影响其他 Eclipse 项目——这对 Eclipse 用户来说是错误的吗?

  • 那么,4 或 1 hg 项目?

在 Eclipse 之前,我通常会有一个构建子项目的顶级 build.xml。即使 Eclipse 构建不需要它,我也想支持完整的命令行构建。

  • 顶级 build.xml 会去哪里?

另外,我怀疑是否将代码实际放在工作区/目录下之间存在一些细微差别。谁能解释这对我的布局意味着什么?

非常感谢!

薄层色谱

4

1 回答 1

0

我用 CVS 做过这种事情,但我不确定 Mercurial 是怎么做的。(我也想改用 Mercurial)

我可以回答你的部分问题。

使用 CVS,我将为 /top/ 创建一个 Eclipse 项目,并将不同的模块作为子目录拉入其中。我不知道 MercurialEclipse 是否支持子存储库,但那将是我的第一选择(1 个 Eclipse 项目,拉入子存储库)

如果 /app1 和 /app2 之间有很多依赖关系,我认为每个 ant 脚本都可以引用 build-common。另一种选择是在 /app1 和 /app2 中有一个 build.xml,然后在 /build-common 中有一个主 build.xml,它只调用 /app1 和 /app2,然后最后将所有内容包装起来。

如果您使用 Ant 脚本,您还必须手动管理 Eclipse 类路径。根据我的经验,这并不难。如果在 Eclipse 中设置了类路径,则自动构建将正常工作。

我希望有这样的结构:

/top/
/top/build.xml (references /app1/build.xml, /app2/build.xml)
/lib1
/app1/
/app1/build.xml (references ../lib1)
/app2
/app2/build.xml  (references ../lib1)

最大的问题是 MercurialEclipse 和子存储库。但是,如果它不支持子存储库,只需从命令行使用 Hg 直到它赶上。

于 2012-04-24T17:45:12.897 回答