gradle插件 java_简单的Gradle Java插件自定义
gradle插件 java
正如我在“ 用Gradle构建Java的初步了解”一文中所展示的那样,当Gradle使用Java插件并将文件和目录放置在该插件期望的位置时, Gradle尤其适用于构建Java应用程序的基础知识(约定-基于项目的布局 )。 但是,并非总是有一种结构(尤其是在旧系统中)可以满足Gradle的预期约定。 在本文中,我将介绍重写Gradle Java插件的一些约定,以允许简单的Gradle构建与不同的目录结构一起使用。
以下代码清单包含构建build.gradle
的Gradle代码。 我在构建代码中包含了注释,以帮助解释每种类型的定制正在做什么。
build.gradle
// build.gradle
//
// This simple example of a Gradle build file exists primarily to demonstrate
// approaches to overriding Gradle's default conventions related to use of the
// Java plugin.// The 'java' plugin must be applied before attempting to access the sourceSets
// and other properties defined by the Java plugin to avoid an error message
// similar to the following: "Could not find method sourceSets() for arguments..."
apply plugin: 'java'// Redefine where Gradle should expect Java source files (*.java)
sourceSets {main {java {srcDirs 'java'}resources {srcDir 'resources'}}
}// Redefine where .class files are written
sourceSets.main.output.classesDir = file("dist/classes")// Redefine where 'jar' task should place generated JAR file.
jar {destinationDir = file('dist/jar')
}// Fully qualified directory/JAR for Guava Release 16 JAR file:
// C:\\guava16\\guava-16.0-rc1.jar
repositories { flatDir{dirs 'C:\\guava16'}
}dependencies {compile 'guava:guava:16.0-rc1'
}defaultTasks 'clean', 'jar'
上面显示的Gradle构建文件首先应用Java插件。 然后,它覆盖Java源文件的Gradle常规位置(子目录代表软件包和文件具有.jar扩展名的最高级目录),将此目录从默认的src/main/java
更改为简单的java
。 类似地,生产资源的默认src/main/resources
位置更改为简单的resources
。
然后,通过指定sourceSets.main.output.classesDir
现在为dist/classes
sourceSets.main.output.classesDir
(常规的build/classes/main
),上面显示的构建文件然后更改* .class文件(具有表示其包结构的适当子目录)的放置位置。 类似地, jar任务的destinationDir
被覆盖以指向dist/jar
( build/libs
是约定),这是jar任务生成的JAR文件的写入位置。
上面显示的简单Gradle构建脚本中显示的最终定制是“存储库”和“依赖项”的规范,以使Guava Release 16 JAR可用于我的应用程序(碰巧取决于Guava Release 16)。 Gradle为使用Maven或Ivy存储库提供了复杂的支持,包括Maven Central的特殊语法,但是此特定示例从我的本地文件系统(C:\ guava16)获取了Guava Release 16 JAR。 依赖项本身用“ guava:guava:16.0-rc1”表示,因为该指定存储库目录中的JAR被称为“ guava-16.0-rc1.jar”。
为了使这些自定义的测试更加容易,我将defaultTasks
明确指定为clean
和jar
以便我需要做的就是在命令行上键入gradle
,只要我与上述build.gradle
文件位于同一目录中,并且只要在该级别上有一个“ java”子目录,并且在其相应的基于包的目录中包含.java源文件。
当遵循Gradle的约定时,Gradle的构建最简洁,最容易编写和阅读。 但是,覆盖这些约定并指定自定义配置以匹配旧系统并不是很困难。
翻译自: https://www.javacodegeeks.com/2014/01/simple-gradle-java-plugin-customization.html
gradle插件 java
gradle插件 java_简单的Gradle Java插件自定义相关推荐
- 文本文件 java_简单的用java实现读/写文本文件的示例
简单的用java实现读/写文本文件的示例 更新时间:2008年07月26日 13:09:26 作者: 同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流) 三个例子可以独立存在,所以根据 ...
- gradle对java插件的扩展_Gradle之java插件入门
Gradle插件是Gradle的扩展,它对project做了一些配置,会给project添加一些已经配置好的task.Gradle自身带了一些插件,你也可以自定义插件,然后提供给别人使用.其中一个是j ...
- java安全插件_如何安全地实现Java插件安全性?
我正在设计一个用于在 Java应用程序中加载,处理和支持插件的系统.在我可以部署之前,我认为其中一个功能绝对至关重要的是能够建立一个安全环境,其中插件仅限于允许执行的操作. 我没有理解如何以编程方式使 ...
- 简单的Gradle Java插件自定义
正如我在" 用Gradle构建Java的初步了解"一文中所展示的那样,当人们使用Java插件并将文件和目录放置在该插件期望的位置时, Gradle尤其适用于构建Java应用程序的基 ...
- gradle插件-了解插件及如何使用gradle插件
解释 Gradle的核心是有意为现实世界的自动化提供很少的东西.所有有用的特性,比如编译Java代码的能力,都是由插件添加的.插件添加新任务(如JavaCompile),域对象(如SourceSet) ...
- gradle版本与android的gradle插件版本兼容Unable to find method org.gradle.api.tasks.compile.CompileOptions.setB
今天踩了一个gradle版本的坑,记录一下 一.编译报错,如下完整报错日志: 编译失败ERROR:Unable to find method 'org.gradle.api.tasks.compile ...
- gradle web_简单的Gradle Web应用程序
gradle web Gradle通过" war"和" jetty"插件轻松支持Java Web应用程序. 本教程将向您展示如何快速创建一个简单的Java Se ...
- 简单的Gradle Web应用程序
Gradle通过" war"和" jetty"插件轻松支持Java Web应用程序. 本教程将向您展示如何快速创建一个简单的Java Servlet Web应用 ...
- Logstash【从无到有从有到无】【L24】贡献了Java插件
目录 1.贡献了Java插件 1.1.流程概述 1.2.如何编写Java输入插件 1.2.1.设置环境 1.2.2.代码插件 1.2.3.打包和部署 1.2.4.与Java输入插件运行Logstash ...
最新文章
- 运维想吃透监控系统,就这一篇足够了
- webmvcconfigurer配置跨域_为什么加了 Spring Security 会导致 Spring Boot 跨域失效呢?...
- Windows下多线程的使用
- day11 内置函数
- 2018.01.07软件更新公告
- 自动化企业人才如何定位?
- 教育学考研跨考计算机,某985计算机专业,想要三跨北师大教育学,会不会很难?...
- workbench动力学周炬_ANSYS WORKBENCH有限元分析实例详解(动力学)
- 两个ROS系统进行通信(通过路由器,可上网)
- ps换证件照背景颜色
- excel单元格做下拉列表以及改变下拉列表的字体
- Layer btnAlign 失效问题解决方法
- ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
- 《MySQL性能优化和高可用架构实践》阅读总结
- 论文阅读笔记:A Two-Step Approach for Event Factuality Identification
- 阿里巴巴待遇这么好,为什么还有这么多人离职?--转载
- 什么叫逐行扫描和隔行扫描
- 一种关键字提取新方法
- youtobe视频推荐 Recommending What Video to Watch Next: A Multitask Ranking System
- Word:公式编辑器,像Latex一样输入