关于Java:从SCONS运行ANT脚本

Running an ANT script from SCONS

是否可以从scons运行特定的ant脚本?

例如,从命令行运行此脚本有效

1
/usr/local/bin/ant release -f /Users/dev/pic/src/platform/android/java/build.xml

是否可以在scons中成功运行它?我尝试这样:

1
env.Command('local.properties', [],"/usr/local/bin/ant release -f /Users/dev/pic/src/platform/android/java/build.xml")

但是失败了,因为它没有输出带有正确SDK位置的local.properties文件。

1
2
BUILD FAILED
/Users/dev/pic/src/platform/android/java/build.xml:55: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable.

但是这些变量是正确的。有没有办法使用scons克服此障碍?


这取决于您要执行ant的方式和时间,但是确实可以。

如果要在每次执行SCons时执行此ant脚本,则可以使用SCons Execute()函数,如下所示:

1
env.Execute("/usr/local/bin/ant release -f /Users/dev/pic/src/platform/android/java/build.xml")

这将每次执行,不检查目标/源依赖项。

如果仅当某个目标已过期时才希望执行此ant脚本,请按以下方式使用SCons Command()函数:

1
2
3
env.Command(target='local.properties',
       source='/Users/dev/pic/src/platform/android/java/build.xml',
       action='/usr/local/bin/ant release -f $SOURCE')

不确定我的源文件和目标文件是否正确,您可能需要修复它。

请注意,SCons仅适用于SCons项目目录层次结构中或以下的源和目标。所述层次结构的根是SConstruct脚本所在的位置。