运行 来自 SCONS 的 ANT 脚本

Running an ANT script from 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 来克服这个障碍?

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

如果想在每次SCons执行时都执行这个ant脚本,那么可以使用SCons Execute()函数,如下:

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

每次都会执行,没有 target/source 依赖性检查。

如果您只想在某个目标已过期时执行此 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 仅适用于 sourcestargets 位于或低于 SCons 项目目录层次结构。所述层次结构的根是 SConstruct 脚本所在的位置。