简单的Gradle Java插件自定义
正如我在“ 用Gradle構建Java的初步了解”一文中所展示的那樣,當人們使用Java插件并將文件和目錄放置在該插件期望的位置時, Gradle尤其適用于構建Java應用程序的基礎知識(慣例-基于項目的布局 )。 但是,并非總是有一種結構(尤其是在舊系統中)可以滿足Gradle的預期約定。 在本文中,我將介紹重寫Gradle Java插件的一些約定,以允許簡單的Gradle構建與不同的目錄結構一起使用。
以下代碼清單包含構建build.gradle的Gradle代碼。 我在構建代碼中添加了注釋,以幫助解釋每種類型的定制正在做什么。
build.gradle
// build.gradle // // This simple example of a Gradle build file exists primarily to demonstrate // approaches to overriding Gradle's default conventions related to use of the // Java plugin.// The 'java' plugin must be applied before attempting to access the sourceSets // and other properties defined by the Java plugin to avoid an error message // similar to the following: "Could not find method sourceSets() for arguments..." apply plugin: 'java'// Redefine where Gradle should expect Java source files (*.java) sourceSets {main {java {srcDirs 'java'}resources {srcDir 'resources'}} }// Redefine where .class files are written sourceSets.main.output.classesDir = file("dist/classes")// Redefine where 'jar' task should place generated JAR file. jar {destinationDir = file('dist/jar') }// Fully qualified directory/JAR for Guava Release 16 JAR file: // C:\\guava16\\guava-16.0-rc1.jar repositories { flatDir{dirs 'C:\\guava16'} }dependencies {compile 'guava:guava:16.0-rc1' }defaultTasks 'clean', 'jar'上面顯示的G??radle構建文件首先應用Java插件。 然后,它覆蓋Java源文件的Gradle常規位置(子目錄代表軟件包和文件具有.jar擴展名的最高級目錄),將此目錄從默認的src/main/java更改為簡單的java 。 同樣,生產資源的默認src/main/resources位置更改為簡單的resources 。
然后,通過指定sourceSets.main.output.classesDir現在為dist/classes sourceSets.main.output.classesDir ( build/classes/main是常規默認值),上面顯示的構建文件然后更改* .class文件(具有表示其包結構的適當子目錄)的放置位置。 同樣, jar任務的destinationDir被覆蓋以指向dist/jar ( build/libs是約定),這是jar任務生成的JAR文件的寫入位置。
上面顯示的簡單Gradle構建腳本中顯示的最終定制是使我的應用程序可以使用Guava Release 16 JAR的“存儲庫”和“依賴項”的規范(碰巧取決于Guava Release 16)。 Gradle為使用Maven或Ivy存儲庫提供了復雜的支持,包括Maven Central的特殊語法,但是此特定示例從我的本地文件系統(C:\ guava16)獲取了Guava Release 16 JAR。 依賴項本身用“ guava:guava:16.0-rc1”表示,因為該指定存儲庫目錄中的JAR被稱為“ guava-16.0-rc1.jar”。
為了使這些自定義的測試更加容易,我將defaultTasks顯式指定為clean和jar因此只要與上述build.gradle文件位于同一目錄中,我就需要在命令行上鍵入gradle ,并且只要在該級別上有一個“ java”子目錄,其相應的基于包的目錄中便包含.java源文件。
 當遵循Gradle的約定時,Gradle的構建最簡潔,最容易編寫和閱讀。 但是,覆蓋這些約定并指定自定義配置以匹配舊系統并不是很困難。 
翻譯自: https://www.javacodegeeks.com/2014/01/simple-gradle-java-plugin-customization.html
總結
以上是生活随笔為你收集整理的简单的Gradle Java插件自定义的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 域名接入备案需要多久(域名接入备案)
 - 下一篇: 手机做阅读挣钱的平台(安卓阅读赚钱)