代码之家  ›  专栏  ›  技术社区  ›  Demiurg

从蚂蚁中编译同一Java软件的多种口味

  •  0
  • Demiurg  · 技术社区  · 16 年前

    我在寻找一种用蚂蚁编译我的Java软件的方法。举例来说,我的意思是,试用版和完整版。

    在密码里我有一个

    public static final boolean TRIAL
    

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

    我找不到一个好方法来解决这个问题,但我相信我不是第一个面对这个问题的人。

    在C中,我将简单地使用“ifdef”并从makefile设置define….

    3 回复  |  直到 16 年前
        1
  •  1
  •   Romain Hippeau    16 年前

    看看这个: http://code.google.com/p/preprocessor/
    允许您这样做:

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

    从蚂蚁身上取下来

        2
  •  1
  •   Ian McLaird    16 年前

    我将创建一个模板文件,并在编译之前使用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中嵌入的配置文件(并在 那个 相反)

        3
  •  0
  •   Gustavo V    16 年前

    如果您有多个版本的软件以避免简单的黑客攻击( java decompiler )我强烈建议你使用平行的一组来源,其中的审判只是嘲弄,等等。

    使用Ant,您可以选择确切使用哪个版本的源。

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

    推荐文章