从Ant编译同一Java软件的多种风格

时间:2010-07-13 17:16:04

标签: java ant compilation

我正在寻找一种使用Ant编译几种Java软件的方法。口味我的意思是,例如,试用版和完整版。

在代码中我有一个

public static final boolean TRIAL

变量,指定是试用版还是完整版。能够从Ant设置它并自动编译两个版本将是非常好的。

我找不到一个很好的方法来做到这一点,而我确实认为我不是第一个面对这个问题的人。

在C中我会简单地使用“ifdef”并从Makefile ....设置define。

3 个答案:

答案 0 :(得分:1)

看看这个:http://code.google.com/p/preprocessor/
允许你做这样的事情:

//#ifdef CUSTOMER1
private String abc = "abc";
//#else
private String abc = "cba";
//#endif  

并从ant

设置

答案 1 :(得分:1)

我创建了一个模板文件并使用ANT的复制过滤器在编译之前更改了值。我从来没有用源代码完成它,但我已经对配置文件使用了很多。

在源模板文件中,您可以执行以下操作:

public static final boolean TRIAL = @TRIAL_VALUE@ 

然后在ant build.xml中,你可以这样做:

<filter token="TRIAL_VALUE" value="true" />
<copy tofile="${your.target.file.name.here}" filtering="true">
  <fileset dir="${location.of.your.template}">
    <include name="${template.file}" />
  </fileset>
</copy>

我不确定我是否喜欢用真正的源文件做这个想法(我认为很有可能会让IDE生气)。您可能需要考虑使用jar中嵌入的配置文件(并使用 上的复制过滤器技术)

答案 2 :(得分:0)

如果您有多个版本的软件以避免轻易入侵(java decompiler),我强烈建议您使用并行设置的源,其中试验只是模拟,等等。

使用ANT,您可以选择确切使用的版本的来源。

当然,这会复制源代码,但是一种可能的解决方案,而不使用外部软件(如之前的预处理器)