Author: carlos Date: Tue Apr 24 11:33:47 2007 New Revision: 532037 URL: http://svn.apache.org/viewvc?view=rev&rev=532037 Log: Put automatic sync config in a more prominent place and provide more info
Modified: maven/site/trunk/src/site/apt/guides/mini/guide-central-repository-upload.apt Modified: maven/site/trunk/src/site/apt/guides/mini/guide-central-repository-upload.apt URL: http://svn.apache.org/viewvc/maven/site/trunk/src/site/apt/guides/mini/guide-central-repository-upload.apt?view=diff&rev=532037&r1=532036&r2=532037 ============================================================================== --- maven/site/trunk/src/site/apt/guides/mini/guide-central-repository-upload.apt (original) +++ maven/site/trunk/src/site/apt/guides/mini/guide-central-repository-upload.apt Tue Apr 24 11:33:47 2007 @@ -13,43 +13,13 @@ Maven to have transparent access to their project's artifacts. In order to allow for this a project must have their artifacts deployed to the Central Repository. -* Step 1: Create an upload bundle - - Use the repository plugin provided with the standard Maven distribution to create an upload bundle: - -+----+ - - mvn repository:bundle-create - -+----+ - - The bundle will be created in your <<<target>>> directory with the name: - <<<${pom.artifactId}-${pom.currentVersion}-bundle.jar>>> - - If you want to include a jar with java sources in your upload (recommended, unless your license doesn't - allow sources to be redistributed) the command to run is: - -+----+ - - mvn source:jar javadoc:jar repository:bundle-create -+----+ - - If you are not using maven as your build system but want something - uploaded to the Central Repository then you just need to make a JAR (using the <<<jar>>> executable, - not <<<zip>>>, <<<pkzip>>> or equivalent) with the following content: +Requirements -+----+ + Only releases can be uploaded to the central repository, that means files that won't change and that only depend in other files + already released and available in the repository. -pom.xml -foo-1.0.jar (or whatever artifact is referred to in the pom.xml) -foo-1.0-sources.jar (optional, jar containing java sources) -foo-1.0-javadoc.jar (optional, jar containing javadocs) - -+----+ - - Note that the bundle will be read by a script, so it must follow the above format. Also, - the <<<pom.xml>>> must at least contain the following elements: + There are some requirements about the minimal information in the poms that are in the central repository. At least these must be present * modelVersion @@ -73,12 +43,44 @@ * dependencies - [] - Be sure to always check previous versions of the poms in the repository to use the information - already there as a base. + <<groupId>>: it will identify your project uniquely across all + projects, so we need to enforce a naming schema. For projects with artifacts already uploaded to the Central Repository it can + be equal to the one used previously, but for new projects it has to follow the package name rules, what + means that has to be at least as a domain name you control, and you can create as many subgroups + as you want. + There are a lot of poorly defined package names so you <<must provide proof that you control the domain>> that + matches the groupId. Provide proof means that the project is hosted at that domain or it's owned by a member, + in that case you must give the link to the registrar database (whois) where the owner is listed and the page + in the project web where the owner is associated with the project. + eg. If you use a com.sun.xyz package name we expect that the project is hosted at http://xyz.sun.com. - A basic sample: + Look at {{{http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.7} + More information about package names}}. Check also the guide about + {{{guide-naming-conventions.html}Maven naming conventions}} + + Examples: + + * www.springframework.org -> org.springframework + + * oness.sf.net -> net.sf.oness + + +* Explanation + + Some folks have asked why do we require all this information in the POM for deployed artifacts so here's a small explanation. The POM + being deployed with the artifact is part of the process to make transitive dependencies a reality in Maven. The logic for getting + transitive dependencies working is really not that hard, the problem is getting the data. The other applications + that are made possible by having all the POMs available for artifacts are vast, so by placing them into the repository as part of the + process we open up the doors to new ideas that involve unified access to project POMs. + + We also ask for license now because it is possible that your project's license may change in the course of + its life time and we are trying create tools to help normal people sort out licensing issues. For example, knowing all the licenses + for a particular graph of artifacts we could have some strategies that would identify potential licensing problems. + + + +* A basic sample: +----+ @@ -113,28 +115,79 @@ +----+ - [] - <<IMPORTANT>> considerations about the <<groupId>>: it will identify your project uniquely across all - projects, so we need to enforce a naming schema. For projects with artifacts already uploaded to the Central Repository it can - be equal to the one used previously, but for new projects it has to follow the package name rules, what - means that has to be at least as a domain name you control, and you can create as many subgroups - as you want. - There are a lot of poorly defined package names so you <<must provide proof that you control the domain>> that - matches the groupId. Provide proof means that the project is hosted at that domain or it's owned by a member, - in that case you must give the link to the registrar database (whois) where the owner is listed and the page - in the project web where the owner is associated with the project. - eg. If you use a com.sun.xyz package name we expect that the project is hosted at http://xyz.sun.com. - Look at {{{http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.7} - More information about package names}}. Check also the guide about - {{{guide-naming-conventions.html}Maven naming conventions}} +Sync'ing your own repository to the central repository automatically - Examples: + This is the preferred process. You first have to setup your project to + {{{http://maven.apache.org/plugins/maven-deploy-plugin/}deploy to a remote repository}}. - * www.springframework.org -> org.springframework + You must make sure the remote repository server has rsync or rsync over ssh, there are free services like + {{{http://sf.net}Sourceforge}} that provide you {{{http://sourceforge.net/docman/display_doc.php?docid=4297&group_id=1#shell}ssh server access}}. + + After you are able to deploy to your remote repository <<make sure you only deploy releases>>. Then you can provide a script like the + {{{http://svn.apache.org/viewvc/maven/archiva/trunk/maven-meeper/src/bin/synchronize/m2-sync/conf/}current scripts}}, + open an issue under {{{http://jira.codehaus.org/browse/MAVENUPLOAD}MAVENUPLOAD}} and attach the script, and we'll add it to the automatically synced repos. + + Make sure you provide proof of owning the domain that matches the groupId (see groupId considerations above). Proof means either the server to sync from has a name + under that domain, your name shows up in a prominent place in the domain, or you provide a link to a whois database where your name shows up as the domain owner. + + If you are using ssh in your own server you need to add the {{{http://www.ibiblio.org/maven/id_dsa.pub}maven public key}} to the authorized ones to allow us to log + in the machine. + + Remember to subscribe to {{{mailto:[EMAIL PROTECTED] repository mailing list}}. + + <<Important>>: nothing is deleted or changed in the Central Repository after it is synced (except maven-metadata.xml files) + + + +Manual upload of artifacts + + Note that this manual process is time consuming and <<will only be accepted for a limited number of requests>>. If you want to upload frequently read the + section above about automatic sync. - * oness.sf.net -> net.sf.oness + +* Step 1: Create an upload bundle + + Use the repository plugin provided with the standard Maven distribution to create an upload bundle: + ++----+ + + mvn repository:bundle-create + ++----+ + + The bundle will be created in your <<<target>>> directory with the name: + <<<${pom.artifactId}-${pom.currentVersion}-bundle.jar>>> + + If you want to include a jar with java sources in your upload (recommended, unless your license doesn't + allow sources to be redistributed) the command to run is: + ++----+ + + mvn source:jar javadoc:jar repository:bundle-create + ++----+ + + If you are not using maven as your build system but want something + uploaded to the Central Repository then you just need to make a JAR (using the <<<jar>>> executable, + not <<<zip>>>, <<<pkzip>>> or equivalent) with the following content: + ++----+ + +pom.xml +foo-1.0.jar (or whatever artifact is referred to in the pom.xml) +foo-1.0-sources.jar (optional, jar containing java sources) +foo-1.0-javadoc.jar (optional, jar containing javadocs) + ++----+ + + Note that the bundle will be read by a script, so it must follow the above format. + + [] + + Be sure to always check previous versions of the poms in the repository to use the information + already there as a base. [] @@ -167,20 +220,9 @@ +----+ -* Explanation - Some folks have asked why do we require the POM and license each time an artifact is deployed so here's a small explanation. The POM - being deployed with the artifact is part of the process to make transitive dependencies a reality in Maven. The logic for getting - transitive dependencies working is really not that hard, the problem is getting the data. The other applications - that are made possible by having all the POMs available for artifacts are vast, so by placing them into the repository as part of the - process we open up the doors to new ideas that involve unified - access to project POMs. - - We also ask for a license now because it is possible that your project's license may change in the course of - its life time and we are trying create tools to help normal people sort out licensing issues. For example, knowing all the licenses - for a particular graph of artifacts we could have some strategies that would identify potential licensing problems. -* Maven partners +Maven partners The following sites sync automatically their project repository with the central one. If you want a project from any of these sites to be uploaded to the Central Repository you'll have to @@ -195,19 +237,6 @@ * {{{http://www.opensymphony.com/}OpenSymphony}} * {{{http://www.osjava.org}OS Java}} - - -Sync'ing your own repository with ibiblio - - If you want to automatically sync your own repository to ibiblio you must make sure the server has rsync or rsync over ssh - and provide a script like the - {{{http://svn.apache.org/viewvc/maven/archiva/trunk/maven-meeper/src/bin/synchronize/m2-sync/conf/}current scripts}}, - open an issue under {{{http://jira.codehaus.org/browse/MAVENUPLOAD}MAVENUPLOAD}} with it and we'll add it to the automatically synced repos. - If using ssh you need to add the {{{http://www.ibiblio.org/maven/id_dsa.pub}maven public key}} to the authorized ones to allow us to log in the machine. - - Remember to subscribe to {{{mailto:[EMAIL PROTECTED] repository mailing list}}. - - <<Important>>: nothing is deleted or changed in the Central Repository after it is synced (except maven-metadata.xml files) For Maven developers