2015-03-02 108 views
1

是否可以從scons運行特定的ant腳本?從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") 

而是因爲它不local.properties用正確的SDK位置

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來克服這個障礙?

回答

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

+0

布雷迪這正是我需要讓項目正確構建和你回答這個問題。 – steffan 2015-03-02 14:23:34

+0

很高興聽到這對你有用:) – Brady 2015-03-02 14:29:13