java ant构建多个版本的软件

标签 java ant

假设我有一个软件,我将其作为两个版本进行销售。

如何使用 Ant 构建这两个版本?

我的意思是,在代码内部,据我所知,我会检查例如:

if(Editions.PRO)
{
    // 'Pro' edition code
}
else
{
    // 'Normal' edition code
}

并且由于 Editions.PRO 是“静态最终 boolean 值”只有上述代码的一部分将被编译。

我也可以使用不同的源文件,但这听起来维护起来很痛苦。
我也可以使用接口(interface),但那是...... nm。

所以,“条件编译”(上面)方法对我来说似乎最好。
我如何在 Ant 上实现它?

Ant 能否操纵其文件中“Editions.PRO”的值
这实际上对我来说听起来不太好。
相反,我正在考虑替换文件(使用Ant命令),或者甚至更好,排除定义“Editions.PRO”和的(real,dev)文件>添加另一个文件夹作为类路径,该文件夹具有相同的文件,但相应配置了“Editions.PRO”(到所需的版本)....我希望我很清楚.

你会怎么做?

最佳答案

首先,找到一种方法来重构代码,其中“专业版”类和“演示版”类都共享一个公共(public)接口(interface),然后其余代码通过接口(interface)调用变量功能。

然后创建两个 ant 目标,一个“pro”目标和一个“demo”目标。然后,每个目标都会排除抽象接口(interface)的非版本特定实现的编译或打包(取决于您想要区分的位置)。

这样,您只能获得专业产品的专业实现、演示产品的演示实现等。

尝试将功能嵌入 if 语句中的做法是错误的。如果您这样做,为了编译代码,您同时需要专业版和演示版代码来构建专业版或演示版产品。此外,您(可能)需要随演示产品一起提供两组代码。这使得某人有可能击败您的专业版/演示版选择机制并在演示产品中激活专业版代码。

关于java ant构建多个版本的软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998667/

相关文章:

java - log4j.xml 不将输出写入文件

android - 如何使用ant生成apk

java - 类路径中存在大量 jar/class 是否会严重影响编译性能?

windows - 无论如何,Apache ant 都会删除目录

java:找出丢失符号的原始包

java - 为什么合并排序需要花费太多时间来排序?

java - 使用 Apache commons-io IOUtils.closeQuietly 安全吗?

java - 参数数组字符串Jframe

java - 使用 HttpAsyncClients : keep connection alive for long time

git - 将 Git 与 Ant 集成的最佳方式?