首先,我从谷歌文档中获得了关于库项目的大部分知识,并在本文中对android构建系统进行了详细描述。
设置
在我的Eclipse工作区中,我有几个导入android库的客户端项目。每个客户端导入一组不同的库,一些库也相互导入。
每个客户端都有自己的subversion存储库,所有库都在一个subversion存储中。
所有构建和执行都很好。
问题
- 客户端项目和库不是同步发展的。一些客户端项目需要库的旧版本。必须在Eclipse中创建大量项目。某些库项目必须根据库存储库的不同修订版多次创建
- 我需要有很多库,因为对于一个库项目,它的所有资源最终都会在客户端项目中,即使客户端实际上没有使用任何库。我就在这里吗
- 我将同一个库的不同修订签出到工作空间中。使用Eclipse,不可能导入多个库项目,因为Eclipse项目在.project文件中具有相同的名称(Eclipse在尝试导入第二个库项目时抱怨这一点(
- 日蚀
编辑
Jarek Potiuk的答案是有效的。但它只是解决了第3点中描述的问题。我仍然需要在Eclipse中单独创建每个库项目。
有没有一种解决方案,我不需要在Eclipse中为导入的每个库项目创建一个项目?有人能解决蚂蚁的问题吗?
让我解释一下我们是如何处理它的。我们使用的是mercurial subrepo,但在您的情况下使用svn:externals应该完全相同。
0(先决条件:确保您的.project和.classpath文件已提交以与您的项目一起回购。。。。
1( 在主项目中,我们有一个"subrep"目录,并将所有外部库(作为子目录(保存在那里。在mercurial中,它是使用subrep完成的,在svn中,您应该能够使用svn:externals配置链接到库的特定版本(svn标记或分支URL(:http://svnbook.red-bean.com/en/1.0/ch07s03.html
2( 净效果是,当您签出主项目时,您会自动签出subrepo目录中的依赖库。到目前为止还不错。
3( 现在在eclipse中,主目录会失败,因为它没有链接库。。。。。在这种情况下,您要做的是"添加新的Java项目",键入UNIQUE项目名称(例如libraryprojectname mainprojectname。取消选中"使用默认位置"并浏览到subrepo的库。Eclipse将从existing.project中为您配置项目。在Android中添加此项目作为依赖项目,也可能在Eclipse中添加。。。笔记UNIQUE名称不会更改.project名称,但它将允许eclipse签出多个库项目。。。。。
4( 现在,当您的项目编译时,将所有内容(包括.project和.classpath文件(提交到repo。。。
5( 每当有人签出该项目时,库都会以正确的版本签出,唯一需要的额外步骤是重复第3(点-为subrepo添加新的Java项目,并为该项目指定一个唯一的名称。。。仅此而已(Eclipse无论如何都会在内部引用subdep/library目录,而不是唯一名称(