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'

上面显示的G​​radle构建文件首先应用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/jarbuild/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明确指定为cleanjar以便我需要做的就是在命令行上键入gradle ,只要我与上述build.gradle文件位于同一目录中,并且只要在该级别上有一个“ java”子目录,并且在其相应的基于包的目录中包含.java源文件。

当遵循Gradle的约定时,Gradle的构建最简洁,最容易编写和阅读。 但是,覆盖这些约定并指定自定义配置以匹配旧系统并不是很困难。

参考:来自JCG合作伙伴 Dustin Marx的Simple Gradle Java插件定制,来自Inspired by Actual Events博客。

翻译自: https://www.javacodegeeks.com/2014/01/simple-gradle-java-plugin-customization.html

gradle插件 java

gradle插件 java_简单的Gradle Java插件自定义相关推荐

  1. 文本文件 java_简单的用java实现读/写文本文件的示例

    简单的用java实现读/写文本文件的示例 更新时间:2008年07月26日 13:09:26   作者: 同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流) 三个例子可以独立存在,所以根据 ...

  2. gradle对java插件的扩展_Gradle之java插件入门

    Gradle插件是Gradle的扩展,它对project做了一些配置,会给project添加一些已经配置好的task.Gradle自身带了一些插件,你也可以自定义插件,然后提供给别人使用.其中一个是j ...

  3. java安全插件_如何安全地实现Java插件安全性?

    我正在设计一个用于在 Java应用程序中加载,处理和支持插件的系统.在我可以部署之前,我认为其中一个功能绝对至关重要的是能够建立一个安全环境,其中插件仅限于允许执行的操作. 我没有理解如何以编程方式使 ...

  4. 简单的Gradle Java插件自定义

    正如我在" 用Gradle构建Java的初步了解"一文中所展示的那样,当人们使用Java插件并将文件和目录放置在该插件期望的位置时, Gradle尤其适用于构建Java应用程序的基 ...

  5. gradle插件-了解插件及如何使用gradle插件

    解释 Gradle的核心是有意为现实世界的自动化提供很少的东西.所有有用的特性,比如编译Java代码的能力,都是由插件添加的.插件添加新任务(如JavaCompile),域对象(如SourceSet) ...

  6. 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 ...

  7. gradle web_简单的Gradle Web应用程序

    gradle web Gradle通过" war"和" jetty"插件轻松支持Java Web应用程序. 本教程将向您展示如何快速创建一个简单的Java Se ...

  8. 简单的Gradle Web应用程序

    Gradle通过" war"和" jetty"插件轻松支持Java Web应用程序. 本教程将向您展示如何快速创建一个简单的Java Servlet Web应用 ...

  9. Logstash【从无到有从有到无】【L24】贡献了Java插件

    目录 1.贡献了Java插件 1.1.流程概述 1.2.如何编写Java输入插件 1.2.1.设置环境 1.2.2.代码插件 1.2.3.打包和部署 1.2.4.与Java输入插件运行Logstash ...

最新文章

  1. 运维想吃透监控系统,就这一篇足够了
  2. webmvcconfigurer配置跨域_为什么加了 Spring Security 会导致 Spring Boot 跨域失效呢?...
  3. Windows下多线程的使用
  4. day11 内置函数
  5. 2018.01.07软件更新公告
  6. 自动化企业人才如何定位?
  7. 教育学考研跨考计算机,某985计算机专业,想要三跨北师大教育学,会不会很难?...
  8. workbench动力学周炬_ANSYS WORKBENCH有限元分析实例详解(动力学)
  9. 两个ROS系统进行通信(通过路由器,可上网)
  10. ps换证件照背景颜色
  11. excel单元格做下拉列表以及改变下拉列表的字体
  12. Layer btnAlign 失效问题解决方法
  13. ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
  14. 《MySQL性能优化和高可用架构实践》阅读总结
  15. 论文阅读笔记:A Two-Step Approach for Event Factuality Identification
  16. 阿里巴巴待遇这么好,为什么还有这么多人离职?--转载
  17. 什么叫逐行扫描和隔行扫描
  18. 一种关键字提取新方法
  19. youtobe视频推荐 Recommending What Video to Watch Next: A Multitask Ranking System
  20. Word:公式编辑器,像Latex一样输入

热门文章

  1. L3-002 堆栈 树状数组+二分答案
  2. SpringCloud Greenwich(五)之nacos、dubbo、Zuul和 gateway集成
  3. JavaFX UI控件教程(四)之Button
  4. 最值得程序员get的30本行业干货
  5. SpringCloud注册中心高可用搭建
  6. android之微信分享图片
  7. 阿里云服务器 window server tomcat启动 并且关闭window防火墙 配置8080端口开放还是没用
  8. js 方法传递对象参数
  9. fastdfs 集群 java_FastDFS集群部署(转载 写的比较好)
  10. 【2】flink数据流转换算子