确保在Eclipse中进行SVN签出后立即构建Android项目的实践

vki*_*nra 5 eclipse svn android buildpath maven

问题:

当一个项目被检入SVN,而其他人检查它时,它上面有一个惊叹号,需要解决构建路径错误.怎么解决?

作为一个例子,我有一个项目,以下是它的结构:

它在libs文件夹中有3个库:

* android-support-v4.jar
* bugsense3.2.2.jar
* gcm.jar
Run Code Online (Sandbox Code Playgroud)

Android Dependencies文件夹具有:

* annotations.jar
Run Code Online (Sandbox Code Playgroud)

参考图书馆有:

* gcm.jar
Run Code Online (Sandbox Code Playgroud)

Android私人图书馆有:

* bugsense3.2.2.jar
* gcm.jar
* android-support-v4.jar
Run Code Online (Sandbox Code Playgroud)

Google API [Android 2.2]具有:

* android.jar
* maps.jar
Run Code Online (Sandbox Code Playgroud)

所以我们在libs文件夹中放置的内容似乎会自动添加到Android私有库中,这是否准确?因此,他们可以签入SVN,当其他人检查并构建它时,Android私有库中的.jars将只指向他的本地工作区,这不是问题.

但是,Android Dependencies中的annotations.jar和Google API中的android.jar和maps.jar都引用了我C:上的android-sdk文件夹.因此,当其他人签出我的整个项目时,他们会构建必须通过Java Build Path解决的问题.

将所有库存储在SVN中的标准做法是什么,以便当新的开发人员进入并检出项目时,他只是简单地构建而不是摆弄设置?我怀疑我们正在使用构建管理系统,持续集成,构建服务器等等.所以我稍微了解它但从未实际使用它,因为我从未在足够大的团队中工作过.如果有人能够如此友好地给我他们使用的东西(Maven,Gradle等实际工具),那么我将非常感激!

谢谢,

-V

Twe*_*les 5

ADK添加到类路径的库没有什么特别之处.如果您希望能够检入项目的所有依赖项,则可以将引用的jar复制到本地目录,然后将类路径指向那些而不是使用提供的库组.因为android插件有一个新的古怪的系统,自动将libs目录中的东西添加到你的路径和你的apk,我不建议把这些其他的罐子放在那里.通常我们在这里做的是在svn中创建一个单独的文件夹,命名为第三方或类似的东西,然后使用svn:externals来引用必要的jar.有一个共同的位置来存储第三方罐子使版本控制和配置管理更容易.

为了更清楚地说明事情,这就是一个示例subversion存储库的样子:

repo
    -android_project
        -trunk
            -your other project stuff (src, etc)
            -libs
                -android-support-v4.jar
                -bugsense3.2.2.jar
                -gcm.jar
            -third-party
                -annotations.jar (external)
                -android.jar (external)
                -maps.jar (external)
third-party
    -android
        -v_X.XX
            -annotations.jar
            -android.jar
            -maps.jar
Run Code Online (Sandbox Code Playgroud)

在您的实际Eclipse项目中,您可以手动将第三方中的内容添加到路径中,并且adk会自动将库中的内容添加到路径中.

编辑

关于这个方法与Maven的主题,我要承认的第一件事是我没有Maven的大量经验.据我所知,我认为它不符合你的标准.当我使用Maven时,默认情况下它会将您的依赖项下载到特定于计算机的位置,而不是下载到您的工作区.要让Eclipse获取这些依赖项,您必须将M2_HOME属性添加到工作区,以便它可以正确地解析所有路径.设置所有这些内容非常容易,因为有mvn命令可以自动执行该过程,但对于不熟悉系统的人来说,当新开发人员启动项目时,可能会导致很多混乱并减慢速度.另外,

再说一次,我不是Maven的专家,所以我带着一点点的说法,但从我的经验来看,Maven在开源环境中工作得很好,在这种环境中,连接受到欢迎并几乎得到保证,但在封闭源中却没有那么多环境.它似乎造成了比我们解决的问题更多的问题,因此从未真正流行起来.关于我上面描述的系统的好处是,在结账后,你有一个文件夹,其中包含开发和构建项目所需的所有内容(eclipse除外).这使得在新机器或不熟悉的环境中启动和运行起来非常容易.

我要说Maven提供的一大好处就是一致性.使用我描述的系统,开发人员负责设置项目的各个方面.这意味着在开发人员和项目之间,您可以获得svn存储库布局方式的变化.一个开发人员可以将目录命名为"第三方",而另一个开发人员可以将其命名为"开源",或者某些开发人员可能不会在其项目中使用主干.随着时间的推移,这些小东西可能会积聚并使您的存储库变得混乱.由于Maven负责项目的布局,因此您可以放心,您的存储库将保持一致.