Maven, Archiva, Subversion and Team City

13
Brief overview of Maven2, Archiva, Subversion and Team City Maven2 A build tool for enterprise Java projects Archiva A build artifact repository manager for use with build tools such as Maven, Continuum and Ant. Subversion An Open Source Version Control System that’s widely used in the industry today Team City A Distributed Build Management and Continuous Integration Server

description

brief overview of Maven, Archiva, Subversion and Team City

Transcript of Maven, Archiva, Subversion and Team City

Page 1: Maven, Archiva, Subversion and Team City

Brief overview of Maven2, Archiva, Subversion and Team City

• Maven2 – A build tool for enterprise Java projects

• Archiva – A build artifact repository manager for use with build tools such as Maven, Continuum and Ant.

• Subversion – An Open Source Version Control System that’s widely used in the industry today

• Team City – A Distributed Build Management and Continuous Integration Server

Page 2: Maven, Archiva, Subversion and Team City
Page 3: Maven, Archiva, Subversion and Team City

A build tool for enterprise Java projects

• Simple project setup that follows best practices - get a new project or module started in seconds

• Consistent usage across all projects means no ramp up time for new developers coming onto a project

• Superior dependency management including automatic updating and transitive dependencies

• Coherent site of project information: Using the same metadata as for the build process, Maven generates a web site or PDF and adds to that standard reports about the state of development of the project

• Release management and distribution publication: Without much additional configuration, Maven will integrate with your source control system such as SVN and manage the release of a project based on a certain tag. It can also publish this to a distribution location for use by other projects.

• Large number of plug-ins for development, deployment, release management, etc. Some examples:

• mvn:pmd – to run the PMD code analysis tool on source code and generate a site report with results• mvn:checkstyle - performs Checkstyle analysis and generates a report on violations • mvn:scm - access to common scm commands by offering a set of command mappings• mvn:release - used to release a project with Maven, saving a lot of repetitive, manual work• mvn:jetty - run a Jetty container for rapid webapp development• mvn:cargo - start/stop/configure J2EE containers and deploy to them

Page 5: Maven, Archiva, Subversion and Team City

Archiva is a build artifact repository manager for use with build tools such as Maven, Continuum and Ant

• Proxy and cache: Allows hosting of private repositories (managed) and proxying of other repositories (remote)

• Search and repository browse: You can search artifacts in Archiva as well as browse the repository

• Reports: Archiva uses Jasper Reports for reporting. The reporting is currently limited to a report of defective or problematic artifacts in the repositories

• User interface: Archiva uses Webwork for the user interface. The UI is simple and organized very well

• Repository purge: If enabled, Archiva performs automatic removal or deletion of old snapshots in the repositories during repository scanning

• Uploading/Deleting artifacts: Archiva has support for manually uploading and deleting artifacts

Page 7: Maven, Archiva, Subversion and Team City

• Most CVS features: Subversion was originally designed to be a better CVS, so it has most of CVS's features

• Copying, deleting, and renaming are versioned: Copying, deleting and renaming are versioned operations

• Atomic commits: No part of a commit takes effect until the entire commit has succeeded

• Branching and tagging are cheap operations: Branches and tags are both implemented in terms of an underlying "copy" operation

• Parseable output: All output of the Subversion command-line client is carefully designed to be both human readable and automatically parseable; scriptability is a high priority

• Interactive conflict resolution: The Subversion command-line client (svn) offers various ways to resolve conflicting changes, include interactive resolution prompting. This mechanism is also made available via APIs, so that other clients (such as graphical clients) can offer interactive conflict resolution appropriate to their interfaces

• Natively client/server, layered library design with clean APIs: Subversion is designed to be client/server from the beginning; thus avoiding some of the maintenance problems which have plagued CVS. The code is structured as a set of modules with well-defined interfaces, designed to be called by other applications

• Binary files handled efficiently: Subversion is equally efficient on binary as on text files, because it uses a binary diffing algorithm to transmit and store successive revisions

• and more… @ features

Third party clients

TortoiseSVN (windows)

Subclipse (Eclipse)

Subversive (Eclipse)

SCPlugin (Mac OS X)

RapidSVN (all platform)

and more… @ clients

Page 9: Maven, Archiva, Subversion and Team City

The “Broken Build” Problem The Solution

Integration Builds:

• is a process of clean rebuilding of project code base to ensure that new changes integrate well into the existing code base

• provides feedback on quality of new changes so that timely fixes can be delivered if the changes don't integrate and break the project code base

• run by a dedicated build management server.

What is Continuous Integration ? (to answer, we need to understand the “Broken Build” problem)

Running Integration Builds continuously is also known as Continuous Integration.

Page 10: Maven, Archiva, Subversion and Team City

A Distributed Build Management and Continuous Integration Server •Distributed Build Management: Distributed build management helps optimize hardware resources utilization by parallelizing product builds within the build agents grid. It results in faster builds and better scalability.

Page 11: Maven, Archiva, Subversion and Team City

• Fastest build feedback in the industry: on-the-fly test results reporting, configurable notifications — TeamCity keeps you in the know with the most recent build updates and intermediate results

Page 12: Maven, Archiva, Subversion and Team City

• Pre-Tested Commit (aka Remote Run): TeamCity builds, checks and runs automated tests on the server even before committing your changes — keeping your code base clean at all times

Page 13: Maven, Archiva, Subversion and Team City

• Compatibility and extensibility: TeamCity supports Java, .NET and Ruby development. It offers out of the box integration with the most popular IDEs, build tools, testing frameworks and version control systems