首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理软件版本

管理软件版本
EN

Stack Overflow用户
提问于 2010-03-23 06:19:30
回答 2查看 94关注 0票数 0

我计划在现有的代码库基础上用Java创建一个软件的3个版本。最佳实践是什么?我应该创建3个不同的项目,每个版本一个吗?还有管理版本的工具吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-23 06:28:31

我的第一个想法是,如果可能的话,保留一个代码库,并使用某种标志进行切换。

如果不可能,我会尝试保持尽可能多的相同,并让较大的项目使用较小的项目作为子项目,如果可能的话,自动启用一些功能--例如,每个项目可以有自己的主项目,不同的构建可能只调用设置标志以启用功能的不同干线。

如果你的标志是最终的,它甚至应该避免把不必要的代码放到你的项目中。

最后,最坏的情况是,Subversion中有3个分支。

编辑:

你让我想了更多,我想我找到了一个更好的解决方案。

我想我会把它分成四个项目,将所有“通用”的东西组合成一个基础项目,而把不同的东西分散到其他三个项目中--所以假设你有基础,演示,支付和业务项目……

在这三个类可能不同的情况下,您可以使用demo/pay/business类中的一个对象来提供功能。例如,如果付费版本有新的菜单项,您的某个对象中可能有一个getMenuItems。它将返回一个菜单树,您可以将其放置在菜单栏中。演示版本的项目会更少。

通过这种方式,你的"Base“永远不会知道它运行的是哪个版本,它只使用对象。

为了得到这些对象,我会有一个工厂。工厂应该看起来像这样:

代码语言:javascript
复制
private String[] availablePackages={"business", "pay", "demo"};

public getMenuClass() {
    Class c;
    for(String package : availablePackages) {
        try {
            c=Class.forName("com.meh.myapp."+package+".MenuClass");
        } catch... {
            // No package by that name
        }
        if(c != null) {
            return c.newInstance();
        }
    }
    // Something went wrong, no instance found.

上升趋势是您应该首先尝试实例化com.meh.myapp.business.MenuClass,然后尝试...pay.MenuClass,最后尝试...demo.MenuClass。

这应该允许您通过简单地发布不同的jars来更改配置--如果您决定只发布演示和主jars,那么您将获得一个演示应用程序。通过发布pay jar,您将获得pay应用程序。

请注意,您很可能希望业务将其大部分工作委托给" pay ",并希望"pay“将大量工作委托给" demo ",但demo对业务或薪酬一无所知,而"main”只知道其他三个。

这将是一个很好的解决方案,因为不需要配置--实际上,您只需将pay jar从演示升级到pay,主jar和demo jar将被重用并保持在原地。

票数 1
EN

Stack Overflow用户

发布于 2010-03-23 06:35:49

理想的方式是将应用程序划分为“核心”、“附加内容”、“更多附加内容”,并将这些依赖项组合在一起。不过,这可能会有很多工作,这取决于您拥有的代码库。

如果您使用SVN进行源代码管理,您可以在现有代码库的基础上为每个版本创建3个分支。通常,人们会尽量避免这种情况,因为例如,如果您需要修复跨这些分支的常见bug,则需要在其中一个分支中修复该错误,然后将其合并到其余分支中。也许其他源代码库可以更好地处理这种情况,但对于SVN,我想这是唯一的方法。

至于版本管理,我们使用maven。如果你采用“核心”、“附加内容”、“更多附加内容”的方法,maven可以提供帮助,因为它可以非常干净地跟踪每个组件的版本(使用pom)。

编辑:Bill的建议可能是最实用的。如果你使用了一个最后的标志,是的,编译器应该丢弃那些无法访问的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2496188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档