## 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: org.gradle.api.internal.project.DefaultAntBuilder@310a7aa1
antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@26f8f92e
archivesBaseName: 1228_1
artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@23af4eff
asDynamicObject: org.gradle.api.internal.ExtensibleDynamicObject@4a6b59a6
assemble: task ':assemble'
baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@4dcac775
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: org.gradle.groovy.scripts.UriScriptSource@5e5064ba
buildTasks: [build]
buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler@70051fb5
check: task ':check'
childProjects: {}
class: class org.gradle.api.internal.project.DefaultProject_Decorated
classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@6064dd87
classes: task ':classes'
clean: task ':clean'
compileJava: task ':compileJava'
compileTestJava: task ':compileTestJava'
components: [org.gradle.api.internal.java.JavaLibrary@7e0bfb81]
configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@44ad12cd
configurations: [configuration ':archives', configuration ':compile', configuration ':default', configuration ':runtime', configuration ':testCompile', configuration ':testRuntime']
convention: org.gradle.api.internal.plugins.DefaultConvention@3ead73f4
defaultArtifacts: org.gradle.api.internal.plugins.DefaultArtifactPublicationSet_Decorated@6d97b851
defaultTasks: []
dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@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: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@3db7416a
extensions: org.gradle.api.internal.plugins.DefaultConvention@3ead73f4
fileOperations: org.gradle.api.internal.file.DefaultFileOperations@4a27b5cd
fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@7510cbc3
gradle: build '1228_1'
group:
inheritedScope: org.gradle.api.internal.ExtensibleDynamicObject$InheritedDynamicObject@21b1ab40
jar: task ':jar'
javadoc: task ':javadoc'
libsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/libs
libsDirName: libs
logger: org.gradle.api.logging.Logging$LoggerImpl@17620808
logging: org.gradle.logging.internal.DefaultLoggingManager@24fd5136
modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@72dec332
module: org.gradle.api.internal.artifacts.ProjectBackedModule@5c92e1b3
name: 1228_1
parent: null
parentIdentifier: null
path: :
plugins: [org.gradle.api.plugins.HelpTasksPlugin@5a1698f1, org.gradle.language.base.plugins.LifecycleBasePlugin@522f63e7, org.gradle.api.plugins.BasePlugin@2aa9233d, org.gradle.api.plugins.ReportingBasePlugin@2b040d5b, org.gradle.language.base.plugins.LanguageBasePlugin@7a96cf9, org.gradle.api.plugins.LegacyJavaComponentPlugin@6d3725a1, org.gradle.api.plugins.JavaBasePlugin@6d935671, org.gradle.api.plugins.JavaPlugin@1547cbc9]
processOperations: org.gradle.api.internal.file.DefaultFileOperations@4a27b5cd
processResources: task ':processResources'
processTestResources: task ':processTestResources'
project: root project '1228_1'
projectDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1
projectEvaluationBroadcaster: ProjectEvaluationListener broadcast
projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@7ee14288
projectRegistry: org.gradle.api.internal.project.DefaultProjectRegistry@76d72fcb
properties: {...}
rebuildTasks: [clean, build]
reporting: org.gradle.api.reporting.ReportingExtension_Decorated@2982f561
reportsDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1/build/reports
repositories: [org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@54bbc891]
resources: org.gradle.api.internal.resources.DefaultResourceHandler@746cd30c
rootDir: /Users/qianhui/Documents/Developer/gradle_project/1228_1
rootProject: root project '1228_1'
runtimeClasspath: file collection
scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@1493f48b
scriptPluginFactory: org.gradle.configuration.DefaultScriptPluginFactory@7d9bdc3a
serviceRegistryFactory: org.gradle.internal.service.scopes.ProjectScopeServices$5@397a443
services: ProjectScopeServices
sourceCompatibility: 1.5
sourceSets: [source set 'main', source set 'test']
sources: [source set 'main', source set 'test']
standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@24fd5136
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學習(1)-helloworld
- gradle學習(2)-基礎語法
- gradle學習(3)-基礎認識
- gradle學習(4)-構建java項目
- gradle學習(5)-創建eclipse項目
- gradle學習(6)-依賴管理
- gradle學習(7)-groovy
- gradle學習(8)-gradle的命令行
- gradle學習(9)-獲取build相關信息
- gradle學習(10)-gui
- gradle學習(11)-編寫構建腳本
- gradle學習(12)-groovy一些基礎語法
- gradle學習(13)-有的沒的
- gradle學習(14)-任務
- gradle學習(15)-任務
- gradle學習(16)-操作文件
- gradle學習(17)-被合并的ant
- gradle學習(18)-ant的屬性
- gradle學習(19)-log系統
- gradle學習(20)-詳解java插件
- gradle學習(21)-在eclipse中構建java項目
- gradle復習(1)-2種定義任務方式的區別
- gradle復習(2)-eclipse中添加依賴jar包
- gradle復習(3)-在gradle項目中使用TestNG
- gradle復習(4)-Cannot find System Java Compiler
- gradle復習(5)-Test remote debug
- gradle復習(6)-深入Jacoco
- gradle復習(7)-深入Jacoco
- gradle復習(8)-Task中行為
- gradle學習(22)-Sonar
- gradle學習(23)-Sonar runner