java gradle入门_Gradle入门:我们的第一个Java项目
java gradle入門
這篇博客文章描述了如何使用Gradle編譯和打包一個簡單的Java項目。
我們的Java項目只有一個要求:
我們的構(gòu)建腳本必須創(chuàng)建一個可執(zhí)行的jar文件。 換句話說,我們必須能夠使用以下命令運行程序:
讓我們找出如何滿足這一要求。
創(chuàng)建一個Java項目
我們可以通過應用Java插件來創(chuàng)建Java項目。 我們可以通過在build.gradle文件中添加以下行來實現(xiàn) :
apply plugin: 'java'這就對了。 現(xiàn)在,我們已經(jīng)創(chuàng)建了一個Java項目。
Java插件向我們的構(gòu)建添加了新的約定(例如,默認的項目布局), 新的任務(wù)和新的屬性 。
讓我們繼續(xù)前進,快速瀏覽一下默認的項目布局。
Java項目的項目布局
Java項目的默認項目布局如下:
- src / main / java目錄包含我們項目的源代碼。
- src / main / resources目錄包含我們項目的資源(例如屬性文件)。
- src / test / java目錄包含測試類。
- src / test / resources目錄包含測試資源。
我們構(gòu)建的所有輸出文件都在構(gòu)建目錄下創(chuàng)建 。 該目錄包含與該博客文章相關(guān)的以下子目錄(也有其他子目錄,但以后我們將討論它們):
- classes目錄包含已編譯的.class文件。
- libs目錄包含由構(gòu)建創(chuàng)建的jar或war文件。
讓我們繼續(xù)并將簡單的主類添加到我們的項目中。
在我們的版本中添加主類
讓我們創(chuàng)建一個簡單的主類,該主類將單詞:“ Hello World”打印到System.out 。 HelloWorld類的源代碼如下所示:
package net.petrikainulainen.gradle;public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");} }HelloWorld類已添加到src / main / java / net / petrikainulainen / gradle目錄。
那很好。 但是,我們?nèi)匀槐仨毦幾g和打包我們的項目。 讓我們繼續(xù)看一下Java項目的任務(wù)。
Java項目的任務(wù)
Java插件向我們的構(gòu)建中添加了許多任務(wù),但是與此博客文章相關(guān)的任務(wù)是:
- 組裝任務(wù)將編譯應用程序的源代碼并將其打包到j(luò)ar文件中。 此任務(wù)不會運行單元測試。
- 構(gòu)建任務(wù)執(zhí)行項目的完整構(gòu)建。
- clean任務(wù)刪除構(gòu)建目錄。
- compileJava任務(wù)編譯我們應用程序的源代碼。
我們還可以通過在命令提示符處運行以下命令來獲取可運行任務(wù)及其描述的完整列表:
gradle tasks這是在不閱讀構(gòu)建腳本的情況下獲得項目概述的好方法。 如果在示例項目的根目錄中運行此命令,則會看到以下輸出:
> gradle tasks :tasks------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------Build tasks ----------- assemble - Assembles the outputs of this project. build - Assembles and tests this project. buildDependents - Assembles and tests this project and all projects that depend on it. buildNeeded - Assembles and tests this project and all projects it depends on. classes - Assembles classes 'main'. clean - Deletes the build directory. jar - Assembles a jar archive containing the main classes. testClasses - Assembles classes 'test'.Build Setup tasks ----------------- init - Initializes a new Gradle build. [incubating] wrapper - Generates Gradle wrapper files. [incubating]Documentation tasks ------------------- javadoc - Generates Javadoc API documentation for the main source code.Help tasks ---------- dependencies - Displays all dependencies declared in root project 'first-java-project'. dependencyInsight - Displays the insight into a specific dependency in root project 'first-java-project'. help - Displays a help message projects - Displays the sub-projects of root project 'first-java-project'. properties - Displays the properties of root project 'first-java-project'. tasks - Displays the tasks runnable from root project 'first-java-project'.Verification tasks ------------------ check - Runs all checks. test - Runs the unit tests.Rules ----- Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration. Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration. Pattern: clean<TaskName>: Cleans the output files of a task.To see all tasks and more detail, run with --all.BUILD SUCCESSFULTotal time: 2.792 secs讓我們繼續(xù)前進,了解如何打包Java項目。
打包我們的Java項目
我們可以使用兩個不同的任務(wù)來打包應用程序:
如果在命令提示符處運行命令gradle組裝 ,我們將看到以下輸出:
> gradle assemble :compileJava :processResources :classes :jar :assembleBUILD SUCCESSFULTotal time: 3.163 secs如果我們在命令提示符下運行命令gradle build ,我們將看到以下輸出:
> gradle build :compileJava :processResources :classes :jar :assemble :compileTestJava :processTestResources :testClasses :test :check :buildBUILD SUCCESSFULTotal time: 3.01 secs這些命令的輸出表明,這些任務(wù)的不同之處在于:
- 組裝任務(wù)僅運行打包我們的應用程序所需的任務(wù)。
- 構(gòu)建任務(wù)運行打包我們的應用程序所需的任務(wù),并運行自動化測試。
這兩個命令都將first-java-project.jar文件創(chuàng)建到build / libs目錄。
通過使用以下模板創(chuàng)建創(chuàng)建的jar文件的默認名稱: [項目名稱] .jar ,并且該項目的默認名稱與創(chuàng)建它的目錄的名稱相同。 因為我們的項目目錄的名稱是first-java-project ,所以創(chuàng)建的jar的名稱是first-java-project.jar 。
現(xiàn)在,我們可以嘗試使用以下命令來運行我們的應用程序:
java -jar first-java-project.jar執(zhí)行此操作時,將看到以下輸出:
> java -jar first-java.project.jar No main manifest attribute, in first-java-project.jar問題是我們尚未在清單文件中配置jar文件的主類。 讓我們找出如何解決這個問題。
配置jar文件的主類
Java插件向我們的項目添加了一個jar任務(wù) ,每個jar對象都有一個manifest屬性,該屬性是Manifest的一個實例。
我們可以使用Manifest接口的attribute()方法配置創(chuàng)建的jar文件的主類。 換句話說,我們可以使用包含鍵值對的映射來指定添加到清單文件的屬性。
我們可以通過設(shè)置Main-Class屬性的值來設(shè)置應用程序的入口點。 在對build.gradle文件進行了必要的更改之后,其源代碼如下所示(相關(guān)部分已突出顯示):
apply plugin: 'java'jar {manifest {attributes 'Main-Class': 'net.petrikainulainen.gradle.HelloWorld'} }Java SE教程提供了有關(guān)清單文件的更多信息 。
通過運行g(shù)radle assemble或gradle build命令創(chuàng)建了一個新的jar文件之后,可以使用以下命令運行jar文件:
java -jar first-java-project.jar當我們運行應用程序時,以下文本將打印到System.out :
> java -jar first-java-project.jar Hello World!今天就這些。 讓我們找出從這篇博客文章中學到的知識。
摘要
現(xiàn)在,我們使用Gradle創(chuàng)建了一個簡單的Java項目。 這篇博客文章教會了我們四件事:
- 我們知道可以通過應用Gradle Java插件來創(chuàng)建Java項目。
- 我們了解到Java項目的默認目錄布局與Maven項目的默認目錄布局相同。
- 我們了解到,可以從構(gòu)建目錄中找到由構(gòu)建生成的所有輸出文件。
- 我們了解了如何自定義添加到清單文件的屬性。
PS此博客文章的示例項目可在Github上獲得 。
翻譯自: https://www.javacodegeeks.com/2014/06/getting-started-with-gradle-our-first-java-project.html
java gradle入門
總結(jié)
以上是生活随笔為你收集整理的java gradle入门_Gradle入门:我们的第一个Java项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 11新字符串方法的基准
- 下一篇: java ee打印功能_Java EE: