Gradle入门:创建二进制分发
創(chuàng)建有用的應(yīng)用程序之后,很可能我們想與其他人共享它。 一種方法是創(chuàng)建一個(gè)可以從我們的網(wǎng)站下載的二進(jìn)制發(fā)行版。
這篇博客文章描述了如何滿足以下要求的二進(jìn)制發(fā)行版:
- 我們的二進(jìn)制分發(fā)絕對(duì)不能使用所謂的“胖子”方法。 換句話說(shuō),我們的應(yīng)用程序的依賴(lài)項(xiàng)不得與我們的應(yīng)用程序打包到同一jar文件中。
- 我們的二進(jìn)制發(fā)行版必須包含* nix和Windows操作系統(tǒng)的啟動(dòng)腳本。
- 我們的二進(jìn)制發(fā)行版的根目錄必須包含我們的應(yīng)用程序的許可證。
讓我們開(kāi)始吧。
補(bǔ)充閱讀:
- Gradle入門(mén):簡(jiǎn)介可幫助您安裝Gradle,描述Gradle構(gòu)建的基本概念,并描述如何使用Gradle插件為構(gòu)建提供功能。
- Gradle入門(mén):我們的第一個(gè)Java項(xiàng)目描述了如何使用Gradle創(chuàng)建Java項(xiàng)目并將應(yīng)用程序打包到可執(zhí)行jar文件中。
- Gradle入門(mén):依賴(lài)性管理介紹了如何管理Gradle項(xiàng)目的依賴(lài)性。
創(chuàng)建一個(gè)二進(jìn)制分布
該應(yīng)用程序插件是Gradle插件,它使我們可以運(yùn)行我們的應(yīng)用程序,進(jìn)行安裝,并創(chuàng)建不使用“胖子”方法的二進(jìn)制發(fā)行版。
我們可以通過(guò)對(duì)在Gradle入門(mén)教程的上一部分中創(chuàng)建的示例應(yīng)用程序的build.gradle文件進(jìn)行以下更改來(lái)創(chuàng)建二進(jìn)制分發(fā):
在對(duì)build.gradle文件進(jìn)行了這些更改之后,它看起來(lái)如下所示(相關(guān)部分已突出顯示):
apply plugin: 'application' apply plugin: 'java'repositories {mavenCentral() }dependencies {compile 'log4j:log4j:1.2.17'testCompile 'junit:junit:4.11' }mainClassName = 'net.petrikainulainen.gradle.HelloWorld'該應(yīng)用程序插件將五個(gè)任務(wù)添加到我們的項(xiàng)目中:
- 運(yùn)行任務(wù)將啟動(dòng)應(yīng)用程序。
- startScripts任務(wù)將啟動(dòng)腳本創(chuàng)建到build / scripts目錄。 該任務(wù)為Windows和* nix操作系統(tǒng)創(chuàng)建啟動(dòng)腳本。
- installApp任務(wù)將應(yīng)用程序安裝到build / install / [項(xiàng)目名稱(chēng)]目錄中。
- distZip任務(wù)創(chuàng)建二進(jìn)制發(fā)行版,并將其打包為可從build / distributions目錄中找到的zip文件。
- distTar任務(wù)創(chuàng)建二進(jìn)制發(fā)行版,并將其打包到可從build / distributions目錄中找到的tar文件中。
我們可以通過(guò)在項(xiàng)目的根目錄中運(yùn)行以下命令之一來(lái)創(chuàng)建二進(jìn)制分發(fā): gradle distZip或gradle distTar 。 如果我們創(chuàng)建打包為zip文件的二進(jìn)制分發(fā),請(qǐng)參見(jiàn)以下輸出:
> gradle distZip :compileJava :processResources :classes :jar :startScripts :distZipBUILD SUCCESSFULTotal time: 4.679 secs如果解壓縮由應(yīng)用程序插件創(chuàng)建的已創(chuàng)建二進(jìn)制發(fā)行版,則將獲得以下目錄結(jié)構(gòu):
- bin目錄包含啟動(dòng)腳本。
- lib目錄包含我們應(yīng)用程序的jar文件及其依賴(lài)項(xiàng)。
您可以通過(guò)閱讀第45章“ Gradle用戶(hù)指南”中的應(yīng)用程序插件來(lái)獲取有關(guān)應(yīng)用程序插件的更多信息。
現(xiàn)在,我們可以創(chuàng)建一個(gè)滿足幾乎所有需求的二進(jìn)制發(fā)行版。 但是,我們?nèi)匀恍枰獙?yīng)用程序的許可證添加到二進(jìn)制分發(fā)的根目錄中。 讓我們繼續(xù)前進(jìn),找出我們?nèi)绾巫龅竭@一點(diǎn)。
將我們的應(yīng)用程序的許可證文件添加到二進(jìn)制分發(fā)中
通過(guò)執(zhí)行以下步驟,我們可以將應(yīng)用程序的許可證添加到二進(jìn)制分發(fā)中:
讓我們繼續(xù)仔細(xì)研究這些步驟。
將許可證文件復(fù)制到構(gòu)建目錄
包含我們的應(yīng)用程序許可證的文件的名稱(chēng)為L(zhǎng)ICENSE ,可以從我們項(xiàng)目的根目錄中找到。
我們可以按照以下步驟將許可證文件復(fù)制到構(gòu)建目錄:
完成這些步驟后, build.gradle文件如下所示(相關(guān)部分突出顯示):
apply plugin: 'application' apply plugin: 'java'repositories {mavenCentral() }dependencies {compile 'log4j:log4j:1.2.17'testCompile 'junit:junit:4.11' }mainClassName = 'net.petrikainulainen.gradle.HelloWorld'task copyLicense(type: Copy) {from "LICENSE"into "$buildDir" }附加信息:
- 復(fù)制任務(wù)的API文檔
- 《 Gradle用戶(hù)指南》的16.6節(jié)復(fù)制文件
現(xiàn)在,我們創(chuàng)建了一個(gè)任務(wù),該任務(wù)將LICENSE文件從項(xiàng)目的根目錄復(fù)制到構(gòu)建目錄。 但是,當(dāng)在項(xiàng)目的根目錄中運(yùn)行命令gradle distZip時(shí) ,將看到以下輸出:
> gradle distZip :compileJava :processResources :classes :jar :startScripts :distZipBUILD SUCCESSFULTotal time: 4.679 secs換句話說(shuō),我們的新任務(wù)不會(huì)被調(diào)用,這自然意味著許可證文件不包含在我們的二進(jìn)制發(fā)行版中。 讓我們解決這個(gè)問(wèn)題。
將許可證文件添加到二進(jìn)制分發(fā)版
我們可以按照以下步驟將許可證文件添加到創(chuàng)建的二進(jìn)制分發(fā)中:
完成這些步驟后, build.gradle文件如下所示(相關(guān)部分突出顯示):
apply plugin: 'application' apply plugin: 'java'repositories {mavenCentral() }dependencies {compile 'log4j:log4j:1.2.17'testCompile 'junit:junit:4.11' }mainClassName = 'net.petrikainulainen.gradle.HelloWorld'task copyLicense {outputs.file new File("$buildDir/LICENSE")doLast {copy {from "LICENSE"into "$buildDir"}} }applicationDistribution.from(copyLicense) {into "" }補(bǔ)充閱讀:
- Task的doLast()操作的API文檔
- 第45.5節(jié)在分發(fā)的Gradle用戶(hù)指南中包括其他資源
- ApplicationPluginConvention類(lèi)的Groovydoc
當(dāng)在項(xiàng)目的根目錄中運(yùn)行命令gradle distZip時(shí) ,將看到以下輸出:
> gradle distZip :copyLicense :compileJava :processResources :classes :jar :startScripts :distZipBUILD SUCCESSFULTotal time: 5.594 secs如我們所見(jiàn),現(xiàn)在將調(diào)用copyLicense任務(wù),并且如果解包二進(jìn)制分發(fā)包,則會(huì)注意到LICENSE文件是從其根目錄中找到的。
讓我們繼續(xù)總結(jié)一下我們從此博客文章中學(xué)到的知識(shí)。
摘要
這篇博客文章教會(huì)了我們?nèi)?#xff1a;
- 我們了解到可以使用應(yīng)用程序插件創(chuàng)建二進(jìn)制發(fā)行版。
- 我們學(xué)習(xí)了如何使用復(fù)制任務(wù)將文件從源目錄復(fù)制到目標(biāo)目錄。
- 我們了解了如何將文件添加到由應(yīng)用程序插件創(chuàng)建的二進(jìn)制分發(fā)中。
如果您想玩這個(gè)博客文章的示例應(yīng)用程序, 可以從Github獲得 。
翻譯自: https://www.javacodegeeks.com/2014/09/getting-started-with-gradle-creating-a-binary-distribution.html
總結(jié)
以上是生活随笔為你收集整理的Gradle入门:创建二进制分发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 索尼黑卡设置(索尼黑卡设置人像拍摄)
- 下一篇: 4个万无一失的技巧让您开始使用JBoss