Gradle 1.12 翻譯——第十六章. 使用檔案
有關其他已翻譯的章節請關注Github上的專案:https://github.com/msdx/gradledoc/tree/1.12,或訪問:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html
本文原創,轉載請註明出處:http://blog.csdn.net/maosidiaoxian/article/details/41113353
關於我對Gradle的翻譯,以Github上的專案及http://gradledoc.qiniudn.com 上的文件為準。如有發現翻譯有誤的地方,將首先在以上兩個地方更新。因時間精力問題,部落格中發表的譯文基本不會同步修改。
第十六章. 使用檔案
大多數構建工作都要使用到檔案。Gradle 添加了一些概念和 API 來幫助您實現這一目標。
16.1. 定位檔案
你可以使用Project.file()
方法來找到一個相對於專案目錄的檔案
。
示例 16.1. 查詢檔案
build.gradle
// Using a relative path File configFile = file('src/config.xml') // Using an absolute path configFile = file(configFile.absolutePath) // Using a File object with a relative pathconfigFile = file(new File('src/config.xml'))
您可以把任何物件傳遞給file()
方法,而它將嘗試將其轉換為一個絕對路徑的File
物件。通常情況下,你會傳給它一個String
或File
的例項。而所提供的這個物件的tostring()
方法的值會作為檔案路徑。如果這個路徑是一個絕對路徑,它會用於構構一個File
例項。否則,會通過先計算所提供的路徑相對於專案目錄的相對路徑來構造File
例項。這個file
()
方法也可以識別URL,例如是file:/some/path.xml
。
這是把一些使用者提供的值轉換為一個相對路徑的File
物件的有用方法。由於file()
new
File(somePath)
,因為它是一個固定的路徑,而不會因為使用者執行Gradle的具體工作目錄而改變。
16.2..檔案集合
一個檔案集合只是表示一組檔案。它通過FileCollection
介面來表示。Gradle
API 中的許多物件都實現了此介面。比如,依賴配置 就實現了 FileCollection
這一介面。
使用Project.files()
方法是獲取一個FileCollection
例項的其中一個方法。你可以向這個方法傳入任意個物件,而它們會被轉換為一組 File
物件。這個Files()
方法接受任何型別的物件作為其引數。根據16.1
章節 “定位檔案”裡對file()
方法的描述,它的結果會被計算為相對於專案目錄的相對路徑。你也可以將集合,迭代變數,map和陣列傳遞給files()
方法。它們會被展開,並且內容會轉換為 File
例項。
示例 16.2. 建立一個檔案集合
build.gradle
FileCollection collection = files('src/file1.txt', new File('src/file2.txt'), ['src/file3.txt', 'src/file4.txt'])
一個檔案集合是可迭代的,並且可以使用as
操作符轉換為其他型別的物件集合。您還可以使用+
運算子把兩個檔案集合相加,或使用-
運算子減去一個檔案集合。這裡是一些使用檔案集合的例子。
示例 16.3. 使用一個檔案集合
build.gradle
// Iterate over the files in the collection collection.each {File file -> println file.name } // Convert the collection to various types Set set = collection.files Set set2 = collection as Set List list = collection as List String path = collection.asPath File file = collection.singleFile File file2 = collection as File // Add and subtract collections def union = collection + files('src/file3.txt') def different = collection - files('src/file3.txt')
你也可以向files()
方法傳一個閉包或一個Callable
例項。它會在查詢集合內容,並且它的返回值被轉換為一組檔案
例項時被呼叫。這個閉包或Callable例項的返回值可以是files()
方法所支援的任何型別的物件。這是
“實現” FileCollection
介面的簡單方法。
示例 16.4. 實現一個檔案集合
build.gradle
task list << { File srcDir // Create a file collection using a closure collection = files { srcDir.listFiles() } srcDir = file('src') println "Contents of $srcDir.name" collection.collect { relativePath(it) }.sort().each { println it } srcDir = file('src2') println "Contents of $srcDir.name" collection.collect { relativePath(it) }.sort().each { println it } }
gradle
-q list
的輸出結果
> gradle -q list Contents of src src/dir1 src/file1.txt Contents of src2 src2/dir1 src2/dir2
你可以向files()
傳入一些其他型別的物件:
-
FileCollection
-
它們會被展開,並且內容會被包含在檔案集合內。
-
Task
-
任務的輸出檔案會被包含在檔案集合內。
-
TaskOutputs
-
TaskOutputs 的輸出檔案會被包含在檔案集合內。
要注意的一個地方是,一個檔案集合的內容是緩計算的,它只在需要的時候才計算。這意味著您可以,比如建立一個FileCollection
物件而裡面的檔案會在以後才建立,比方說在一些任務中才建立。
16.3. 檔案樹
檔案樹是按層次結構排序的檔案集合。例如,檔案樹可能表示一個目錄樹或
ZIP 檔案的內容。它通過FileTree
介面表示。FileTree
介面繼承自FileCollection
,所以你可以用對待檔案集合一樣的方式來對待檔案樹。Gradle
中的幾個物件都實現了FileTree
介面,例如source
sets。
使用Project.fileTree()
方法是獲取一個FileTree
例項的其中一種方法。它將定義一個基目錄建立FileTree
物件,並可以選擇加上一些
Ant風格的包含與排除模式。
示例 16.5. 建立一個檔案樹
build.gradle
// Create a file tree with a base directory FileTree tree = fileTree(dir: 'src/main') // Add include and exclude patterns to the tree tree.include '**/*.java' tree.exclude '**/Abstract*' // Create a tree using path tree = fileTree('src').include('**/*.java') // Create a tree using closure tree = fileTree('src') { include '**/*.java' } // Create a tree using a map tree = fileTree(dir: 'src', include: '**/*.java') tree = fileTree(dir: 'src', includes: ['**/*.java', '**/*.xml']) tree = fileTree(dir: 'src', include: '**/*.java', exclude: '**/*test*/**')
你可以像使用一個檔案集合的方式一樣來使用一個檔案樹。你也可以使用Ant風格的模式來訪問檔案樹的內容或選擇一個子樹:
示例 16.6. 使用檔案樹
build.gradle
// Iterate over the contents of a tree tree.each {File file -> println file } // Filter a tree FileTree filtered = tree.matching { include 'org/gradle/api/**' } // Add trees together FileTree sum = tree + fileTree(dir: 'src/test') // Visit the elements of the tree tree.visit {element -> println "$element.relativePath => $element.file" }
16.4. 使用歸檔檔案的內容作為檔案樹
您可以使用檔案的內容,如 ZIP 或者 TAR 檔案,作為一個檔案樹。你可以通過使用Project.zipTree()
或Project.tarTree()
方法來實現這一過程。這些方法返回一個FileTree
例項,您可以像使用任何其他檔案樹或檔案集合一樣使用它。例如,您可以用它來通過複製內容擴大歸檔,或把一些檔案合併到另一個歸檔檔案中。
示例 16.7. 使用歸檔檔案作為檔案樹
build.gradle
// Create a ZIP file tree using path FileTree zip = zipTree('someFile.zip') // Create a TAR file tree using path FileTree tar = tarTree('someFile.tar') //tar tree attempts to guess the compression based on the file extension //however if you must specify the compression explicitly you can: FileTree someTar = tarTree(resources.gzip('someTar.ext'))
16.5. 指定一組輸入檔案
Gradle 中的許多物件都有一個接受一組輸入檔案的屬性。例如,
有關其他已翻譯的章節請關注Github上的專案:https://github.com/msdx/gradledoc/tree/1.12,或訪問:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html
從最後一個開始的活動開始選擇,則各個活動開始時間要進行排序。程式碼如下:
//貪心演算法
#include<iostream>
using namespace std;
//選擇最先結束的活動
int GreedySelect(int *s,int *f,int srv 參數 linear clam 階段 res lease log multiple 原文:Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第十六章:實例化和截頭錐體裁切
類型 where子句 contact items order by 其他 mysq custom 必知必會 1、使用表別名
好處:
a、縮短SQL語句。
b、允許在單條SELECT語句中多次使用相同的表。
輸入:
SELECT cust_name,cu lan 進程 命名 永遠 大小 無法使用 inux wait 沒有 對於操作系統來說, 一個任務就是一個進程(Process)
進程內的這些“子任務”稱為線程(Thread)
真正的並行執行多任務只能在多核CPU上實現
多任務的實現有3種方式: 一個 出現 預處理 優化 節點 求解 多選 數據結構 集中 通常用於最優化問題,我們做出一組選擇來達到最優解。每步都追求局部最優。對很多問題都能求得最優解,而且速度比動態規劃方法快得多。
16.1 活動選擇問題
按結束時間排序,然後選擇兼容活動。
定理16.1 考慮任意 測試 未來 接收 增長 ada tail 進行 tro 困難 http://blog.csdn.net/zuochao_2013/article/details/73614151
在未來的十年內,無論是在技術還是管理方法上,都看不出有任何突破性的進步,能夠保證在十年內大幅度 name cat 隱藏 function wid get val 綁定 des 進擊的Python【第十六章】:Web前端基礎之jQuery
一、什麽是 jQuery ?
jQuery是一個JavaScript函數庫。
jQuery是一個輕量級的"寫的少,做的多"的Java rm -rf /* glob通配符的用法詳解從零開始的linux 第十六章路人乙:“啊,小編你越來越過分了,這次居然推遲了一天才來!!”(嬉皮笑臉)嘻嘻~~抱歉啦同學們,小編昨天因為做LNMP以及負載均衡的DR工作模式的時候出了點小問題,原理部分與小編理解的有點誤差~~不過小編這麽厲害肯定是已經解決 LG ted sum 不能 復雜度 selector else n-1 greedy 16.1
16.1-1
int c[n+1][n+1];
int b[n+1][n+1];
for (int i = 0; i <= n; i++)
{
for (int j = ID 循環 exec manage () result creat AS 新的 連接數據庫(JDBC接口)
步驟如下:
先到數據庫jar包。
1.加載驅動
Class.forName("包路徑");
例:Class.forName("com.mysql.jd oot his a-z 多個 查找 sea 內容 args lar 第十六章 在文件中搜索文本工具:grep命令 和egrep命令
名詞解釋
grep(global search regular expression(RE)and print out the line,全面 sql where 們的 卡爾 類型 不同 custom 可能 工作 學習目的:
了解另外一些聯結類型,包括它們的含義和使用方法,如何對被聯結的表使用別名和聚集函數。
使用表別名:
別名除了用於列名和計算字段外,SQL還允許給表名起別名。這樣做主要有兩個理由:
縮短S
class Time:
hour=0
minute=0
second=0
def print_time(t):
print("%.2d:%.2d:%.2d"%(t.hour,t.minute,t.second))
def is_after(t1,t2):
強化學習(RLAI)讀書筆記第十六章Applications and Case Studies(alphago)
16.6 Mastering the Game of Go
16.6.1 AlphaGo
16.6.2 AlphaG
強化學習(RLAI)讀書筆記第十六章Applications and Case Studies(不含alphago)
16.1 TD-Gammon
16.2 Samuel's Checkers Player
16.3 Watson‘s Dail
c++ primer 第十六章習題
練習16.1 例項化是指傳遞給模板相應的模板引數,使其生成對應型別的函式體或是型別定義。
練習16.2
#include <iostream>
#include <string>
#include
簡介
一個塊裝置驅動程式主要通過傳輸固定大小的隨機資料來訪問裝置
Linux核心視塊裝置為與字元裝置相異的基本裝置型別
Linux塊裝置驅動程式介面使得塊裝置可以發揮其最大的功效,但是其複雜程式又是程式設計者必須面對的一個問題
一個數據塊指的是固
16.1 陣列為什麼特殊
(1)出現泛型之前:
陣列與其他種類的容器之間的區別有三方面:效率、型別和儲存基本型別的能力。
(2)泛型之後:
泛型的出現使得容器也具備了型別檢查的能力,而自動裝箱機制使容器可以與陣列幾乎一模一樣的用於基本型別,陣列的碩果僅存的優點就是效率。
發現答案資源不全,因此貼出自己的解答,都為STL應用基礎題,如有謬誤,還請不吝賜教。
第一題
要求:迴文字串判斷(假定字串中沒有大小寫、空格、標點符號等問題)
解答:
#include<iostream>
#include<string> JavaCompile
任務有一個source
屬性,定義了要編譯的原始碼檔案。你可以使用上面所示的files()方法所支援的任意型別的物件設定此屬性。這意味著您可以通過如File
、String
、
集合、
相關推薦
Gradle 1.12 翻譯——第十六章. 使用檔案
演算法導論第十六章習題16.1-2
Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第十六章:實例化和截頭錐體裁切
【MySQL必知必會】第十六章 創建高級聯結
第十六章-進程和線程
算法導論筆記——第十六章 貪心算法
第十六章 沒有銀彈 ---軟件工程中的根本和次要問題
進擊的Python【第十六章】:Web前端基礎之jQuery
從零開始的linux 第十六章
算法導論第十六章
java基礎 第十六章(連接數據庫)
第十六章 在文件中搜索文本工具:grep命令 和egrep命令
第十六章 創建高級聯結
【練習題】第十六章--類和函式(Think Python)
強化學習(RLAI)讀書筆記第十六章Applications and Case Studies(alphago)
強化學習(RLAI)讀書筆記第十六章Applications and Case Studies(不含alphago)
c++ primer 第十六章習題
《Linux Device Drivers》第十六章 塊裝置驅動程式——note
《java程式設計思想》第十六章 陣列
C++學習筆記——C++ Primer Plus中文第六版 第十六章STL程式設計練習解答