SlideShare una empresa de Scribd logo
1 de 76
Descargar para leer sin conexión
GRADLE
EX
MACHINA
ANDRES ALMIRAY
@AALMIRAY
@aalmiray
@aalmiray
@aalmiray
POM.XML
• POM stands for Project Object Model.
• A POM file defines both how a project should be built and how
consumers may interact with the published artifacts.
• Maven delivers lots of features out of the box thanks to the
hierarchical nature of the POM.
• The Maven Super POM provides default configuration for
common plugins such as compiler, resources, surefire, etc.
• The strict nature of the structure found in the POM allows
anyone to understand the configuration.
@aalmiray
@aalmiray
BUILD.GRADLE
• Gradle build files only specify how projects should be built.
• The definition for consumers is delivered through a generated
POM file.
• Gradle builds are highly customizable, resulting in a wider
range of build patterns.
CAN WE HAVE A
MAVEN-LIKE
STRUCTURE ON TOP
OF GRADLE?
HTTP://GITHUB.COM/AALMIRAY/KORDAMP-GRADLE-PLUGINS
HTTPS://AALMIRAY.GITHUB.IO/KORDAMP-GRADLE-PLUGINS
FILE
STRUCTURE
@aalmiray
STANDARD (MAVEN)
.
├── pom.xml
├── guide
│ └── pom.xml
├── project1
│ └── pom.xml
└── project2
└── pom.xml
@aalmiray
STANDARD (MAVEN)
<project>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
<modules>
<module>guide</module>
<module>project1</module>
<module>project2</module>
</modules>
</project>
<project>
<parent>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
</parent>
</project>
@aalmiray
TWO-LEVEL (MAVEN)
.
├── pom.xml
├── docs
│ └── guide
│ └── pom.xml
└── subprojects
├── project1
│ └── pom.xml
└── project2
└── pom.xml
@aalmiray
TWO-LEVEL (MAVEN)
<project>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
<modules>
<module>docs/guide</module>
<module>subprojects/project2</module>
<module>subprojects/project3</module>
</modules>
</project>
<project>
<parent>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
<path>../../pom.xml</path>
</parent>
</project>
@aalmiray
MULTI-LEVEL (MAVEN)
.
├── pom.xml
├── guide
│ └── pom.xml
└── subprojects
├── project1
│ └── pom.xml
└── project2
└── pom.xml
@aalmiray
MULTI-LEVEL (MAVEN)
<project>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
<modules>
<module>project1</module>
<module>subprojects/project2</module>
<module>subprojects/project3</module>
</modules>
</project>
<project>
<parent>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
</parent>
</project>
<project>
<parent>
<groupId>com.acme</groupId>
<artifactId>parent</artifactId>
<version>0.0.0</version>
<path>../../pom.xml</path>
</parent>
</project>
@aalmiray
STANDARD (GRADLE)
.
├── build.gradle
├── guide
│ └── build.gradle
├── project1
│ └── build.gradle
├── project2
│ └── build.gradle
└── settings.gradle
.
├── build.gradle
├── guide
│ └── guide.gradle
├── project1
│ └── project1.gradle
├── project2
│ └── project2.gradle
└── settings.gradle
@aalmiray
STANDARD (GRADLE)
$ cat settings.gradle
include 'guide'
include 'project1'
include 'project2'
$ cat settings.gradle
include 'guide'
include 'project1'
include 'project2’
project(':guide').buildFileName =
'guide.gradle'
project(':project1').buildFileName =
'project1.gradle'
project(':project2').buildFileName =
'project2.gradle'
@aalmiray
STANDARD (GRADLE)
$ cat settings.gradle
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'org.kordamp.gradle:settings-gradle-plugin:0.15.0
}
}
apply plugin: 'org.kordamp.gradle.settings'
projects {
layout = 'standard'
}
@aalmiray
TWO-LEVEL (GRADLE)
.
├── build.gradle
├── docs
│ └── guide
│ └── build.gradle
└── subprojects
├── project1
│ └── build.gradle
└── project2
└── build.gradle
.
├── build.gradle
├── docs
│ └── guide
│ └── guide.gradle
└── subprojects
├── project1
│ └── project1.gradle
└── project2
└── project2.gradle
@aalmiray
TWO-LEVEL (GRADLE)
$ cat settings.gradle
include 'guide'
include 'project1'
include 'project2'
project(':guide').projectDir =
new File(“$settingsDir/docs/guide”)
project(':project1').projectDir =
new File(“$settingsDir/subprojects/project1”)
project(':project2').projectDir =
new File(“$settingsDir/subprojects/project2”)
@aalmiray
TWO-LEVEL (GRADLE)
$ cat settings.gradle
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'org.kordamp.gradle:settings-gradle-plugin:0.15.0
}
}
apply plugin: 'org.kordamp.gradle.settings'
projects {
layout = 'two-level'
directories = ['docs', 'subprojects']
}
@aalmiray
MULTI-LEVEL (GRADLE)
.
├── build.gradle
├── guide
│ └── build.gradle
└── subprojects
├── project1
│ └── build.gradle
└── project2
└── build.gradle
.
├── build.gradle
├── guide
│ └── guide.gradle
└── subprojects
├── project1
│ └── project1.gradle
└── project2
└── project2.gradle
@aalmiray
MULTI-LEVEL (GRADLE)
$ cat settings.gradle
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'org.kordamp.gradle:settings-gradle-plugin:0.15.0
}
}
apply plugin: 'org.kordamp.gradle.settings'
projects {
layout = 'multi-level'
directories = [
'guide',
'subprojects/project1',
'subprojects/project2'
]
}
PROJECT
DSL
@aalmiray
THE PROJECT PLUGIN
plugins {
id 'org.kordamp.gradle.project' version ‘0.15.0’
}
config {
release = (rootProject.findProperty('release') ?: false).toBoolean()
info {
name = 'Sample'
vendor = 'Acme'
description = 'Sample project'
links {
website = 'https://github.com/joecool/sample'
issueTracker = 'https://github.com/joecool/sample/issues'
scm = 'https://github.com/joecool/sample.git'
}
people {
person {
id = 'joecool'
name = 'Joe Cool'
roles = ['developer']
}
}
}
…
}
@aalmiray
PROVIDED BEHAVIOR
• The project plugin applies the following plugins
• org.kordamp.gradle.base
• org.kordamp.gradle.build-info
• org.kordamp.gradle.minpom
• org.kordamp.gradle.jar
• org.kordamp.gradle.source-jar
• org.kordamp.gradle.javadoc
• org.kordamp.gradle.license
• org.kordamp.gradle.jacoco
• org.kordamp.gradle.publishing
• org.kordamp.gradle.testing
• org.kordamp.gradle.apidoc
• org.kordamp.gradle.source-stats
• org.kordamp.gradle.source-html
• org.kordamp.gradle.bintray
ORG.KORDAMP.GRADLE.BASE
@aalmiray
DEFAULT TASKS
• Gradle provides the following tasks
• projects
• dependencies
• properties
• tasks
@aalmiray
ADDITIONAL TASKS
• The base plugin provides the following tasks
• extensions
• plugins
• repositories
• projectProperties
• effectiveSettings
@aalmiray
@aalmiray
@aalmiray
ORG.KORDAMP.GRADLE.BUILD-INFO
@aalmiray
BUILD-INFO
• The build-info plugin calculates build data such as
• Build date
• Build time
• Build creator
• SCM revision (git commit hash)
• Build JDK
• This information is used to enrich JAR manifests
@aalmiray
JAR MANIFEST EXAMPLE
Manifest-Version: 1.0
Created-By: Gradle 5.2
Build-By: aalmiray
Build-Jdk: 11 (Oracle Corporation 11+28)
Build-Date: 2019-03-22
Build-Time: 06:59:24.924+0100
Build-Revision: 6604da6d0d79f75c72c812f5017cb8d9bb383fb3
ORG.KORDAMP.GRADLE.MINPOM
@aalmiray
MINPOM
• Generates additional metafiles for Maven compatibility
• META-INF/maven/${project.group}/pom.properties
• META-INF/maven/${project.group}/pom.xml
ORG.KORDAMP.GRADLE.JAR
@aalmiray
JAR
• Includes files generated by minpom plugin
• Enriches JAR manifest with data from build-info
ORG.KORDAMP.GRADLE.SOURCE-JAR
@aalmiray
SOURCE-JAR
• Generates a JAR file with project sources.
• Adds the following tasks
• sourceJar
• artifact is automatically added for publication
• aggregateSourceJar
ORG.KORDAMP.GRADLE.JAVADOC
@aalmiray
JAVADOC
• Configures Javadoc generation with sensible defaults.
• Adds the following tasks
• javadoc
• javadocJar
• artifact is automatically added for publication
ORG.KORDAMP.GRADLE.GROOVYDOC
@aalmiray
GROOVYDOC
• Configures Groovydoc generation with sensible defaults.
• Adds the following tasks
• groovydoc
• groovydocJar
• artifact is automatically added for publication
ORG.KORDAMP.GRADLE.APIDOC
@aalmiray
APIDOC
• Configures aggregate doc tasks at root level.
• Adds the following tasks
• aggregateJavadocs
• aggregateJavadocsJar
• aggregateGroovydocs
• aggregateGroovyDocsJar
• aggregateApidocs
ORG.KORDAMP.GRADLE.LICENSE
@aalmiray
LICENSE
• Configures license reports and file header formatting with
com.github.hierynomus.license
• Adds the following tasks
• aggregateLicenseReport
ORG.KORDAMP.GRADLE.JACOCO
@aalmiray
JACOCO
• Configures JaCoCo on all Test tasks.
• Adds the following tasks
• jacoco<Test>Report
• jacocoRootMerge
• jacocoRootReport
ORG.KORDAMP.GRADLE.SOURCE-HTML
@aalmiray
SOURCE-HTML
• Configures pretty printed API documentation using Java2Html.
• Adds the following tasks
• convertCodeToHtml
• generateSourceHtmlOverview
• sourceHtml
• aggregateConvertCodeToHtml
• aggregateGenerateSourceHtmlOverview
• aggregateSourceHtml
ORG.KORDAMP.GRADLE.SOURCE-STATS
@aalmiray
SOURCE-STATS
• Generates source statistics based on file types and LOC.
• Adds the following tasks
• sourceStats
• aggregateSourceStats
@aalmiray
SOURCE-STATS
> Task :base-gradle-plugin:sourceStats
+------------------------+--------+--------+
| Name | Files | LOC |
+------------------------+--------+--------+
| Groovy Sources | 55 | 5462 |
| Groovy Test Sources | 1 | 102 |
| Java Sources | 4 | 43 |
+------------------------+--------+--------+
| Totals | 60 | 5607 |
+------------------------+--------+--------+
ORG.KORDAMP.GRADLE.TESTING
@aalmiray
TESTING
• Configures quick feedback test reports.
• Adds the following tasks
• aggregateTestReports
• aggregateIntegrationTestReports
• aggregateFunctionalTestReports
• aggregateAllTestReports
@aalmiray
ORG.KORDAMP.GRADLE.PUBLISHING
@aalmiray
PUBLISHING
• Configures publication of main artifact, including source,
javadoc, groovydoc, kotlindoc, scaladoc.
• Configures POM based on data from base & license plugins
• Artifacts may be optionally signed.
• Publication can be deployed to Maven compatible repositories.
ORG.KORDAMP.GRADLE.BINTRAY
@aalmiray
BINTRAY
• Configures publication to Bintray based on data provided by
base, license, and bintray DSL blocks.
• Can push automatically to Maven Central.
• Publishes all artifacts registered by publishing plugin.
@aalmiray
ADDITIONAL PLUGINS
• The following plugins can be applied explicitly
• org.kordamp.gradle.kotlindoc
• org.kordamp.gradle.scaladoc
• org.kordamp.gradle.source-xref
• org.kordamp.gradle.bom
• org.kordamp.gradle.clirr
• org.kordamp.gradle.guide
• org.kordamp.gradle.integration-test
• org.kordamp.gradle.functional-test
SUPER POM
@aalmiray
THE MAVEN SUPER POM
• POMs are hierarchical.
• The chain resolves all the way to the top where you find the
Maven Super POM.
• Super POM configures lots of default & useful behavior.
@aalmiray
THE GRADLE SUPER POM
• Gradle does not offer this behavior out of the box.
• But it can be “faked” using a custom plugin.
• The plugin applies the default behavior that consuming
projects require.
GRADLE
SUPER POM
DEMO
BUILD-SCANS
@aalmiray
X-RAY YOUR BUILDS
• Capture build data on the go.
• Analyze problems on the spot.
• Deep linking enables better sharing.
• Works for both Maven and Gradle.
@aalmiray
https://scans.gradle.com/s/nde2zxpa4xb5w
@aalmiray
https://gradle.com/s/sr5y2ufwamkb2
@aalmiray
@aalmiray
HTTP://ANDRESALMIRAY.COM/NEWSLETTER
HTTP://ANDRESALMIRAY.COM/EDITORIAL
@aalmiray
THANK YOU!
ANDRES ALMIRAY
@AALMIRAY

Más contenido relacionado

La actualidad más candente

Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Philip Stehlik
 

La actualidad más candente (19)

Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
 
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
 
Upcoming features in Airflow 2
Upcoming features in Airflow 2Upcoming features in Airflow 2
Upcoming features in Airflow 2
 
Make Your Build Great Again (DroidConSF 2017)
Make Your Build Great Again (DroidConSF 2017)Make Your Build Great Again (DroidConSF 2017)
Make Your Build Great Again (DroidConSF 2017)
 
SBT Concepts, part 2
SBT Concepts, part 2SBT Concepts, part 2
SBT Concepts, part 2
 
Angular beans
Angular beansAngular beans
Angular beans
 
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
 
Upgrading to Apache Airflow 2 | Airflow Summit 2021
Upgrading to Apache Airflow 2 | Airflow Summit 2021Upgrading to Apache Airflow 2 | Airflow Summit 2021
Upgrading to Apache Airflow 2 | Airflow Summit 2021
 
GraphQL And Relay Modern
GraphQL And Relay ModernGraphQL And Relay Modern
GraphQL And Relay Modern
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
 
Gradle plugin, take control of the build
Gradle plugin, take control of the buildGradle plugin, take control of the build
Gradle plugin, take control of the build
 
Getting Started with Relay Modern
Getting Started with Relay ModernGetting Started with Relay Modern
Getting Started with Relay Modern
 
Comprehensive Browser Automation Solution using Groovy, WebDriver & Obect Model
Comprehensive Browser Automation Solution using Groovy, WebDriver & Obect ModelComprehensive Browser Automation Solution using Groovy, WebDriver & Obect Model
Comprehensive Browser Automation Solution using Groovy, WebDriver & Obect Model
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
Lightweight Developer Provisioning with Gradle
Lightweight Developer Provisioning with GradleLightweight Developer Provisioning with Gradle
Lightweight Developer Provisioning with Gradle
 
Simple Build Tool
Simple Build ToolSimple Build Tool
Simple Build Tool
 
Gradle how to's
Gradle how to'sGradle how to's
Gradle how to's
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019Graalvm with Groovy and Kotlin - Madrid GUG 2019
Graalvm with Groovy and Kotlin - Madrid GUG 2019
 

Similar a Gradle ex-machina

Similar a Gradle ex-machina (20)

Creating Better Builds with Gradle
Creating Better Builds with GradleCreating Better Builds with Gradle
Creating Better Builds with Gradle
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019
 
Gradle - Build system evolved
Gradle - Build system evolvedGradle - Build system evolved
Gradle - Build system evolved
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
 
ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
 
Gradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhereGradle 2.Write once, builde everywhere
Gradle 2.Write once, builde everywhere
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbt
 
Gradle: The Build System you have been waiting for!
Gradle: The Build System you have been waiting for!Gradle: The Build System you have been waiting for!
Gradle: The Build System you have been waiting for!
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin Writing
 
Gradle
GradleGradle
Gradle
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Gradle
GradleGradle
Gradle
 
Intro to-ant
Intro to-antIntro to-ant
Intro to-ant
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for android
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 

Más de Andres Almiray

Más de Andres Almiray (20)

Creando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abiertoCreando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abierto
 
Liberando a produccion con confianza
Liberando a produccion con confianzaLiberando a produccion con confianza
Liberando a produccion con confianza
 
Liberando a produccion con confidencia
Liberando a produccion con confidenciaLiberando a produccion con confidencia
Liberando a produccion con confidencia
 
OracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java DevelopersOracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java Developers
 
Softcon.ph - Maven Puzzlers
Softcon.ph - Maven PuzzlersSoftcon.ph - Maven Puzzlers
Softcon.ph - Maven Puzzlers
 
Maven Puzzlers
Maven PuzzlersMaven Puzzlers
Maven Puzzlers
 
Oracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java DevelopersOracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java Developers
 
JReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of lightJReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of light
 
Building modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and LayrryBuilding modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and Layrry
 
Going Reactive with g rpc
Going Reactive with g rpcGoing Reactive with g rpc
Going Reactive with g rpc
 
Building modular applications with JPMS and Layrry
Building modular applications with JPMS and LayrryBuilding modular applications with JPMS and Layrry
Building modular applications with JPMS and Layrry
 
Taking Micronaut out for a spin
Taking Micronaut out for a spinTaking Micronaut out for a spin
Taking Micronaut out for a spin
 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and You
 
What I wish I knew about Maven years ago
What I wish I knew about Maven years agoWhat I wish I knew about Maven years ago
What I wish I knew about Maven years ago
 
What I wish I knew about maven years ago
What I wish I knew about maven years agoWhat I wish I knew about maven years ago
What I wish I knew about maven years ago
 
The impact of sci fi in tech
The impact of sci fi in techThe impact of sci fi in tech
The impact of sci fi in tech
 
Interacting with the Oracle Cloud Java SDK with Gradle
Interacting with the Oracle Cloud Java SDK with GradleInteracting with the Oracle Cloud Java SDK with Gradle
Interacting with the Oracle Cloud Java SDK with Gradle
 
Go Java, Go!
Go Java, Go!Go Java, Go!
Go Java, Go!
 
Going Reactive with gRPC
Going Reactive with gRPCGoing Reactive with gRPC
Going Reactive with gRPC
 
The JavaFX Ecosystem
The JavaFX EcosystemThe JavaFX Ecosystem
The JavaFX Ecosystem
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Gradle ex-machina