You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2008/07/22 23:09:31 UTC
svn commit: r678906 - in /maven/site/trunk/src/site:
apt/repository-management.apt xdoc/articles.xml
Author: jvanzyl
Date: Tue Jul 22 14:09:30 2008
New Revision: 678906
URL: http://svn.apache.org/viewvc?rev=678906&view=rev
Log:
o added some real content about repository managers and added descriptions for all known repository manager implementations, taking the descriptions from their respective web sites.
Modified:
maven/site/trunk/src/site/apt/repository-management.apt
maven/site/trunk/src/site/xdoc/articles.xml
Modified: maven/site/trunk/src/site/apt/repository-management.apt
URL: http://svn.apache.org/viewvc/maven/site/trunk/src/site/apt/repository-management.apt?rev=678906&r1=678905&r2=678906&view=diff
==============================================================================
--- maven/site/trunk/src/site/apt/repository-management.apt (original)
+++ maven/site/trunk/src/site/apt/repository-management.apt Tue Jul 22 14:09:30 2008
@@ -1,5 +1,5 @@
----
- Repository Management
+ Repository Management with Maven Repository Managers
-----
~~ Licensed to the Apache Software Foundation (ASF) under one
@@ -22,39 +22,84 @@
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html
-Repository Management
+Repository Management with Maven Repository Managers
-* What is a Build Artifact Repository Manager
-
- The purpose of a <Maven repository> is to hold all software libraries used within an organization. The responsibility
- of a <Build Artifact Repository Manager> is to
-
- 1. <<Proxy content from remote artifact repositories>>.
-
- The proxy functionality gives increased <speed>, better <availability> and makes it <easier find and add
- dependencies> to their projects (no more which repo holds artifactX?).
-
- 2. <<Share artifacts between developers>>.
-
- The repository supports deployment of internal and external snapshots and releases and advanced security options
- can be to restrict access to sensitive artifacts.
- This functionality is required to work effectively with a large number of Maven projects and without it it is
- hard to implement the "one deployment unit, one Maven project" concept.
-
- 3. <<Make it easier to manage repositories and dependencies>>
-
- The products often provide a graphical user interface that supports search and browsing of the repositories and functionality to view/add/delete artifacts.
-
-* Repository Manager Overview
-
- Following is an alphabetical list of some repository managers we've heard mentioned around the Maven community:
-
- * {{{http://archiva.apache.org/}Apache Archiva}}
-
- * {{{http://www.jfrog.org/sites/artifactory/latest/}Artifactory}}
-
- * {{{http://nexus.sonatype.org}Nexus Repository Manager}}
+ Maven Repository managers serve two purposes: they act as highly configurable proxies between your organization and the public Maven repositories
+ and they also provide an organization with a deployment destination for your own generated artifacts.
+ Proxying a Maven repository brings a number of benefits. Proxying speeds up builds throughout your organization by installing a local
+ cache for all artifacts from the Central Maven repository. If a developer in your organization needs to download version 2.5 of the Spring
+ Framework and you are using a Maven Repository Manager, the dependencies (and the dependency's dependencies) only need to be downloaded from the remote repository
+ once. With a high-speed connection to the Internet this might seem like a minor concern, but if you are constantly asking your developers to
+ download hundreds of megabytes of third-party dependencies, the real cost savings are going to be the time it takes Maven to check for new versions
+ of dependencies and to download dependencies. Serving Maven dependencies from a local repository can save you hundreds of requests over HTTP, and,
+ in very large multi-project builds, this can shave minutes from a build.
+
+ If your project is relying on a number of SNAPSHOT dependencies, Maven will need to check for updated version of these snapshots.
+ Depending on the configuration of your remote repositories, Maven will check for SNAPSHOT updates periodically, or it might be checking
+ for SNAPSHOT updates on every build. When Maven checks for a snapshot update it needs to interrogate the remote repository for the latest
+ version of the SNAPSHOT dependency. Depending on your connection to the public Internet and the load on the central Maven repository, a
+ SNAPSHOT update can add seconds to your project's build for each SNAPSHOT update. When you host a local repository proxy with a repository
+ manager, your repository manager is going to check for SNAPSHOT updates on a regular schedule, and your applications will be able to interact
+ with a local repository. If you develop software with a lot of SNAPSHOT dependencies, using a local repository manager can often shave minutes from a
+ large multi-module project build, your 5-10 second SNAPSHOT update checks against the public central repository are going to execute in hundreds of milliseconds (or less).
+
+ In addition to the simple savings in time and bandwidth, a repository manager provides an organization with control over what is downloaded
+ by Maven. You can include or exclude specific artifacts from the public repository, and having this level of control over what is downloaded from
+ the central Maven repository is a prerequisite for organizations which need strict control over what dependencies are used throughout an organization.
+ An organization which wants to standardize on a specific version of a dependency like Hibernate or Spring can enforce this standardization by only
+ providing access to a specific version of an artifact in a repository manager. Other organizations might be concerned with making sure
+ that every external dependency has a license compatible with the legal standards of that organization. If a corporation is producing a application
+ which is distributed, they might want to make sure that no one inadvertently adds a dependency on a third-party library which is covered under a
+ copy-left license like the GPL. Repository managers provide for the level of control that an organization needs to make sure that overall architecture
+ and policy can be enforced.
+
+ Aside from the benefits of mediating access to remote repositories, a repository manager also provides something essential to full adoption
+ of Maven. Unless you expect every member of your organization to download and build every single internal project, you will want to provide
+ a mechanism for developers and departments to share both SNAPSHOT and releases for internal project artifacts. A Maven repository manager provides your organization
+ with such a deployment target. Once you install a Maven repository manager, you can start using Maven to deploy snapshots and releases to a custom repository managed
+ by the repository manager. Over time, this central deployment point for internal projects becomes the fabric for collaboration between different development teams.
+
+ The Following is a list of the known Maven repository managers and listed in chronological order of appearance in the community:
+
+* {{{http://maven-proxy.codehaus.org/}Maven Proxy}}
+
+ Maven Proxy was the first Maven repository manager to come on the scene, but the project is now defuct and it's not recommended for
+ general use anymore. The code that was in Maven Proxy was used as the initial basis of Artifactory.
+
+* Proximity
+
+ Anyone who was using Proximity is now encouraged to use Nexus. The entire codebase of Proximity was absorbed into Nexus.
+
+* {{{http://www.jfrog.org/sites/artifactory/latest/}Artifactory}}
+
+ Artifactory is a Maven 2 enterprise repository. It offers advanced proxying, caching and security facilities to provide a
+ robust, reproducible and independent build environment when using Maven. Artifactory is being used by clients ranging from
+ small startup teams to international corporate teams employing distributed development, thus improving the development
+ experience for tens of thousands of developers. Artifactory exposes a robust artifacts management platform using rich Ajax
+ web UI and can be run out-of-the-box with a simple "unzip and launch".
+
+* {{{http://archiva.apache.org/}Apache Archiva}}
+
+ Apache Archiva is an extensible repository management software that helps taking care of your own personal or enterprise-wide build artifact repository. It
+ is the perfect companion for build tools such as Maven, Continuum, and ANT.
+
+ Archiva offers several capabilities, amongst which remote repository proxying, security access management, build artifact storage,
+ delivery, browsing, indexing and usage reporting, extensible scanning functionality... and many more!
+
+* {{{http://www.pdark.de/dsmp/}Dead Simple Maven Proxy}}
+
+ DSMP is a proxy. It can be used as a repository server but it's main purposs it to act as a filter when Maven accesses the internet. If you need a repository server, use Archiva.
+
+* {{{http://nexus.sonatype.org}Nexus: Maven Repository Manager}}
+
+ Tamas Cservenak started working on Proximity in December 2005 as he was trying to find a way to isolate his own systems from an
+ incredibly slow ADSL connection provided by a Hungarian ISP. Proximity started as a simple web application to proxy artifacts for
+ a small organization with connectivity issues. Creating a local on-demand cache for Maven artifacts from the central Maven repository
+ gave an organization access to the artifacts on the Central Maven Repository, but it also made sure that these artifacts weren't
+ downloaded over a very slow ADSL connection used by a number of developers. In 2007, Sonatype asked Tamas to help create a similar
+ product named Nexus. Nexus is currently considered the logical next step to Proximity. Nexus currently has an active development team,
+ and portions of the indexing code from Nexus are also being used in {{{http://m2eclipse.sonatype.org/}m2eclipse}}
~~ TODO Add link to comparison matrix on the MAVENUSER wiki that shows the which features the different products have.
@@ -62,6 +107,8 @@
* Other resources
+ * {{{http://www.sonatype.com/book/reference/repository-manager.html#}Chapter on Nexus in <Maven: The Definitive Guide>}}
+
* {{{http://www.theserverside.com/tt/articles/article.tss?l=SettingUpMavenRepository}Setting Up Maven Repository}} by Avneet Mangat
* {{{http://docs.codehaus.org/display/MAVENUSER/Maven+Concepts+Repositories}Maven Concepts Repositories}} from Maven wiki
Modified: maven/site/trunk/src/site/xdoc/articles.xml
URL: http://svn.apache.org/viewvc/maven/site/trunk/src/site/xdoc/articles.xml?rev=678906&r1=678905&r2=678906&view=diff
==============================================================================
--- maven/site/trunk/src/site/xdoc/articles.xml (original)
+++ maven/site/trunk/src/site/xdoc/articles.xml Tue Jul 22 14:09:30 2008
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+ <?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
@@ -32,7 +32,7 @@
<ul>
<li><strong>Covers:</strong>Maven 2.0.x</li>
<li><strong>Published:</strong>Not yet</li>
- <li><strong>Authors:</strong>
+ <li><strong>Authors: </strong>
<a href="http://www.sonatype.com/">Sonatype (Jason van Zyl, John Casey, Eric Redmond)</a>
</li>
</ul>
@@ -97,6 +97,12 @@
<th>Published</th>
</tr>
<tr>
+ <td><a href="http://www.theserverside.com/tt/articles/article.tss?l=Introductiontom2eclipse">Introduction to m2eclipse</a></td>
+ <td>TheServerSide</td>
+ <td>Tim O'Brien, Bruce Snyder, Eugene Kuleshov</td>
+ <td>July 2008</td>
+ </tr>
+ <tr>
<td><a href="http://msozen.home.anadolu.edu.tr/maven2.x_dokuman.pdf">Maven 2.x (in Turkish)</a></td>
<td>Anadolu Üniversitesi</td>
<td>Mustafa Sait Özen</td>