SlideShare uma empresa Scribd logo
1 de 52
Groovy Maven Builds


Evgeny Goldin
  Thomson Reuters
  @evgeny_goldin




                    11
Evgeny Goldin
Software Developer – 11 years
Dev : C++ => Perl => Java => Groovy / Scala
CM : Ant => Maven => Gradle
OS : Artifactory, TeamCity, Jenkins
Write for GroovyMag and Methods & Tools
Maven plugins, GCommons library



                                               22
OpenCalais by Thomson Reuters
     http://www.opencalais.com/
    http://viewer.opencalais.com/




                                    33
Maven state of affairs:
Maven is rarely used to its fullest potential
“maven-antrun-plugin” is terribly overused
Plugins development is limited
  http://maven.apache.org/plugins
  http://mojo.codehaus.org/plugins.html




                                                 44
About this session:
Maven can be made better!
 .. especially when you use Groovy
We’ll see how:
  GMaven
  Polyglot Maven
  Groovy MOJOs + Demo




                                      55
Groovy is a new Perl.




                        66
Maven and Gradle




                   77
Gradle - dynamic build applications.
Maven - repeatable build processes.




                                 88
Maven makes it awkward to ..
“if” a model composition / plugin execution
Specify dynamic value when configuring a plugin
Put your own logic in POM
Modify existing plugins behavior
Pass in-memory information between plugins




                                               99
Is the game over?
Or can builds become applications?




                             1010
Use case – Build Metadata




                       1111
Ant:
 ~60 LOC
(100 total)
   3 files




          1212
      http://goo.gl/i0ldH
Groovy:
 ~10 LOC
(30 total)




           1313
      http://goo.gl/GdS6y
Compiles Groovy code
Executes Groovy code
Generates Java Stubs (required for MOJOs)
http://delicious.com/evgenyg/gmaven




                                             1414
<goal>execute</goal>
Runs Groovy code
Runs Groovy script
Runs Groovy class




                                 1515
Get IDE
support
 back!




         1616
   http://goo.gl/8DOe2
<goal>execute</goal>
Runs Groovy code
Runs Groovy script
Runs Groovy class
MavenProject
MavenSession
Maven’s “ServletContext”



                                 1717
MavenProject – Static Info
http://goo.gl/3Ve31
Coordinates
Properties
Artifacts
Dependencies
Basedir
Remote repositories

                               1818
MavenSession – Runtime Info
http://goo.gl/Kh8iL
Current MavenProject
Build start time
User properties
System properties
Goals
Local repository

                            1919
GMaven
“if” a model composition / plugin execution
Specify dynamic value when configuring a plugin
Put your own logic in POM
Modify existing plugins behavior
Pass in-memory information between plugins




                                               2020
Use case – Build Metadata




                       2121
http://evgeny-goldin.com/wiki/Maven-about-plugin

<plugin>
  <groupId>com.goldin.plugins</groupId>
  <artifactId>maven-about-plugin</artifactId>
  <version>0.2.3</version>
</plugin>



                                                2222
something.jar/META-INF/about.txt




                                   2323
2424
2525
Polyglot Maven
https://docs.sonatype.org/display/PMAVEN/
https://github.com/sonatype/polyglot-maven
git clone + mvn clean install
translate pom.xml pom.groovy




                                              2626
2727
http://goo.gl/U5eqr
2828
http://goo.gl/av0Dx
Polyglot Maven
Groovy syntactic sugar to Maven POM
Couldn’t find a way to
  Attach a code to a lifecycle
  Locate MavenProject and MavenSession




                                          2929
Polyglot Maven
“if” a model composition / plugin execution
Specify dynamic value when configuring a plugin
Put your own logic in POM
“validate” phase




                                               3030
Groovy MOJOs
Reusable
More exposure to Maven runtime environment
http://delicious.com/evgenyg/mojo




                                              3131
Use case – Duplicates




                          3232
                    http://goo.gl/ZFRvp
https://github.com/evgeny-goldin/gmaven-samples



                                            


                                                     Duplicates
                                                      Finder
http://www.flickr.com/photos/rohdesign/3534506648/ (rohdesign.com)   3333
http://evgeny-goldin.com/wiki/Duplicates-finder-plugin

 <plugin>
   <groupId>com.goldin.plugins</groupId>
   <artifactId>duplicates-finder-plugin</artifactId>
   <version>0.2.3</version>
 </plugin>



                                                3434
Maven Plugins
Duplicates found in:
-=-= [org.codehaus.plexus:plexus-classworlds:jar:2.2.2:compile,
      classworlds:classworlds:jar:1.1:compile] =-=-
-=-= [commons-logging:commons-logging-api:jar:1.1:compile,
      commons-logging:commons-logging:jar:1.1.1:compile] =-=-
-=-= [nekohtml:xercesMinimal:jar:1.9.6.2:compile,
      xerces:xercesImpl:jar:2.8.1:compile] =-=-
-=-= [nekohtml:nekohtml:jar:1.9.6.2:compile,
      net.sourceforge.nekohtml:nekohtml:jar:1.9.9:compile] =-=-
-=-= [commons-beanutils:commons-beanutils:jar:1.8.0:compile,
      commons-collections:commons-collections:jar:3.2.1:compile] =-=-


                                   Google Guice
Duplicates found in:
-=-= [com.google.inject:guice:jar:3.0-SNAPSHOT:compile,
      com.google.inject:guice:jar:no_deps:3.0-SNAPSHOT:compile] =-=-

                                                                        3535
Groovy MOJOs
A Groovy class + @AnnoMojo




                              3636
Groovy MOJOs
A Groovy class + @AnnoMojo
Dynamic properties




                                    3737
                              http://goo.gl/UqBqn
Groovy MOJOs
A Groovy class + @AnnoMojo
Dynamic properties




                                    3838
                              http://goo.gl/UqBqn
Groovy MOJOs
A Groovy class + @AnnoMojo
Dynamic properties




                                   3939
                              http://goo.gl/xV73v
Groovy MOJOs
A Groovy class + @AnnoMojo
Dynamic properties
New Maven properties




                                   4040
                              http://goo.gl/tEgQa
Groovy MOJOs
Other plugins can be extended or invoked
Their initialization though, may not work well
http://github.com/TimMoore/mojo-executor




                                                   4141
                                              http://goo.gl/tEgQa
mojo-executor




                      4242
                http://goo.gl/CT6AQ
Groovy MOJOs
A Groovy class + @AnnoMojo
Dynamic properties
New Maven properties
Other plugins can be extended or invoked
That’s how you deal with Maven!




                                            4343
Maven 3 vs. Maven 2
IE9 vs. IE6
Maven 3: Aether, mojo-executor, better Mojo support
Maven 3 Mojos will not run on Maven 2
Maven 2 support will seriously hold you back




                                                4444
Groovy MOJOs
“if” a model composition / plugin execution
Specify dynamic value when configuring a plugin
Put your own logic in POM
Modify existing plugins behavior
Pass in-memory information between plugins




                                               4545
So ..




        4646
So ..
GMaven - custom build behavior on any phase
Polyglot Maven is a Groovy syntactic sugar
Groovy Mojos is the way to make it your way




                                               4747
So ..
GMaven - custom build behavior on any phase
Polyglot Maven is a Groovy syntactic sugar
Groovy Mojos is the way to make it your way
Creating build applications with Maven – doable!
  Maven is not a solution, but a platform




                                                4848
So ..
GMaven - custom build behavior on any phase
Polyglot Maven is a Groovy syntactic sugar
Groovy Mojos is the way to make it your way
Creating build applications with Maven – doable!
  Maven is not a solution, but a platform
  We don’t have to be limited by existing plugins
  Perl, IDEA, Jenkins, jQuery, Grails, Gradle ..




                                                     4949
Maven Plugins
http://evgeny-goldin.com/wiki/Maven-plugins
maven-copy-plugin
maven-jenkins-plugin
maven-assert-plugin
maven-mail-plugin
maven-about-plugin
duplicates-finder-plugin


                                               5050
Links
@evgeny_goldin
http://evgeny-goldin.com
http://evgeny-goldin.org
http://github.com/evgeny-goldin/




                                    5151
5252

Mais conteúdo relacionado

Mais procurados

Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009
Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009
Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009
Guillaume Laforge
 

Mais procurados (20)

Testing Drupal with Ghosts and Gherkin
Testing Drupal  with Ghosts and GherkinTesting Drupal  with Ghosts and Gherkin
Testing Drupal with Ghosts and Gherkin
 
Hands on the Gradle
Hands on the GradleHands on the Gradle
Hands on the Gradle
 
Ant, Maven and Jenkins
Ant, Maven and JenkinsAnt, Maven and Jenkins
Ant, Maven and Jenkins
 
Whats New In Groovy 1.6?
Whats New In Groovy 1.6?Whats New In Groovy 1.6?
Whats New In Groovy 1.6?
 
Nas 也可以揀土豆
Nas 也可以揀土豆Nas 也可以揀土豆
Nas 也可以揀土豆
 
Freeing the cloud, one service at a time
Freeing the cloud, one service at a timeFreeing the cloud, one service at a time
Freeing the cloud, one service at a time
 
Apache Maven 2 Part 2
Apache Maven 2 Part 2Apache Maven 2 Part 2
Apache Maven 2 Part 2
 
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
 
JBoss Enterprise Maven Repository
JBoss Enterprise Maven RepositoryJBoss Enterprise Maven Repository
JBoss Enterprise Maven Repository
 
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
 
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
 
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
 
Build system
Build systemBuild system
Build system
 
JDD 2017: 7 things which you should care about before release your code to pr...
JDD 2017: 7 things which you should care about before release your code to pr...JDD 2017: 7 things which you should care about before release your code to pr...
JDD 2017: 7 things which you should care about before release your code to pr...
 
Lightweight javaEE with Guice
Lightweight javaEE with GuiceLightweight javaEE with Guice
Lightweight javaEE with Guice
 
Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009
Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009
Introduction to Groovy and what's New in Groovy 1.6 - SpringOne Europe 2009
 
CQCON CQ Maven Methods
CQCON CQ Maven MethodsCQCON CQ Maven Methods
CQCON CQ Maven Methods
 
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web Framework
 

Destaque (8)

GR8Conf 2009: Opening Keynote by Søren Berg Glasius and Guillaume Laforge
GR8Conf 2009: Opening Keynote by Søren Berg Glasius and Guillaume LaforgeGR8Conf 2009: Opening Keynote by Søren Berg Glasius and Guillaume Laforge
GR8Conf 2009: Opening Keynote by Søren Berg Glasius and Guillaume Laforge
 
GR8Conf 2011: Neo4j Plugin
GR8Conf 2011: Neo4j PluginGR8Conf 2011: Neo4j Plugin
GR8Conf 2011: Neo4j Plugin
 
Ethan Chazin 2011 Praxis Retreat
Ethan Chazin 2011 Praxis RetreatEthan Chazin 2011 Praxis Retreat
Ethan Chazin 2011 Praxis Retreat
 
GR8Conf 2011: Groovy 1.8 update
GR8Conf 2011: Groovy 1.8 updateGR8Conf 2011: Groovy 1.8 update
GR8Conf 2011: Groovy 1.8 update
 
GR8Conf 2011: Canoo RIA Suite
GR8Conf 2011: Canoo RIA SuiteGR8Conf 2011: Canoo RIA Suite
GR8Conf 2011: Canoo RIA Suite
 
GR8Conf 2009: Griffon by Jim Shingler
GR8Conf 2009: Griffon by Jim ShinglerGR8Conf 2009: Griffon by Jim Shingler
GR8Conf 2009: Griffon by Jim Shingler
 
GR8Conf 2011: Grails Infinispanplugin, Tom Fuller
GR8Conf 2011: Grails Infinispanplugin, Tom FullerGR8Conf 2011: Grails Infinispanplugin, Tom Fuller
GR8Conf 2011: Grails Infinispanplugin, Tom Fuller
 
GR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with GrailsGR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with Grails
 

Semelhante a GR8Conf 2011: Groovy Maven Builds

CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxCoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
Hervé Boutemy
 
Embedding Groovy in a Java Application
Embedding Groovy in a Java ApplicationEmbedding Groovy in a Java Application
Embedding Groovy in a Java Application
Paolo Predonzani
 
Using Maven to build Java & Android program
Using Maven to build Java & Android programUsing Maven to build Java & Android program
Using Maven to build Java & Android program
Mu Chun Wang
 

Semelhante a GR8Conf 2011: Groovy Maven Builds (20)

Release management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRARelease management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRA
 
Spring-batch Groovy y Gradle
Spring-batch Groovy y GradleSpring-batch Groovy y Gradle
Spring-batch Groovy y Gradle
 
Java User Group Cologne
Java User Group CologneJava User Group Cologne
Java User Group Cologne
 
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxCoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
 
Maven
MavenMaven
Maven
 
Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App Engine
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
JSUG - Maven by Michael Greifeneder
JSUG - Maven by Michael GreifenederJSUG - Maven by Michael Greifeneder
JSUG - Maven by Michael Greifeneder
 
Gradle
GradleGradle
Gradle
 
Why gradle
Why gradle Why gradle
Why gradle
 
Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.io
 
Embedding Groovy in a Java Application
Embedding Groovy in a Java ApplicationEmbedding Groovy in a Java Application
Embedding Groovy in a Java Application
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
 
Why you should embrace Gradle and ditch Maven
Why you should embrace Gradle and ditch MavenWhy you should embrace Gradle and ditch Maven
Why you should embrace Gradle and ditch Maven
 
Maven
MavenMaven
Maven
 
Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1
 
Using Maven to build Java & Android program
Using Maven to build Java & Android programUsing Maven to build Java & Android program
Using Maven to build Java & Android program
 
Monkeybars in the Manor
Monkeybars in the ManorMonkeybars in the Manor
Monkeybars in the Manor
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
 

Mais de GR8Conf

Mais de GR8Conf (20)

DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle
 
Mum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerMum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developer
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
 
Scraping with Geb
Scraping with GebScraping with Geb
Scraping with Geb
 
How to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidHow to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and Android
 
Ratpack On the Docks
Ratpack On the DocksRatpack On the Docks
Ratpack On the Docks
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean Code
 
Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature plugins
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applications
 
Ratpack and Grails 3
 Ratpack and Grails 3 Ratpack and Grails 3
Ratpack and Grails 3
 
Grails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGrails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloud
 
Functional testing your Grails app with GEB
Functional testing your Grails app with GEBFunctional testing your Grails app with GEB
Functional testing your Grails app with GEB
 
Deploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCDeploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPC
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshop
 
Idiomatic spock
Idiomatic spockIdiomatic spock
Idiomatic spock
 
The Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedThe Groovy Ecosystem Revisited
The Groovy Ecosystem Revisited
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examples
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and Groovy
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual Machine
 

Ú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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
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?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
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
 

GR8Conf 2011: Groovy Maven Builds