簡介
其他網址
Gradle Plugins · Gradle User Guide 中文版
Gradle Plugin Reference(官網文檔)
Gradle 插件簡介
Gradle 在它的核心中有意地提供了一些小但有用的功能,用於在真實世界中的自動化。所有有用的功能,例如以能夠編譯 Java 代碼爲例,都是通過插件進行添加的。插件添加了新任務 (例如JavaCompile),域對象 (例如SourceSet),約定(例如主要的 Java 源代碼是位於 src/main/java),以及擴展的核心對象和其他插件的對象。
寫法
法1:apply plugin: 'java'
法2:
plugins {
id 'java'
id 'xxx', version '1.0'
}或者
plugins {
'java'
id 'xxx' version '1.0'
}法3:apply plugin: org.gradle.api.plugins.JavaPlugin //或者apply plugin: JavaPlugin
常用插件
apply plugin: 'maven': 使用maven做爲jar包的信賴管理,通過mave倉庫下載項目所需的信賴包
apply plugin: 'war':指定web項目,項目編譯(在項目提示符下執行:gradle build)時生成項目的war包。
apply plugin: 'java': 指定項目爲java項目,項目編譯(在項目提示符下執行:gradle build)時生成項目的jar包。
apply plugin: 'idea':java項目的idea開發環境構建。生成所需要的.project,.classpath等文件。
apply plugin: 'eclipse':java項目的eclipse開發環境構建。生成所需要的.idea,.impl等文件。
apply plugin: 'eclipse-wtp':插件將構建web項目的開發環境,生成所需要的.project,.classpath等文件。若web開發使用的是eclipse-j2ee版本,要指定爲wtp環境。
apply plugin: 'jetty':加入jetty的支持,代碼修改後直接執行命令gradle jettyRun即可運行web項目。
插件倉庫
插件默認是從 Gradle 官方的插件倉庫 https://plugins.gradle.org/m2/ 下載的。修改倉庫地址方法
法1:修改settings.gradle
pluginManagement {
repositories {
maven {
url 'http://examle.com/maven-repo'
}
gradlePluginPortal()
}
}
法2:修改buildscript
buildscript {
repositories {
maven {
url 'http://examle.com/maven-repo'
}
}
dependencies {
classpath 'com.example.plugin:gradle-plugin:1.0'
}
}
apply plugin: 'com.example.plugin'
java
目錄是有默認值存在,建議項目的配置,承襲了maven的風格
java的源碼目錄:src/main/java
java的測試代碼目錄:src/test/java
資源文件目錄:src/main/resources
測試的資源目錄:src/test/resources
sourceCompatibility 與 targetCompatibility
sourceCompatibility
關係到你使用到的Java
語法特性及庫sourceCompatibility
不能比targetCompatibility
大targetCompatibility
不能比目標客戶端運行環境的JavaVersion
大targetCompatibility
不能比當前Gradle
使用的JavaVersion
大
application
其他網址
The Application Plugin(官網文檔)
簡介
application插件是用來幫助創建可執行jvm程序的。它使得開發中在本地啓動應用和把應用打包爲tar 和/或 zip更簡單。
使用application插件,默認會調用java和distribution插件。(因此,項目中寫了application就不用再寫這兩個插件了)
實例說明
本處用application來說明比java插件的好處(可以打包文件)。
1.Idea創建普通gradle工程
2.編寫源碼
package org.example.a;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
class User {
@Getter @Setter
private int id;
@Getter(AccessLevel.PROTECTED)
private String phone;
private String password;
}
public class Demo {
public static void main(String[] args) {
User user = new User();
user.setId(2);
System.out.println(user.getId());
System.out.println("This is main");
}
}
3.修改build.gradle
plugins {
id 'application'
}
group 'com.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
//本地倉庫,地址是maven本地倉庫路徑
mavenLocal()
//maven私服,此處設置爲ali的,地址是url
maven{
url "http://maven.aliyun.com/nexus/content/groups/public"
}
//遠程倉庫,地址是https://repo1.maven.org/maven2
mavenCentral()
}
dependencies{
//本處應該是compileOnly。但我刻意將其寫爲compile,以將其放到打包階段
compile 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}
mainClassName = 'org.example.a.Demo'
jar {
manifest {
attributes 'Main-Class': 'org.example.a.Demo'
}
}
3.build
結果:在build目錄下產生很多文件。相對於java插件,多了個distributions路徑
庫:
腳本文件:
4.測試
運行方法1:
去build/libs目錄,執行java -jar test_gradle-1.0-SNAPSHOT.jar
結果:
2 This is main
運行方法2:
到build/distribution目錄,解壓test_gradle-1.0-SNAPSHOT.tar或者test_gradle-1.0-SNAPSHOT.zip,然後到目錄裏邊的bin路徑下,命令行執行test_gradle
結果
2 This is main
war
其他網址
The War Plugin(官網文檔)
ear
其他網址
The Ear Plugin(官網文檔)