SlideShare uma empresa Scribd logo
1 de 17
AN INTRODUCTION TO
  MAVEN AND FLEX




           @justinjmoses
WHAT IS MAVEN?

Automated build & dependency management

Convention over configuration

Repositories - both local and remote - maintain dependencies

Uses a pom.xml file to detail build instructions

Hierarchical tree structures - each artifact can have a parent and N
children.

Runs a series of phases in the project lifecycle, including compile, test,
package and install
THE BUILD LIFECYCLE

Builds are made up of phases. Default lifecycle:

   Compile

   Test 
    
   (build test classes and run)

   Package
      (package as single artifact)

   Install 
 
   (install artifact locally)

   Deploy 

     (upload artifact to remote repository)
WHAT IS FLEXMOJOS?



A Maven plugin that manages the compilation, optimisation and testing
of flex applications, modules and libraries.

Open Source: github.com/Flexmojos/flexmojos

Written and maintained by @velobr
REPOSITORIES



Local repository is ~/.m2 (or under Users[You].m2 in Win7)

Settings.xml file depicts machine-level settings - such as remote
repository locations.
NEXUS


Nexus is a repository manager

Organisations using Maven typically have their own internal Nexus
instance

Nexus can proxy to other Nexus repositories

Two types of repositories - Snapshot and Release
A SIMPLE FLEX
           APPLICATION


Minimum requirements:

  pom.xml to describe the build

  one or more source files
LOOKING AT THE POM
<project>
	    <modelVersion>4.0.0</modelVersion>
	    <groupId>org.justinjmoses.maven</groupId>
	    <artifactId>flexmojos-simplist</artifactId>
	    <name>Simplist Flexmojos</name>
	    <version>0.1-SNAPSHOT</version>
	    <packaging>swf</packaging>

	    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
                <!-- Details on the Flexmojos plugin -->
	    	     	    <plugin>
	    	     	    	     <groupId>org.sonatype.flexmojos</groupId>
	    	     	    	     <artifactId>flexmojos-maven-plugin</artifactId>
	    	     	    	     <version>4.0-RC1</version>
	    	     	    	     <configuration>
	    	     	    	     	     <sourceFile>./Main.swf</sourceFile>
	    	     	    	     	     <swfVersion>12</swfVersion>
                      </configuration>
	    	     	    	     <dependencies>
	    	     	    	     	     <dependency>
	    	     	    	     	     	    <groupId>com.adobe.flex</groupId>
	    	     	    	     	     	    <artifactId>compiler</artifactId>
	    	     	    	     	     	    <version>4.5.1.21328</version>
	    	     	    	     	     	    <type>pom</type>
	    	     	    	     	     </dependency>
	    	     	    	     </dependencies>
	    	     	    </plugin>
	    	     </plugins>
	    </build>
	
	    <dependencies> ... list of dependencies for building/testing ... </dependencies>
</project>
VERSIONING


Where to find dependencies and versions?

  Flexmojos

  Flex framework

  Others?
AUTOMATED
               UNIT TESTING
Requirements

  Standalone Flash Player

  Add test folders and tests (Test*.as default)

  Add test source location to your pom
  <testSourceDirectory>src/test</testSourceDirectory>


  Add Flexunit dependency to your pom
  <dependency>
      <groupId>com.adobe.flexunit</groupId>
      <artifactId>flexunit</artifactId>
  	   <version>4.0-rc-1</version>
      <type>swc</type>
      <scope>test</scope>
  </dependency>
ADDING DEPENDENCIES



Not all dependencies are hosted remotely.



Some have to be installed manually via install:install-file goal.
> mvn install:install-file
    -Dfile=[file]
    -DgroupId=[groupId]
    -DartifactId=[artifactId]
    -Dversion=[version]
    -Dpackaging=swc
FROM SOURCE TO IDE


Flexmojos has a goal to create Flashbuilder projects from Maven builds

Create a basic pom and source/test structure, then run the goal
> mvn org.sonatype.flexmojos:flexmojos-maven-plugin:3.9:flashbuilder




Note: when using Maven, you do not check in your .project, .settings or libs to source control. The
Flashbuilder goal will create these settings for you.

Why? Because your pom should be the definitive definition of the build - your project settings are only local to
your machine & environment.
ARCHETYPES
Maven supports beginning projects using archetypes (templates)

Flexmojos provides three main archetypes: library, application, modular application
> mvn archetype:generate
-DarchetypeRepository=http://repository.sonatype.com/content/groups/flexgroup
-DarchetypeGroupId=org.sonatype.flexmojos
-DarchetypeArtifactId=flexmojos-archetypes-application
-DarchetypeVersion=4.0-RC1




Typical prescription is the following folder structure
 `-- src
     |--   main
     |     |-- flex
     |     `-- resources
     `--   test
           |-- flex
           `-- resources




Archetypes themselves are projects. You can create your own as templates for new
projects.
APPLICATIONS WITH
                LIBRARIES
        We can add a top-level pom with “pom” packaging

        Then each artifact becomes a maven module, each with its own pom

        Each Maven modules’ pom references the parent - dependencies and config will be
        inherited
        <parent>
    	   	   <groupId>org.justinjmoses.flexmojos-introduction</groupId>
    	   	   <artifactId>flexmojos-libraries</artifactId>
    	   	   <version>0.1-SNAPSHOT</version>
    	   </parent>




        One Maven module can depend on another - Maven will work out build order
        <dependency>
	   	   	   <groupId>org.justinjmoses.flexmojos-introduction</groupId>
	   	   	   <artifactId>flexmojos-libraries-library</artifactId>
	   	   	   <version>${project.version}</version>
	   	   	   <type>swc</type>
	   	   </dependency>
GOTCHAS

Always go back to first-principles - remove redundant code.

Keep your build script thin.

Try to reproduce outside your project - create an empty project
structure with the bare minimum to reproduce.

Check Flexmojos Google Groups.

Found a bug? It’s open source. Hone your Java skills and contribute to a
great plugin.
WHAT ELSE CAN IT DO?

Produce and optimise modular applications

Create RSLs from artifacts

Generate code coverage reports

Output asdoc documentation

Customise the build based on different settings / build environments /
sdks

Deploy as bundled WAR with HTML wrapper
RESOURCES


Code samples from today: github.com/justinjmoses

Flexmojos docs: docs.sonatype.org/display/FLEXMOJOS

Flexmojos goals and config: bitly.com/FM-4RC1-site

Flexmojos Google Groups: groups.google.com/forum/#!forum/flex-
mojos




                                                      @justinjmoses

Mais conteúdo relacionado

Mais procurados

Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with MavenSid Anand
 
ICEfaces EE - Enterprise-ready JSF Ajax Framework
ICEfaces EE - Enterprise-ready JSF Ajax FrameworkICEfaces EE - Enterprise-ready JSF Ajax Framework
ICEfaces EE - Enterprise-ready JSF Ajax FrameworkICEsoftTech
 
An introduction to Maven
An introduction to MavenAn introduction to Maven
An introduction to MavenJoao Pereira
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for DummiesTomer Gabel
 
(Re)-Introduction to Maven
(Re)-Introduction to Maven(Re)-Introduction to Maven
(Re)-Introduction to MavenEric Wyles
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyVolodymyr Ostapiv
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1MD Sayem Ahmed
 
Build Automation using Maven
Build Automation using Maven Build Automation using Maven
Build Automation using Maven Ankit Gubrani
 
Maven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeMaven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeHolasz Kati
 
Automated testing with Drupal
Automated testing with DrupalAutomated testing with Drupal
Automated testing with DrupalPromet Source
 
Version Management in Maven
Version Management in MavenVersion Management in Maven
Version Management in MavenGeert Pante
 
Features & Installation Profiles
Features & Installation ProfilesFeatures & Installation Profiles
Features & Installation ProfilesDavid Watson
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 

Mais procurados (20)

Maven 3 New Features
Maven 3 New FeaturesMaven 3 New Features
Maven 3 New Features
 
Maven
MavenMaven
Maven
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 
Apache Maven In 10 Slides
Apache Maven In 10 SlidesApache Maven In 10 Slides
Apache Maven In 10 Slides
 
ICEfaces EE - Enterprise-ready JSF Ajax Framework
ICEfaces EE - Enterprise-ready JSF Ajax FrameworkICEfaces EE - Enterprise-ready JSF Ajax Framework
ICEfaces EE - Enterprise-ready JSF Ajax Framework
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
An introduction to Maven
An introduction to MavenAn introduction to Maven
An introduction to Maven
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for Dummies
 
(Re)-Introduction to Maven
(Re)-Introduction to Maven(Re)-Introduction to Maven
(Re)-Introduction to Maven
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT Academy
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Build Automation using Maven
Build Automation using Maven Build Automation using Maven
Build Automation using Maven
 
Maven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeMaven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafe
 
Automated testing with Drupal
Automated testing with DrupalAutomated testing with Drupal
Automated testing with Drupal
 
Version Management in Maven
Version Management in MavenVersion Management in Maven
Version Management in Maven
 
Maven basics
Maven basicsMaven basics
Maven basics
 
Apache Maven basics
Apache Maven basicsApache Maven basics
Apache Maven basics
 
Features & Installation Profiles
Features & Installation ProfilesFeatures & Installation Profiles
Features & Installation Profiles
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 

Semelhante a An Introduction to Maven and Flex

Wonderful World of Maven
Wonderful World of MavenWonderful World of Maven
Wonderful World of MavenJustin J. Moses
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management toolRenato Primavera
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulMert Çalışkan
 
Introduction to maven, its configuration, lifecycle and relationship to JS world
Introduction to maven, its configuration, lifecycle and relationship to JS worldIntroduction to maven, its configuration, lifecycle and relationship to JS world
Introduction to maven, its configuration, lifecycle and relationship to JS worldDmitry Bakaleinik
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolelliando dias
 
Javaone - Gradle: Harder, Better, Stronger, Faster
Javaone - Gradle: Harder, Better, Stronger, Faster Javaone - Gradle: Harder, Better, Stronger, Faster
Javaone - Gradle: Harder, Better, Stronger, Faster Andres Almiray
 
BMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenBMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenMert Çalışkan
 
Maven with Flex
Maven with FlexMaven with Flex
Maven with FlexPriyank
 
Maven with Flex
Maven with FlexMaven with Flex
Maven with FlexPriyank
 
Java, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialJava, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialRaghavan Mohan
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...Fwdays
 

Semelhante a An Introduction to Maven and Flex (20)

Wonderful World of Maven
Wonderful World of MavenWonderful World of Maven
Wonderful World of Maven
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
 
Exploring Maven SVN GIT
Exploring Maven SVN GITExploring Maven SVN GIT
Exploring Maven SVN GIT
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Introduction to maven, its configuration, lifecycle and relationship to JS world
Introduction to maven, its configuration, lifecycle and relationship to JS worldIntroduction to maven, its configuration, lifecycle and relationship to JS world
Introduction to maven, its configuration, lifecycle and relationship to JS world
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
 
Javaone - Gradle: Harder, Better, Stronger, Faster
Javaone - Gradle: Harder, Better, Stronger, Faster Javaone - Gradle: Harder, Better, Stronger, Faster
Javaone - Gradle: Harder, Better, Stronger, Faster
 
BMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenBMO - Intelligent Projects with Maven
BMO - Intelligent Projects with Maven
 
Maven with Flex
Maven with FlexMaven with Flex
Maven with Flex
 
Maven with Flex
Maven with FlexMaven with Flex
Maven with Flex
 
Java, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialJava, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorial
 
Maven
MavenMaven
Maven
 
intellimeet
intellimeetintellimeet
intellimeet
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Maven in Mule
Maven in MuleMaven in Mule
Maven in Mule
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
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 textsMaria Levchenko
 
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 Processorsdebabhi2
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
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 AutomationSafe Software
 
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.pptxHampshireHUG
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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 2024The Digital Insurer
 
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)wesley chun
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
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 slidevu2urc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
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)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

An Introduction to Maven and Flex

  • 1. AN INTRODUCTION TO MAVEN AND FLEX @justinjmoses
  • 2. WHAT IS MAVEN? Automated build & dependency management Convention over configuration Repositories - both local and remote - maintain dependencies Uses a pom.xml file to detail build instructions Hierarchical tree structures - each artifact can have a parent and N children. Runs a series of phases in the project lifecycle, including compile, test, package and install
  • 3. THE BUILD LIFECYCLE Builds are made up of phases. Default lifecycle: Compile Test (build test classes and run) Package (package as single artifact) Install (install artifact locally) Deploy (upload artifact to remote repository)
  • 4. WHAT IS FLEXMOJOS? A Maven plugin that manages the compilation, optimisation and testing of flex applications, modules and libraries. Open Source: github.com/Flexmojos/flexmojos Written and maintained by @velobr
  • 5. REPOSITORIES Local repository is ~/.m2 (or under Users[You].m2 in Win7) Settings.xml file depicts machine-level settings - such as remote repository locations.
  • 6. NEXUS Nexus is a repository manager Organisations using Maven typically have their own internal Nexus instance Nexus can proxy to other Nexus repositories Two types of repositories - Snapshot and Release
  • 7. A SIMPLE FLEX APPLICATION Minimum requirements: pom.xml to describe the build one or more source files
  • 8. LOOKING AT THE POM <project> <modelVersion>4.0.0</modelVersion> <groupId>org.justinjmoses.maven</groupId> <artifactId>flexmojos-simplist</artifactId> <name>Simplist Flexmojos</name> <version>0.1-SNAPSHOT</version> <packaging>swf</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <!-- Details on the Flexmojos plugin --> <plugin> <groupId>org.sonatype.flexmojos</groupId> <artifactId>flexmojos-maven-plugin</artifactId> <version>4.0-RC1</version> <configuration> <sourceFile>./Main.swf</sourceFile> <swfVersion>12</swfVersion> </configuration> <dependencies> <dependency> <groupId>com.adobe.flex</groupId> <artifactId>compiler</artifactId> <version>4.5.1.21328</version> <type>pom</type> </dependency> </dependencies> </plugin> </plugins> </build> <dependencies> ... list of dependencies for building/testing ... </dependencies> </project>
  • 9. VERSIONING Where to find dependencies and versions? Flexmojos Flex framework Others?
  • 10. AUTOMATED UNIT TESTING Requirements Standalone Flash Player Add test folders and tests (Test*.as default) Add test source location to your pom <testSourceDirectory>src/test</testSourceDirectory> Add Flexunit dependency to your pom <dependency> <groupId>com.adobe.flexunit</groupId> <artifactId>flexunit</artifactId> <version>4.0-rc-1</version> <type>swc</type> <scope>test</scope> </dependency>
  • 11. ADDING DEPENDENCIES Not all dependencies are hosted remotely. Some have to be installed manually via install:install-file goal. > mvn install:install-file -Dfile=[file] -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version] -Dpackaging=swc
  • 12. FROM SOURCE TO IDE Flexmojos has a goal to create Flashbuilder projects from Maven builds Create a basic pom and source/test structure, then run the goal > mvn org.sonatype.flexmojos:flexmojos-maven-plugin:3.9:flashbuilder Note: when using Maven, you do not check in your .project, .settings or libs to source control. The Flashbuilder goal will create these settings for you. Why? Because your pom should be the definitive definition of the build - your project settings are only local to your machine & environment.
  • 13. ARCHETYPES Maven supports beginning projects using archetypes (templates) Flexmojos provides three main archetypes: library, application, modular application > mvn archetype:generate -DarchetypeRepository=http://repository.sonatype.com/content/groups/flexgroup -DarchetypeGroupId=org.sonatype.flexmojos -DarchetypeArtifactId=flexmojos-archetypes-application -DarchetypeVersion=4.0-RC1 Typical prescription is the following folder structure `-- src |-- main | |-- flex | `-- resources `-- test |-- flex `-- resources Archetypes themselves are projects. You can create your own as templates for new projects.
  • 14. APPLICATIONS WITH LIBRARIES We can add a top-level pom with “pom” packaging Then each artifact becomes a maven module, each with its own pom Each Maven modules’ pom references the parent - dependencies and config will be inherited <parent> <groupId>org.justinjmoses.flexmojos-introduction</groupId> <artifactId>flexmojos-libraries</artifactId> <version>0.1-SNAPSHOT</version> </parent> One Maven module can depend on another - Maven will work out build order <dependency> <groupId>org.justinjmoses.flexmojos-introduction</groupId> <artifactId>flexmojos-libraries-library</artifactId> <version>${project.version}</version> <type>swc</type> </dependency>
  • 15. GOTCHAS Always go back to first-principles - remove redundant code. Keep your build script thin. Try to reproduce outside your project - create an empty project structure with the bare minimum to reproduce. Check Flexmojos Google Groups. Found a bug? It’s open source. Hone your Java skills and contribute to a great plugin.
  • 16. WHAT ELSE CAN IT DO? Produce and optimise modular applications Create RSLs from artifacts Generate code coverage reports Output asdoc documentation Customise the build based on different settings / build environments / sdks Deploy as bundled WAR with HTML wrapper
  • 17. RESOURCES Code samples from today: github.com/justinjmoses Flexmojos docs: docs.sonatype.org/display/FLEXMOJOS Flexmojos goals and config: bitly.com/FM-4RC1-site Flexmojos Google Groups: groups.google.com/forum/#!forum/flex- mojos @justinjmoses

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n