如何在Eclipse中管理git子模块子项目?

时间:2013-05-01 19:41:59

标签: java android eclipse git

(如果重要,这些是Java Android项目)

项目 A 是一个图书馆项目。

项目 B 取决于 A 。为了方便他人而不仅仅是我的项目管理, A 通过git子模块包含在 B 中。

这意味着,如果我想对 A B 进行更改,我将拥有以下内容:

  1. 项目 A 本身
  2. 项目 B
  3. B A 的子模块,我们称之为 A'。相同的代码,相同的项目名称,磁盘上的不同位置。
  4. 理想情况下,我希望能够满足以下条件:

    1. 能够直接在Eclipse中修改 A
    2. 能够修改 B 并在Eclipse中构建,引用 A
    3. 我真的不需要 A'作为导入项目/无需修改它,但我希望它能自动构建其jar文件并由引用乙即可。
    4. 我尝试了什么:

      1. 只需导入 A A':不起作用,因为Eclipse无法导入两个名称相同的项目。我不能简单地更改名称,因为它是一个子模块;必须这样做每次git更新,这是不可接受的。
      2. 将外部库引用添加到 A',使其完全脱离Eclipse:实际上并不是一个解决方案,但需要从命令行至少进行一次外部构建(使用{{ 1}})之前它会起作用......不是最方便的。
      3. 做一个源链接:不是最干净的,因为 A (以及随后的 A')中有多个源文件夹,所以每次我都需要更新在 A 中添加或删除源文件夹。我宁愿直接使用jar。
      4. 有没有办法在Eclipse中保留这一切,或者我应该做类似#2的事情,但是添加了外部构建命令来调用 A'上的ant

5 个答案:

答案 0 :(得分:1)

我有类似的情况。 git克隆后,将B作为现有(android)项目导入eclipse。确保项目A已初始化并更新(通过git)。

现在,执行file->导入现有项目(如果A是Android项目,则为android)并转到项目B中的子模块A项目并添加它。

现在你在eclipse中有两个独立的项目。您可以更改这两个项目,它们都将在项目B下,因为这是两个项目所在的位置。

答案 1 :(得分:0)

由于这是专门针对Android的,您是否看过Android库?

在我的情况下,我有一个免费的(B)和付费的(C)版本的我的应用程序。两者共享一个共同的代码库(A)。 在eclipse中,我创建一个Android库,B和C都使用这个库,所有3个都是单独的git repos。通过这种设置,我在A中做出的更改在B和C中自动可用,我只需要为每个项目维护一个代码库。没有花哨的构建脚本/配置。

我认为这种简单性是你追求的?如果我误解了这个问题,请道歉。

答案 2 :(得分:0)

我不确定我的设置是否正确:

项目A:src
+ /projecta.jar(项目A的二进制文件)

项目B:/ src
 + / lib /项目A / src作为子模块
 + /lib/projecta.jar(项目A的二进制文件)

..现在你改变A-A'并编译它,想要在推/提交前测试它,对吧? 您是否可以在B中使用jar,或者您是否需要将项目B中的源更新为A'?

第一个案例: 在项目A中编译一个ant文件并将其部署到B 该ant文件不属于项目a,它只是一个本地解决方法 (它在日食的蚂蚁视图中有用)

草图:

<property name="projectb.libdir" value="..."/> set appropriate place in project B

<javac fromdir="./src" todir="./build" ...><fileset ... /></javac>

<jar /> from build to projecta.jar

<copy /> projecta.jar to projectb.libdir

替代方法是在eclipse中创建一个.jardesc,这样你就可以在右键单击运行“create jar”。

是你想做什么的?

答案 3 :(得分:0)

Eclipse Mars Milestone 5(4.5.0M5)具有多项目支持。您只需要导入&#34;现有项目&#34;来自Subfolder。

答案 4 :(得分:-1)

只需使用项目构建系统来跟踪您的依赖关系(这是他们的好处)。

我建议您使用gradle(更好的恕我直言,但检查哪一个更适合您的上下文)或maven,两者都可以很好地处理子项目,并可以为您生成eclipse配置。 / p>