如何使用特定的javac可执行文件告诉ant构建?

MGw*_*nne 14 java ant executable build javac

如何ant从命令行使用特定的javac可执行文件?

我有一个gcj的安装,作为gcc的一部分构建,在我们分发的库中,我希望有一个特定的Java软件构建.但是,它似乎只是使用system-gcc,而诸如"-Dbuild.compiler"之类的选项似乎要我指定某种Java类而不是文件路径.

我希望在Makefiles中有类似于CC的东西.

我确定这很简单,我只是愚蠢.


为了清楚起见,我想尽可能避免自己编辑构建文件.是否有一些标准的方法来简单地在命令行上指定编译器到ant?我不介意在某种意义上构建文件"表现良好"的假设.

Kay*_*ser 21

如果您使用的是Ant 1.6或更高版本,则可以设置该javac属性fork="yes".这使您能够在使用jikes,jvc,gcj,sj或javac您正在使用的任何版本时指定可执行文件的路径.

  <javac srcdir="${src}"
         destdir="${build}"
         fork="yes"
         executable="/opt/java/jdk1.1/bin/javac"
         compiler="javac1.1"
  />
Run Code Online (Sandbox Code Playgroud)


bak*_*aro 8

-D调用ant时的参数将使用Ant脚本内部命令行中的属性.它使用的形式是:

ant -Dmyvar=true

myvar属性的名称在哪里,true是您要在脚本中使用的值.

最简单的方法是使用javac可执行属性的属性.

 <target name="compile">  
   <javac srcdir="${src}"
     destdir="${build}"
     fork="${fork}"
     executable="${javac.executable}"
     compiler="${compiler}"/>  
 </target>
Run Code Online (Sandbox Code Playgroud)

然后在命令行上调用:

ant compile -Djavac.executable=/usr/bin/local/jdk/javac -Dsrc=/home/src -Dbuild=/home/build -Dcompiler=javac1.6 -Dfork=true
Run Code Online (Sandbox Code Playgroud)