Title: Open Source Project Management
1Open Source Project Management
- Werner Keil Creative Arts Technologies
2Presentation Goal
Learn how to use Open Source and Commercial
Tools together
- Build vs. Project Management
- Project Models and Dependencies
- Repositories
- IDE Integration
- Multiple Projects
- Project Lifecycle
- Continuous Integration
3Build Tools History
- Make, GnuMake, MMake, NMake
- Jam
- Perl/Shell scripts
- Other scripts
- Platform-dependant
- Shell-based
- Sensitive to content format and changes
4The Antcestor
- Apache Ant
- Platform-neutral
- Java-based
- XML content
- Most common build tool for Java and Web
- Usually for single projects(except more complex
Ant-based frameworks)
5A Sample Ant Target
vs. Maven goal
lt!-- compile Java source files --gt lttarget name
"compile"gt ltjavac srcdir "./src./test"
destdir "./bin" debug "on" optimize
"off"gt ltclasspathgt ltfileset dir "lib"
includes ".jar"/gt lt/classpathgt
lt/javacgt lt/targetgt
-gt Maven maven javacompile(or just mvn
compile in M2)
6Maven vs. Ant
(Maven 1)
Maven Ant Standard Build Files project.xml buil
d.xml maven.xml Properties Process 1.
Mb/driver.properties 1. System properties
Order 2. project.properties defined by
-D 3. build.properties 2. Properties loaded
by 4. /build.properties the ltpropertygt
task 5. System properties defined by
-D Last definition wins. First definition
wins. Build Rules Dynamic (similar to a More or
less static programming language) (except
ltscriptgt task) Extension Plugins written in
Jelly Plugins written in Java Build Rules Goals
are extensible by Not easily extensibleExtensibil
ity ltpreGoalgt and ltpostGoalgt
Mb Maven/bin folder Users Home
7POM
- Project Object Model
- Defines key elements of a project
- XML content
- Assisted by properties and scripts
- Jelly (languages in M2)
- Optional rich content via XDoclet
- Multiple formats in M2 (e.g. Wiki-like style)
8POM Elements
Custom Settings (project.properties)
9Dependencies
- Projects can share dependencies to ensure that
every project re-uses common jar files. - Avoid JAR Hell
- Dependency Management Tools
- Maven
- Ivy
- Commercial Systems
10Repository
- Retrieved from a repository,
- Folder on a remote Web server containing all jar
files - By default, Maven uses http//www.ibiblio.org/mav
en as its repository. /maven2 for M2
11Repositories (Maven)
Web Server
project.xml (POM)
Download artifact
Get dependencies
1
Remote Repository
3
Maven core
HTTP
Local Repository
4
Save artifact in local repository
2
Check if artifact exists in local repository
VM
Process/VM
12IDE Integration
- Eclipse Plugin for Maven
- Automation and customization, no integration
- Customized Archetypes (Maven2)
- Mevenide
- Eclipse, NetBeans, JBuilder, IntelliJ
- Maven Workshop
- Eclipse
- Eclipse Maven 2 Plugin
- Ant-like Integration, Eclipse Libraries from
Maven, Follow-Up to Mevenide for Maven 2
13Maven and Eclipse
Extended Build Concepts
14Mevenide Dependency Types
15Mevenide Locations
16Mevenide Plugins
17Mevenide Runtime Preferences
18Mevenide Templates
19Mevenide Synchronization
Bi-directional between Eclipse and Maven
20Mevenide POM Overview
21Mevenide Run
22Daily Builds (1/3)
23Daily Builds (2/3)
24Daily Builds (3/3)
25Project Lifecycle
- Most projects are going through well defined
phases - Analysis
- Design
- Development
- Test
- Deployment
- Maintainance
- Retirement
26Project Lifecycle (Tools)
- Lifecycle Phases covered by Tools like Maven or
Ant or IDEs - Analysis
- Design
- Development
- Test
- Deployment
- Maintainance
- Retirement
27Project Lifecycle (Maven)
- Lifecycle Phases in Terms of Maven 2
- Analysis
- Design
- compile
- test
- Deployment / Maintainance
- package
- install
- deploy
- site
- Retirement
28Continuum (1/4)
- Continuous integration server
- Support for
- Maven 2
- Maven 1
- With restrictions
- Ant
- Shell scripts
29Continuum (2/4)
- Tight integration with Maven
- Reads the modules information from Maven 2 POMs
- Nagging/blaming
- Collects developer information from POMs
- Sends direct messages to developers
30Continuum (3/4)
- Able to build on
- Schedule
- Changes in the SCM
- Changes in dependencies
- Changes in repository
- Manages inter-project dependencies
- Reads unit test reports from the build and stores
them
31Continuum (4/4)
- Remoting
- XML-RPC
- SOAP (xfire.codehaus.org)
- Full control over the server from your IDE
- Not yet implemented
- gt Mylar Integration for Eclipse...
32Continuum and Maven
- Reads all project information from a URL
- http//cvs.plexus.codehaus.org/plexus/pom.xml
- Reads
- Version
- Developers
- Issue tracker
- Sub projects
- Dependencies
33Continuum Notification
- Email
- Planned
- Jabber
- IRC
- RSS
- JIRA
- SMS (?)
34Reports
35Reports (Multiproject)
Maven1
36Demo
37Powered by Maven
Media/Entertainment
- SONY
- Heavy duty customer web applications like CONNECT
- Reuters
- Messaging framework for TIBCO/RV, XML, SOAP, and
JMS. - JAVA API for TIBCO/ActiveDatabase
38Powered by Maven
Banking/Finance
- Concise Group
- 3rd Party Maven Plugins (e.g. DB History)
39Powered by Maven
Software/Science
- PPARC
- AstroGridaims to produce a working datagrid for
key Astronomy databases with associated
data-mining facilities.Grid Computing
40Powered by Maven
Open Source
- Apache SoftwareFoundation
- Jakarta Commons
- Geronimo (J2EE Server)
- Maven Plugins
- Maven (self-hosting!)
- more http//maven.apache.org/about/powered.html
Maven can build itself with some initial steps
41Books/Articles
- Maven A Developer's Notebook
- For Maven 1.0.2
- Sample Introductory chapter
- Quizzes and source code
- http//www.mavenbook.org
Maven Blogs http//www.mavenblogs.com
42Infos
- http//maven.apache.org
- http//mevenide.codehaus.org/
- http//www.codehaus.org
- http//www.ibiblio.org
- http//maven.apache.org/continuum
43Infos
- http//www.catmedia.us
- Emailinfo_at_catmedia.us orwerner.keil_at_gmx.net
44QA