Gradle is a flexible, open source build automation tool that uses Groovy as a domain-specific language to define build logic and configuration. It is based on the principle of convention over configuration and provides a rich set of tasks and a directed acyclic graph (DAG) model to declaratively define and manipulate the execution of tasks. Gradle aims to provide a powerful yet user-friendly alternative to tools like Ant and Maven for compiling code, generating packages and archives, managing dependencies, and more.
Slides for JJUG(Japan Java User Group) 2009 Fall BOF.
Talking about groovy history, new features in Groovy 1.6,1.7.
Especially focused on AST Transformations.
Gradle is a flexible general purpose build system with a build-by-convention framework a la Maven on top. It uses Apache Ivy under the hood for its dependency management. Its build scripts are written in Groovy.
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Rajmahendra Hegde
For the long time, we have used various build tools to package applications for new software releases or applying patches to existing applications etc. dependency management, version controlling, scalability, flexibility, single-multiple projects sup portability are some of the key areas that drove the selection of a build tool, This session focuses on Gradle as a successful build tool and looks into all the above areas and uses Groovy as a DSL. We will also look into how easy it is to use Gradle as compared to other open source build tools.
Photos: https://plus.google.com/u/0/photos/105295086916869617504/albums/5739617166453582993
Gradle build tool that rocks with DSL By Rajmahendra Hegde at JavaOne Hyderabad, India on 4th May 2012
Slides for JJUG(Japan Java User Group) 2009 Fall BOF.
Talking about groovy history, new features in Groovy 1.6,1.7.
Especially focused on AST Transformations.
Gradle is a flexible general purpose build system with a build-by-convention framework a la Maven on top. It uses Apache Ivy under the hood for its dependency management. Its build scripts are written in Groovy.
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Rajmahendra Hegde
For the long time, we have used various build tools to package applications for new software releases or applying patches to existing applications etc. dependency management, version controlling, scalability, flexibility, single-multiple projects sup portability are some of the key areas that drove the selection of a build tool, This session focuses on Gradle as a successful build tool and looks into all the above areas and uses Groovy as a DSL. We will also look into how easy it is to use Gradle as compared to other open source build tools.
Photos: https://plus.google.com/u/0/photos/105295086916869617504/albums/5739617166453582993
Gradle build tool that rocks with DSL By Rajmahendra Hegde at JavaOne Hyderabad, India on 4th May 2012
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...ZeroTurnaround
For you lazy coders out there, we offer the visual aids for the first 3 chapters of "Java Build Tools: Part 2 - A Decision Maker's Comparison of Maven, Gradle and Ant + Ivy". Here you can find the raw scores given to each tool based on 6 feature categories. **Download the full report to see Chapter 4, mapping the features against different user profiles**
Using the Groovy Ecosystem for Rapid JVM DevelopmentSchalk Cronjé
Overviewing Ratpack, Geb, Spock & Gradle to help with rapid development on the JVM. Mentions of other Gr8 tools & libraries. Swift introduction to Groovy.
Introduction to Gradle in 45min as done at JBCN 2016. Covers the basics of Gradle for people familiar with other build tools. Includes building Java, Scala, Groovy & Kotlin projects
Custom deployments with sbt-native-packagerGaryCoady
sbt-native-packager offers a comprehensive approach to packaging artifacts with SBT. The user describes a generic layout, which can then be extended for different types of software and deployments. For example, it is flexible enough to describe both a Zip-based archive format, and an RPM package with appropriate Systemd configuration for a service.
This talk will cover the essentials needed to understand the design of sbt-native-packager, and how to extend its structure to create custom layouts and deployments.
Here are slides from basic training for Gradle.
This training is aimed to help Java Developers to get hands-on experience to use Gradle as a primary build tool for Java source code starting from simple compilation continuing with different kinds of tests and finishing with code quality analysis and artefacts publishing.
Slides for a talk at the Seattle Java User Group about building a workflow management application for a biomedical lab on top of the OSGi module system and the Eclipse Rich Client Platform.
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...ZeroTurnaround
For you lazy coders out there, we offer the visual aids for the first 3 chapters of "Java Build Tools: Part 2 - A Decision Maker's Comparison of Maven, Gradle and Ant + Ivy". Here you can find the raw scores given to each tool based on 6 feature categories. **Download the full report to see Chapter 4, mapping the features against different user profiles**
Using the Groovy Ecosystem for Rapid JVM DevelopmentSchalk Cronjé
Overviewing Ratpack, Geb, Spock & Gradle to help with rapid development on the JVM. Mentions of other Gr8 tools & libraries. Swift introduction to Groovy.
Introduction to Gradle in 45min as done at JBCN 2016. Covers the basics of Gradle for people familiar with other build tools. Includes building Java, Scala, Groovy & Kotlin projects
Custom deployments with sbt-native-packagerGaryCoady
sbt-native-packager offers a comprehensive approach to packaging artifacts with SBT. The user describes a generic layout, which can then be extended for different types of software and deployments. For example, it is flexible enough to describe both a Zip-based archive format, and an RPM package with appropriate Systemd configuration for a service.
This talk will cover the essentials needed to understand the design of sbt-native-packager, and how to extend its structure to create custom layouts and deployments.
Here are slides from basic training for Gradle.
This training is aimed to help Java Developers to get hands-on experience to use Gradle as a primary build tool for Java source code starting from simple compilation continuing with different kinds of tests and finishing with code quality analysis and artefacts publishing.
Slides for a talk at the Seattle Java User Group about building a workflow management application for a biomedical lab on top of the OSGi module system and the Eclipse Rich Client Platform.
Discusses using the Groovy dynamic language for primarily functional and acceptance testing with a forward looking perspective. Also considers polyglot options. The techniques and lessons learned can be applied to other kinds of testing and are also applicable to similar languages. Drivers and Runners discussed include: Native Groovy, HttpBuilder, HtmlUnitWebTest, Watij, Selenium, WebDriverTellurium, JWebUnit, JUnit, TestNG, Spock, EasyB, JBehave, Cucumber, Robot Framework and Slim
Gradle is the build system you have been waiting for or maybe the build system that has been waiting for you. The adoption rate is incredible from being the new Google Android development tools build system to most new Java opensource projects to JavaScript based front-end and back-end projects.
Gradle is a general-purpose build automation tool. It combines the power and flexibility of Ant with the dependency management and conventions of Maven into a more effective way to build. Its powered by Groovy DSL. Presentation discusses what and why Gradle with demo for java, groovy, web, multi-project and grails projects.
Faster java ee builds with gradle [con4921]Ryan Cuprak
JavaOne 2016
It is time to move your Java EE builds over to Gradle! Gradle continues to gain momentum across the industry. In fact, Google is now pushing Gradle for Android development. Gradle draws on lessons learned from both Ant and Maven and is the next evolutionary step in Java build tools. This session covers the basics of switching existing Java EE projects (that use Maven) over to Gradle and the benefits you will reap, such as incremental compiling, custom distributions, and task parallelization. You’ll see demos of all the goodies you’ve come to expect, such as integration testing and leveraging of Docker. Switching is easier than you think, and no refactoring is required.
In this session, Markus will explain how to build OpenCms with Gradle from Source.
He will explain the benefits and advantages as well as the difficulties in building OpenCms with Gradle. Markus will show how to build and import OpenCms modules with Gradle. This includes creating an OpenCms module automatically from source out of the repository (Nexus).
Markus will also talk about:
- Continuous Developement with OpenCms
- Building an OpenCms .war file with external configuration
Presented at Bucharest Java User Group, http://www.bjug.ro/editii/5.html . Project source code available at: https://github.com/bucharest-jug/dropwizard-todo
Slides from my Confitura 2012 presentation. The issues discussed during the talk will be described in my new (free!) ebook - see https://github.com/tomekkaczanowski/bad-tests-good-tests
Sample Chapter of Practical Unit Testing with TestNG and MockitoTomek Kaczanowski
This is Chapter 10 of "Practical Unit Testing with TestNG and Mockito" book.
This is one of the last chapters which explains how to make your unit tests manageable, so they do not become a burden as the project develops and changes are introduced.
You can learn more about the book on http://practicalunittesting.com.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
5. • Flexible build tool
• Based on convention over configuration idea
• Groovy (DSL)
• Open source
• Project Manager: Hans Docter
• GitHub
• First release: April 2008
making the impossible possible,
the possible easy, and the easy elegant
-- Moshé Feldenkrais
2010
8. Intro - DAG
• Read and manipulate graph of tasks, e.g.:
task release(dependsOn: assemble) << {
println 'We release now‘
}
gradle.taskGraph.whenReady {
taskGraph ->
if (taskGraph.hasTask (':release')) {
version = '1.0‘
} else {
version = '1.0-SNAPSHOT‘
}
}
2010
9. Intro - DAG
• Read and manipulate graph of tasks, e.g.:
gradle.taskGraph.beforeTask {
Task task ->
println "executing $task ..."
}
gradle.taskGraph.afterTask {
Task task, TaskState state ->
if (state.failure ) {
println "FAILED"
}
else {
println "done"
}
}
2010
10. Intro - summary
• DSL
• Command line, GUI (+ IDE plugins)
– Reports
– Prunning of tasks tree (-x)
– User friendly (camel case, dry run)
• Rich tasks layer
– Tasks dependencies
– DAG
– Runtime manipulation
2010
11. Frameworkitis is the disease that a framework
wants to do too much for you or it does it in a way that you
don't want but you can't change it. It's fun to get all this
functionality for free, but it hurts when the free
functionality gets in the way. […] To get the desired
behavior you start to fight against the framework. And at this
point you often start to lose, because it's difficult to bend the
framework in a direction it didn't anticipate.
[…] Frameworks try to be in control and tell you when to do
what. A toolkit gives you the building blocks but leaves it
up to you to be in control.
Erich Gamma, www.artima.com
2010
25. repositories {
mavenCentral()
}
More on
repositories
2010
26. repositories {
mavenCentral()
mavenRepo urls:
More on 'http://download.java.net/maven2'
flatDir name: 'localRepository',
repositories dirs: 'lib''
}
2010
27. repositories {
mavenCentral()
mavenRepo urls:
More on 'http://download.java.net/maven2'
flatDir name: 'localRepository',
repositories dirs: 'lib''
}
// Maven2 layout
someroot/[organisation]/[module]/[revision]/[module]-[revision].[ext]
// Typical layout for an ivy repository
someroot/[organisation]/[module]/[revision]/[type]s/[artifact].[ext]
//Simple layout (the organization is not used, no nested folders.)
someroot/[artifact]-[revision].[ext]
2010
32. Core - summary
• Very concise build.gradle file
– DSL
– Convention over configuration
• Configuration is always possible
• Backward compatibility
– Respects standards (layout a'la Maven)
– Ivy & Maven dependencies and repositories
2010
33. Gradle & Maven – dependencies
and repositories
• Full backward compatibility
• Download from and upload to Maven
repos
– Including generation of pom files
• Gradle offers more than Maven
– Uses Apache Ivy
– Mercury (Maven 3) will be supported
2010
34. Gradle – custom logic
• Directly within build script (build.gradle)
– Any Groovy code
– Can import 3rd party classes
2010
35. Gradle – custom logic
• Directly within build script (build.gradle)
– Any Groovy code
– Can import 3rd party classes
• Custom tasks
– build.gradle says ”what”
– ”how” described in task class
2010
36. Gradle – custom logic
• Directly within build script (build.gradle)
– Any Groovy code
– Can import 3rd party classes
• Custom tasks
– build.gradle says ”what”
– ”how” described in task class
• Custom plugins
– More powerful than tasks, but still very easy to create
– Some shipped with Gradle:
• Java, Groovy, Scala, War, Jetty, Maven, Code Quality, OSGi,
Eclipse, Project Report
2010
37. Gradle – custom logic
• Directly within build script (build.gradle)
– Any Groovy code
– Can import 3rd party classes
• Custom tasks
– build.gradle says ”what”
– ”how” described in task class
• Custom plugins
– More powerful than tasks, but still very easy to create
– Some shipped with Gradle:
• Java, Groovy, Scala, War, Jetty, Maven, Code Quality, OSGi,
Eclipse, Project Report
2010
38. Custom logic :
”how” described in task class
public class ReportTask extends DefaultTask {
def FileCollection jars
@TaskAction def createReport() {
def text = new StringBuilder()
text.append("gradle -v".execute().text)
jars.each {
text.append("t- $it.namen")
}
println "GENERATING REPORT"
new File('build/report.txt') << text
}
}
2010
41. Web UI
apply plugin: 'war'
repositories {
...
}
dependencies {
...
}
|-- build.gradle
`-- src Convention
`-- main
|-- java
over
|-- resources configuration
`-- webapp
2010
42. Web UI
apply plugin: 'war' :war - Generates a war archive
with all the compiled classes,
repositories {
the web-app content and the
... libraries.
}
dependencies {
...
}
Convention
over
configuration
2010
43. Web UI
apply plugin: 'war' :war - Generates a war archive
apply plugin: 'jetty' with all the compiled classes,
the web-app content and the
repositories { libraries.
...
} :jettyRun - Uses your files as
dependencies { and where they are and deploys
... them to Jetty.
}
:jettyRunWar - Assembles the
webapp into a war and deploys
it to Jetty.
2010
45. Gradle & Ant – import of build.xml
<project>
<target name="hello">
<echo>Hello, from Ant</echo>
</target>
</project>
2010
46. Gradle & Ant – import of build.xml
<project>
<target name="hello">
<echo>Hello, from Ant</echo>
</target>
</project>
ant.importBuild "build.xml"
task myTask(dependsOn: hello) << {
println "depends on hello ant task"
}
2010
47. Gradle & Ant – import of build.xml
<project>
<target name="hello">
<echo>Hello, from Ant</echo>
</target>
</project>
ant.importBuild "build.xml"
task myTask(dependsOn: hello) << {
println "depends on hello ant task"
}
>gradle myTask
:hello
[ant:echo] Hello, from Ant
:myTask
depends on hello ant task
2010
48. Gradle & Ant – use of Ant tasks
task zip << {
ant.zip(destfile: 'archive.zip') {
fileset(dir: 'src') {
include(name: '**.xml')
exclude(name: '**.java')
}
}
2010
49. Gradle & Ant – use of Ant tasks
task zip << {
ant.zip(destfile: 'archive.zip') {
fileset(dir: 'src') {
include(name: '**.xml')
exclude(name: '**.java')
}
}
task dist(type: Zip) {
from 'src/dist‘
from configurations.runtime
into('libs‘)
}
2010
50. Gradle & Ant - summary
• Ant targets = Gradle tasks
• Import of build.xml
• Use of Ant
– ant object available in every build.gradle
• AntBuilder used beneath
– some Ant tasks rewritten
• for optimization purposes and to be consistent
with other concepts of Gradle
• Gradle = Ant with a boost
2010
54. Web & Desktop UI - summary
• Convention over configuration makes
things easy
• Jetty plugin available out-of-the-box
• Many JVM languages supported
– Java, Groovy, Scala
2010
60. Multi-module build - summary
• Layout – its up to you
• Number of build.gradle files – you decide
• Smart (partial) builds
• Project treated as tasks
– You can depend on them
2010