简介
其他网址
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(官网文档)