我正在寻找一种使用Ant编译几种Java软件的方法。口味我的意思是,例如,试用版和完整版。
在代码中我有一个
public static final boolean TRIAL
变量,指定是试用版还是完整版。能够从Ant设置它并自动编译两个版本将是非常好的。
我找不到一个很好的方法来做到这一点,而我确实认为我不是第一个面对这个问题的人。
在C中我会简单地使用“ifdef”并从Makefile ....设置define。
答案 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,您可以选择确切使用的版本的来源。
当然,这会复制源代码,但是一种可能的解决方案,而不使用外部软件(如之前的预处理器)