1. 程式人生 > >gradle學習(4)-構建java專案

gradle學習(4)-構建java專案

1.認識plugin

告訴gradle某個專案是特殊的專案。比如java和android

2.定義java專案

apply plugin: 'java'


就一步就可以定義一個java專案。上面就是告訴gradle我需要你準備java專案所需的元件來滿足需求。

3.java專案的目錄結構

存放java原始碼的目錄:src/main/java

mkdir -p src/main/java


存放測試原始碼的目錄:src/test/java

mkdir -p src/test/java


存放jar包要包含的其他檔案(例如資原始檔)的目錄:src/main/resources

存放執行case需要的檔案的目錄:src/test/resources

所有新生成的檔案存放目錄:build

存放jar包目錄或者java專案自身壓縮後的jar包存放的目錄:build/libs

(build目錄gradle會自己生成)。

4.構建專案

使用gradle build命令

qianhuis-Mac-mini:1228_1 qianhui$ gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 10.155 secs

專案的根目錄下多了build目錄,build下多了libs和tmp兩個資料夾。


5.清除上次的構建

使用命令 gradle clean

qianhuis-Mac-mini:1228_1 qianhui$ gradle clean
:clean

BUILD SUCCESSFUL

Total time: 3.764 secs

會發現build目錄消失了。


6.只編譯java原始碼,生成jar包。不執行測試

使用命令gradle assemble

qianhuis-Mac-mini:1228_1 qianhui$ gradle assemble
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:assemble

BUILD SUCCESSFUL

Total time: 9.968 secs

注意它和build的區別在於,執行只到:assemble就停止了,生成build目錄,而build還多了以下任務。
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

7.編譯和測試程式碼

qianhuis-Mac-mini:1228_1 qianhui$ gradle check
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE

BUILD SUCCESSFUL

Total time: 2.854 secs

只進行測試,不生成build目錄。

8.擴充套件依賴-dependencies

java專案一般會依賴外部jar包,之前我們都會通過maven獲取這些jar包。gradle也是這麼做多。使用

repositories 

任務來獲取maven中央庫。這是專案告訴gradle去什麼地方找所需要的jar包。具體如下

apply plugin: 'java'

repositories{
        mavenCentral()
}

在java編譯的時候,需要一些用到一些jar包。這個時候可以通過dependencies任務來指定這些依賴的jar包,構建專案的時候,gradle會去中央庫裡下載這些jar包到本地
apply plugin: 'java'

repositories{
        mavenCentral()
}

dependencies {
        compile group:'commons-collections',name:'commons-collections',version:'3.2'
        testCompile group:'junit',name:'junit',version:'4.0+'
}

9.定製專案

修改MANIFEST.MF檔案中的內容

Manifest-Version: 1.0

給該檔案新增一些熟悉

apply plugin: 'java'

repositories{
        mavenCentral()
}

dependencies {
        compile group:'commons-collections',name:'commons-collections',version:'3.2'
        testCompile group:'junit',name:'junit',version:'4.0+'
}

sourceCompatibility = 1.5
version = '1.0'
jar {
        manifest {
                attributes 'Implementation-Title':'Gradle Quickstart',
                        'Implementation-Version':version
        }
}


然後該檔案的內容會新增2個屬性。而且生成的jar包也會多加了個字尾
Manifest-Version: 1.0
Implementation-Title: Gradle Quickstart
Implementation-Version: 1.0

jar包名為:1228_1-1.0.jar

說明我們可以隨意的給任務新增屬性。

給某一個任務新增一個系統屬性

test {
    systemProperties 'property': 'value'
}

可以通過命令gradle properties來瀏覽所有的屬性

qianhuis-Mac-mini:1228_1 qianhui$ gradle properties
:properties

------------------------------------------------------------
Root project
------------------------------------------------------------

allprojects: [root project '1228_1']
ant: [email protected]
antBuilderFactory: [email protected]e
archivesBaseName: 1228_1
artifacts: org.gra[email protected]23af4eff
asDynamicObject: [email protected]
assemble: task ':assemble'
baseClassLoaderScope: [email protected]dcac775
binaries: [classes 'main', classes 'test']
build: task ':build'
buildDependents: task ':buildDependents'
buildDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build
buildFile: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build.gradle
buildNeeded: task ':buildNeeded'
buildScriptSource: [email protected]
buildTasks: [build]
buildscript: [email protected]1fb5
check: task ':check'
childProjects: {}
class: class org.gradle.api.internal.project.DefaultProject_Decorated
classLoaderScope: [email protected]064dd87
classes: task ':classes'
clean: task ':clean'
compileJava: task ':compileJava'
compileTestJava: task ':compileTestJava'
components: [[email protected]]
configurationActions: org.gradle.c[email protected]44ad12cd
configurations: [configuration ':archives', configuration ':compile', configuration ':default', configuration ':runtime', configuration ':testCompile', configuration ':testRuntime']
convention: [email protected]
defaultArtifacts: org.grad[email protected]6d97b851
defaultTasks: []
dependencies: org.gradle.api.interna[email protected]3c6060d
dependencyCacheDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/dependency-cache
dependencyCacheDirName: dependency-cache
depth: 0
description: null
distsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/distributions
distsDirName: distributions
docsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/docs
docsDirName: docs
ext: [email protected]3db7416a
extensions: [email protected]
fileOperations: [email protected]
fileResolver: [email protected]
gradle: build '1228_1'
group: 
inheritedScope: org.gradle.api.internal.ExtensibleDyna[email protected]
jar: task ':jar'
javadoc: task ':javadoc'
libsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/libs
libsDirName: libs
logger: [email protected]
logging: [email protected]
modelRegistry: [email protected]
module: [email protected]
name: 1228_1
parent: null
parentIdentifier: null
path: :
plugins: [[email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]]
processOperations: [email protected]
processResources: task ':processResources'
processTestResources: task ':processTestResources'
project: root project '1228_1'
projectDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1
projectEvaluationBroadcaster: ProjectEvaluationListener broadcast
projectEvaluator: [email protected]288
projectRegistry: [email protected]
properties: {...}
rebuildTasks: [clean, build]
reporting: [email protected]
reportsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/reports
repositories: [org.gradle.api.internal.[email protected]54bbc891]
resources: [email protected]c
rootDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1
rootProject: root project '1228_1'
runtimeClasspath: file collection
scriptHandlerFactory: org[email protected]1493f48b
scriptPluginFactory: [email protected]
serviceRegistryFactory: [email protected]3
services: ProjectScopeServices
sourceCompatibility: 1.5
sourceSets: [source set 'main', source set 'test']
sources: [source set 'main', source set 'test']
standardOutputCapture: [email protected]
state: project state 'EXECUTED'
status: integration
subprojects: []
targetCompatibility: 1.5
tasks: [task ':assemble', task ':build', task ':buildDependents', task ':buildNeeded', task ':check', task ':classes', task ':clean', task ':compileJava', task ':compileTestJava', task ':jar', task ':javadoc', task ':processResources', task ':processTestResources', task ':properties', task ':test', task ':testClasses']
test: task ':test'
testClasses: task ':testClasses'
testReportDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/reports/tests
testReportDirName: tests
testResultsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/test-results
testResultsDirName: test-results
version: 1.0

BUILD SUCCESSFUL

Total time: 3.311 secs

10.釋出專案

sourceCompatibility = 1.5
version = '2.0'
jar {
        manifest {
                attributes 'Implementation-Title':'Gradle Quickstart',
                        'Implementation-Version':version
        }
}

test {
        systemProperties 'property':'value'
}

uploadArchives {
        repositories {
                flatDir {
                        dirs 'repos'
                }
        }
}

執行該task:

qianhuis-Mac-mini:1228_1 qianhui$ gradle uploadArchives
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:uploadArchives

BUILD SUCCESSFUL

Total time: 3.205 secs

在專案根目錄下生成repos目錄,裡面生成了可釋出的jar包和xml檔案等。


相關推薦

gradle學習(4)-構建java專案

1.認識plugin 告訴gradle某個專案是特殊的專案。比如java和android 2.定義java專案 apply plugin: 'java' 就一步就可以定義一個java專案。上面就是告訴gradle我需要你準備java專案所需的元件來滿足需求。

Gradle學習構建java與web項目

jcenter yun 接口 webxml oot conf ava getc clas 一.使用Gradle的java插件構建Java項目 1)Gradle插件包含了若幹個接口定義和已有的任務項,語法結構:apply plugin:‘插件名‘ ,此處我們定義插件

Maven 學習總結——構建java專案java web專案

一、構建Jave專案 1.1、建立Jave Project   1、使用mvn archetype:generate命令,如下所示:    mvn archetype:generate -DgroupId=com.mycompany.app

Gradle之重新認識Gradle(專案結構、命令列、task、構建Java專案、包裝器)

前言:之前一直接觸使用Gradle完成Android專案的自動化構建,所謂重新認識Gradle是因為最近看了《Gradle IN Action》一書,對gradle進行了一次全面的重新的認識。所以決定以系列部落格,來完成自己對Gradle學習之路的一個總結。關於

Gradle構建JAVA專案

本章介紹如何使用Gradle構建檔案來構建一個Java專案。 首先,我們必須向構建指令碼中新增Java外掛,因為它提供了編譯Java原始碼,執行單元測試,建立Javadoc和建立JAR檔案的任務。 在build.gradle檔案中使用以下程式碼行。 apply

gradle構建java專案

一般像後臺的專案都是用maven構建的,我們來看一下使用gradle來構建java專案,本文不涉及到具體的gradle配置 IDE: idea 首先安裝gradle 並配置環境變數 在專案目錄下執行 gradle wrapper 生成wrapper檔案

Gradle學習(二十)——多專案構建詳解

跨專案配置 雖然子專案之間可以完全隔離單獨配置,但是子專案直接有相同特徵的情況也是很常見的,多個專案共享配置是更好的選擇。 配置和執行 在gradle學習-十八-構建的生命週期這一篇中我們已經講過Gradle構建過程中的各個階段,我們繼續擴充套件到多專

jenkins pipeline指令碼 構建 java 專案例子

一. 最近使用jenkins pipeline 比較多,這個是配置一個通用的 java 專案的模板 #!groovy def oper_checkout(SCM_TYPE,SCM_URL,SCM_AUTH_PASS,SCM_BRANCH=' ',SCM_AUTH_USER='&nb

springboot學習構建簡單專案搭建

概述   相信對於Java開發者而言,spring和springMvc兩個框架一定不陌生,這兩個框架需要我們手動配置的地方非常多,各種的xml檔案,properties檔案,構建一個專案還是挺複雜的,在這種情況下,springboot應運而生,他能夠快速的構建spring專案,而且讓專案正常執行起來的配置檔案

gradle學習(5)-建立eclipse專案

上一篇gradle學習文章學到構建java專案,這一篇來看看怎麼講上一次的java專案變成eclipse專案 1.標示eclipse專案 apply plugin: 'eclipse' build.gradle如下 apply plugin: 'java' a

Maven 構建Java專案 通過JavaApi 操作 Hbase

部落格內容在windows環境下使用Maven工具構建Java專案,通過JavaApi操作Hbase構建前提已經搭建好hadoop大資料平臺(我的hadoop基本配置為:3臺主機,主機名稱為master,slave1,slave2)hbase-site.xml配置為: <

Linux下使用maven+svn構建Java專案

1.maven安裝 2. 解壓到 /user/local cd /usr/local tar apache-maven-bin.zip 解壓後會在/usr/local 下生成一個資料夾apache-maven 3. 設定環境變數

Linux學習4-部署LAMP專案

前言 LAMP——linux  Apache  Mysql  PHP 今天我們來學習如何在Linux部署Discuz論壇 準備工作 1.一臺linux伺服器,沒有購買伺服器的小夥伴也可以使用虛擬機器,作業系統為CentOS7.2,64位 2,XShell6, 以及Xftp4.0

gradle學習之旅(四) 使用gradle構建簡單的java web項目

compile jdk return resp 內容 mave name throws pan 本節通過一個簡單的javaweb項目來體會gradle的使用 需求 構建一個javaweb項目,搭建jsp+servlet開發環境 可以將需求分解為兩步: 使用gradle構建

gradleJava專案構建引數詳細解釋

如果需要了解更多細節或答疑,請關注我的公眾號: 總結整理Java專案建立時常見gradle引數的解釋與用法。 首先通過Idea的spring initializr新建一個Gradle構建的Java任務,隨便選擇幾個springboot元件: 選擇Finish,專案新建

Gradle 構建Java,Web專案以及包裝器

文章目錄 1.定製專案結構 2.定製專案輸出路徑 3.配置和使用外部依賴 4.構建Java專案 4.1 gradle構建Java流程 4.2 定製gradle的Ja

Gradle學習(六)——多專案構建

只有一個的構建檔案和資源層級的通常是很小的專案,很少有一個超大而且還是不可分割的專案。把一個專案拆分成幾個相互依賴的小專案更容易有助於理解,相互依賴很重要,可以通過一次構建過程把多個專案構建起來。在Gradle中,這叫做多專案構建。 多專案構建的結構 多

gradle構建java專案部署到伺服器

最近剛接觸gradle和爬蟲,把感覺有用的記下來開發工具:eclipse,spring+mybatis+gradle+webmagic前提是本地已經有了一個可以執行的gradle的專案,以下主要介紹怎麼把專案部署到伺服器上。1.改build.gradle檔案build.gra

利用Gradle構建Java多模組專案

    Java新手,準備寫個專案來鞏固下知識點,在新建專案時不知道選擇用什麼作為構建工具,Maven肯定用過,只限於使用過,沒有系統的去學習。之前做Android開發時用過Gradle來構建專案,也沒深入研究過。後來在公司接觸過用Gradle構建的java專案,才去深入瞭解

java網絡編程學習之——構建基於多線程的網絡通信模型1

傳遞 println util adl 多個 start oid stream 數值   該例展示了多用戶/服務器通信模型,包含三個文件:Server.java ServerThread.java 和Client.java類。其中ServerThread類支持多線程,為