简单的Gradle Java插件自定义
正如我在“ 用Gradle構(gòu)建Java的初步了解”一文中所展示的那樣,當(dāng)人們使用Java插件并將文件和目錄放置在該插件期望的位置時(shí), Gradle尤其適用于構(gòu)建Java應(yīng)用程序的基礎(chǔ)知識(shí)(慣例-基于項(xiàng)目的布局 )。 但是,并非總是有一種結(jié)構(gòu)(尤其是在舊系統(tǒng)中)可以滿(mǎn)足Gradle的預(yù)期約定。 在本文中,我將介紹重寫(xiě)Gradle Java插件的一些約定,以允許簡(jiǎn)單的Gradle構(gòu)建與不同的目錄結(jié)構(gòu)一起使用。
以下代碼清單包含構(gòu)建build.gradle的Gradle代碼。 我在構(gòu)建代碼中添加了注釋,以幫助解釋每種類(lèi)型的定制正在做什么。
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構(gòu)建文件首先應(yīng)用Java插件。 然后,它覆蓋Java源文件的Gradle常規(guī)位置(子目錄代表軟件包和文件具有.jar擴(kuò)展名的最高級(jí)目錄),將此目錄從默認(rèn)的src/main/java更改為簡(jiǎn)單的java 。 同樣,生產(chǎn)資源的默認(rèn)src/main/resources位置更改為簡(jiǎn)單的resources 。
然后,通過(guò)指定sourceSets.main.output.classesDir現(xiàn)在為dist/classes sourceSets.main.output.classesDir ( build/classes/main是常規(guī)默認(rèn)值),上面顯示的構(gòu)建文件然后更改* .class文件(具有表示其包結(jié)構(gòu)的適當(dāng)子目錄)的放置位置。 同樣, jar任務(wù)的destinationDir被覆蓋以指向dist/jar ( build/libs是約定),這是jar任務(wù)生成的JAR文件的寫(xiě)入位置。
上面顯示的簡(jiǎn)單Gradle構(gòu)建腳本中顯示的最終定制是使我的應(yīng)用程序可以使用Guava Release 16 JAR的“存儲(chǔ)庫(kù)”和“依賴(lài)項(xiàng)”的規(guī)范(碰巧取決于Guava Release 16)。 Gradle為使用Maven或Ivy存儲(chǔ)庫(kù)提供了復(fù)雜的支持,包括Maven Central的特殊語(yǔ)法,但是此特定示例從我的本地文件系統(tǒng)(C:\ guava16)獲取了Guava Release 16 JAR。 依賴(lài)項(xiàng)本身用“ guava:guava:16.0-rc1”表示,因?yàn)樵撝付ù鎯?chǔ)庫(kù)目錄中的JAR被稱(chēng)為“ guava-16.0-rc1.jar”。
為了使這些自定義的測(cè)試更加容易,我將defaultTasks顯式指定為clean和jar因此只要與上述build.gradle文件位于同一目錄中,我就需要在命令行上鍵入gradle ,并且只要在該級(jí)別上有一個(gè)“ java”子目錄,其相應(yīng)的基于包的目錄中便包含.java源文件。
當(dāng)遵循Gradle的約定時(shí),Gradle的構(gòu)建最簡(jiǎn)潔,最容易編寫(xiě)和閱讀。 但是,覆蓋這些約定并指定自定義配置以匹配舊系統(tǒng)并不是很困難。
翻譯自: https://www.javacodegeeks.com/2014/01/simple-gradle-java-plugin-customization.html
總結(jié)
以上是生活随笔為你收集整理的简单的Gradle Java插件自定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 域名接入备案需要多久(域名接入备案)
- 下一篇: 运行时的Java 8参数名称