从SCONS运行ANT脚本

时间:2015-03-02 10:23:36

标签: java android ant scons

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

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

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

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

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

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

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克服这个障碍?

1 个答案:

答案 0 :(得分:3)

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

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

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

每次都会执行,没有目标/源依赖性检查。

如果您只希望在某个目标过期时执行此ant脚本,请使用SCons Command()函数,如下所示:

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脚本所在的位置。