本文地址:?[http://blog.csdn.net/sushengmiyan/article/details/38316829](http://blog.csdn.net/sushengmiyan/article/details/38316829)
本文作者:sushengmiyan
-------------------------------------------------------------資源鏈接-----------------------------------------------------------------------
翻譯來源 ?Sencha Cmd官方網站:[http://docs.sencha.com/extjs/5.0.0/cmd/advanced_cmd/cmd_build.html](http://docs.sencha.com/extjs/5.0.0/cmd/advanced_cmd/cmd_build.html)
------------------------------------------------------------------------------------------------------------------------------------------------
? ? ?Sencha cmd提供的構造腳本是將足見綁定在一起并且是使許多低級命令(像編譯)變得自動化,很少有出現適合一個工具滿足所有需求的這樣的解決方案,所以構造腳本提供了很多可以進行選擇的選項讓你去配置和客戶化的定制這些行為,這個指引將要解釋在構造腳本后面的規則以及你可能需要去修改來適應你需求的做法。
? ? 閱讀本文需要你閱讀之前兩章的內容
? ? 1.[introduction to sencha cmd](http://blog.csdn.net/sushengmiyan/article/details/38295575)
? ? 2.[using sencha cmd](http://blog.csdn.net/sushengmiyan/article/details/38313537)
### **工作空間介紹**
-----------------------
本質上來講,sencha app build 命令執行了基本的校驗并且調用 [apache ant?](http://ant.apache.org/)?去構造,構造的腳本可以在”build.xml“文件中查看,該文件就在應用程序的根文件夾下。

特別的,它會調用腳本中的”build“目標,這意味著全部的過程都可以被檢測擴展并且可以修改。
因為sencha app build 簡單的調用了ant中”build.xml“中的”build“目標,你可以直接操作ant來達到相同的效果。這對于使用Eclipse或者netbeans的用戶來說是很有幫助的
同樣的,對于了解ant的來說,集成服務也是可持續的。
生成的”build.xml“ 是最小的一個ant腳本,可以使用ant的import功能來導入”.sencha/app/build-impl.xml“類似的文件任務。由于"build.xml"后期是可能會被修改的,但是”.sencha/app//*-impl.xml“文件是不會被修改的,這些文件會被sencha app upgrade程序給更新替換掉,除非必須否則不要修改這些文件。然而這些文件時非常優秀的,只是修改需要特別留意。
### 構造目標
---------------
下面的目標定義了應用程序構造的產生到結束的整個過程,除了init方法,其他目標都有一個屬性可以設置為從1開始的數字。
init ?refresh resolve js resources sass slice page native-package
除了init其他目標都可以通過前綴增加 skip.的方式來時目標無效。
比如 skip.slice = 1
如果只想更新一部分就可以只想這樣的命令,比如只更新sass 可以執行 sencha ant sass就只會構造sass
### **配置你的工作空間**
------------------------------
在sencha app build命令腳本后的許多方面是通過屬性來控制的,這樣說來,就有兩種配置方式,1.通過配置屬性來配置,2.通過構造屬性來配置
### ? 1.配置屬性
想要看當前配置的信息,可以執行如下命令 ?sencha diag show?
多數情況下,你可以通過前綴告訴他們從何而來。
app. 參照 app,json 和.sencha/app/sencha.cfg
workspace. 參見workspace.json和.sencha/app/sencha.cfg
framework. 參考cmd/sencha.cfg在sencha cmd 安裝目錄中
cmd.可以再sencha cmd的安裝目錄看到
使用配置文件是使用比較廣泛的也是被advanced sencha cmd推薦的。
### ? 2.構造配置屬性
構造腳本定義了好多其他屬性,這些屬性都是以build.來結尾的
想看當前的值得話,在你應用程序目錄下調用以下命令
sencha ant .props
設置這些build屬性
許多方式可以配置你的構造,最簡單的方方就是編輯他們的配置屬性文件,決定要修改哪一個文件你最好知道這些文件什么時候被調用。
”local.properties“: 目前來說,是第一個載入的,這個文件的設計初衷就是給當前本地機器使用的。這個文件就不應該提交到版本控制中被別人使用,這些設置比其他任何文件優先級都高,
2.”.senche/app/${build.enviroment}.properties“--根基是build.enviroment屬性文件,下方的一個會被載入,設置這些文件的屬性可以讓你從開始構建的時候獲取不同的數值
? ”.sencha/app/native.properties“
? ?".sencha/app/package.properties"
? ?".sencha/app/production.properties"
? ?".sencha/app/testing.properties"
3.".sencha/app/build.properties"
這些屬性石在后期加載的,比build-enviroment-specific屬性加載的晚一些的,這些屬性是被所有的環境變量使用的,這些文件 是被設計為客戶化定制使用的。
4.“sencha/app/defaults.properties” 這些屬性最后被加載這些文件是被sencha cdm擁有的,并且當有新屬性更高的時候這里會更新。這個文件服務了一些屬性集,不應該被編輯的,可以修改其他的來達到你的目的。
### **自定義**
----------
許多普遍的需求是通過構造需求的,但是了解所有的方式是不可能的。當配置選項的時候不能達到目的的時候下一個自定義的設置就可以實現了通過“build.xml”文件ant腳本來實現。
另外,對于import命令來說,build.xml包含了一些不同的擴展點,這些都是在可以選擇的所有ant 目標和后期命名的過程中的,當你使用-before或者-after時。最常見的前綴擴展點如下:
init(-befor-init ?-after-init)
refresh(-before-refresh ?-after-refresh)
resolve(-before-resolve -after-resolve)?
js(-before-js ?-after-js)
resources(-beifore-resources ?-after-resources)
sass(-before-sass -after-sass)
slice(-befor-slice ?-after-slice)
page(-befor-page -after-page)
native-package(-native-packege ?-after-packege)
為了執行增加的before after處理步驟,給build.xml文件增加一個屬性 這些目標可以在你的 ant執行的時候被調用
~~~
<target name="-after-page">
<tstamp>
<format property="THISYEAR" pattern="yyyy"/>
</tstamp>
<!--
The build.classes.file property holds the full path to the "all-classes.js"
file so we use that variable rather than hard-code the name.
-->
<move file="${build.classes.file}" tofile="${build.classes.file}.tmp"/>
<concat destfile="${build.classes.file}">
<header filtering="no" trimleading="yes">
/*
* Copyright (C) ${THISYEAR}. All Rights Reserved.
* My Company Name
*/
</header>
<fileset file="${build.classes.file}.tmp"/>
</concat>
<delete file="${build.classes.file}.tmp" />
</target>
~~~
- 前言
- [EXtJS5學習筆記]第一節 Sencha Cmd 學習筆記 簡介 Sencha Cmd是什么
- [ExtJS5學習筆記]第二節 Sencha Cmd 學習筆記 使你的sencha cmd跑起來
- [ExtJS5學習筆記]第三節 sencha cmd學習筆記 生成應用程序構建的內部細節
- [ExtJS5學習筆記]第四節 歡迎來到extjs5-手把手教你實現你的第一個應用
- [ExtJS5學習筆記]第五節 使用fontawesome給你的extjs5應用增加字體圖標
- [ExtJS5學習筆記]第六節 Extjs的類系統Class System命名規則及定義和調試
- [ExtJS5學習筆記]第七節 Extjs5的組件components及其模板事件方法學習
- [ExtJS5學習筆記]第八節 Extjs5的Ext.toolbar.Toolbar工具條組件及其應用
- [ExtJS5學習筆記]第九節 Extjs5的mvc與mvvm框架結構簡介
- [ExtJS5學習筆記]第十節 Extjs5新增特性之ViewModel和DataBinding
- [ExtJS5學習筆記]第十一節 Extjs5MVVM模式下系統登錄實例
- [ExtJS5學習筆記]第十二節 Extjs5開發遇到的問題列表記錄
- [ExtJS5學習筆記]第十三節 Extjs5的Ext.each方法學習
- [ExtJS5學習筆記]第十四節 Extjs5中data數據源store和datapanel學習
- [ExtJS5學習筆記]第十五節 Extjs5表格顯示不友好?panel的frame屬性在作怪
- [ExtJS5學習筆記]第十六節 Extjs5使用panel新增的ViewModel屬性綁定數據
- [ExtJS5學習筆記]第十七節 Extjs5的panel組件增加accodion成為折疊導航欄
- [ExtJS5學習筆記]第十八節 Extjs5的panel的dockeditems屬性配置toolbar
- [ExtJS5學習筆記]第十九節 Extjs5中通過設置form.Panel的FieldSet集合屬性控制多個field集合
- [ExtJS5學習筆記]第二十節 Extjs5配合數組的push方法,動態創建并加載組件
- [ExtJS5學習筆記]第二十一節 Extjs5中使用config配置給ext.widget或者create方法傳遞參數
- [ExtJS5學習筆記]第二十二節 Extjs5中使用beforeLabelTpl配置給標簽增加必填選項星號標志
- [ExtJS5學習筆記]第二十三節 Extjs5中表格gridpanel的列格式設置
- [ExtJS5學習筆記]第二十四節 Extjs5中表格gridpanel或者表單數據后臺傳輸remoteFilter設置
- [ExtJS5學習筆記]第二十五節 利用window.open()函數實現ExtJS5的登陸頁面跳轉
- [EXTJS5學習筆記]第二十六節 在eclipse/myeclipse中使用sencha extjs的插件
- [ExtJS5學習筆記]第二十七節 CMD打包錯誤 Error C2009: YUI Parse Error (identifier is a reserved word =&gt; debugger;)
- [ExtJS5學習筆記]第二十八節 sencha ext js 5.1.0發布版本正式發布 extjs doc下載地址
- [ExtJS5學習筆記]第二十九節 sencha ext js 5.1.0中動態更換皮膚主題
- [ExtJS5學習筆記]第三十節 sencha extjs 5表格gridpanel分組匯總
- [ExtJS5學習筆記]第三十一節 sencha extjs 5使用cmd生成的工程部署到tomcat服務器
- [ExtJS5學習筆記]第三十二節 sencha extjs 5與struts2的ajax交互配置
- [ExtJS5學習筆記]第三十五節 sencha extjs 5 組件查詢方法總結