18

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

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

项目B依赖于A。为了便于其他人而不只是我的全面项目管理,A通过 git 子模块包含在B中。

这意味着,如果我想同时更改AB 我将拥有以下内容:

  1. 项目A本身
  2. 项目B
  3. B的子模块A,我们称之为A'。相同的代码,相同的项目名称,不同的磁盘位置。

理想情况下,我希望能够满足以下条件:

  1. 能够直接在 Eclipse中修改A本身。
  2. 能够修改B并构建它,引用A',所有这些都在 Eclipse 中。
  3. 我真的不需要A'作为导入的项目/不需要修改它,但我希望它自动构建它的 jar 文件并让它被B引用。

我试过的:

  1. 简单地同时导入AA':不起作用,因为 Eclipse 无法导入具有相同名称的两个项目。我也不能简单地更改名称,因为它是一个子模块;每次 git update都必须这样做,这是不可接受的。
  2. 将外部库引用添加到A',将其完全排除在 Eclipse 之外:实际上并不算太糟糕的解决方案,但需要从命令行(使用ant)至少对其进行一个外部构建,然后才能工作......这不是最方便的.
  3. 做一个源链接:不是最干净的,因为A(以及随后的 A')中有多个源文件夹,所以我每次在A中添加或删除源文件夹时都必须更新。我宁愿直接使用罐子。

有没有办法将这一切都保留在 Eclipse 中,或者我应该做一些类似 #2 的事情,但添加一个外部构建命令来调用antA '

4

5 回答 5

1

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

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

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

于 2013-09-19T12:17:48.550 回答
0

Since this is specifically for Android, have you looked into Android libraries?

In my case I have a free (B) and a paid for (C) version of my app. Both share a common code base (A). In eclipse I make A an Android library and both B and C use this library and all 3 are separate git repos. With this setup, changes I make in A are automatically available in B and C and I only need to maintain one code base for each project. No fancy build scripts/configs.

I think this sort of simplicity is what you were after? Apologies if I have misunderstood the question.

于 2013-09-26T23:47:33.453 回答
0

Eclipse Mars Milestone 5 (4.5.0M5) 具有多项目支持。您只需要从子文件夹中导入“现有项目”。

于 2015-02-26T14:45:51.290 回答
0

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

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

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

..现在您更改 AA' 并编译它,想在推送/提交之前对其进行测试,对吧?
您可以将 jar 放在 B 中,还是需要将项目 B 中的源更新为 A'?

第一种情况:在项目 A 中编译一个 ant 文件并将其部署到 B 以及该 ant 文件不是项目 a 的一部分,它只是一个本地解决方法(在 eclipse 的 ant 视图中使用它很有用)

草图:

<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”。

那是你想做的吗?

于 2013-09-29T16:18:59.730 回答
-1

只需使用项目构建系统来跟踪您的依赖项(这是它们的优点)。

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

于 2013-05-02T05:33:10.507 回答