r2436 - in branches/maven1/upstream: . 1.1~beta3 1.1~beta3/src 1.1~beta3/src/admin 1.1~beta3/src/announcements 1.1~beta3/src/bin 1.1~beta3/src/bootstrap 1.1~beta3/src/bootstrap/org 1.1~beta3/src/bootstrap/org/apache 1.1~beta3/src/bootstrap/org/apache/maven 1.1~beta3/src/conf 1.1~beta3/src/installer 1.1~beta3/src/installer/nsis 1.1~beta3/src/java 1.1~beta3/src/java/org 1.1~beta3/src/java/org/apache 1.1~beta3/src/java/org/apache/maven 1.1~beta3/src/java/org/apache/maven/cli 1.1~beta3/src/java/org/apache/maven/jelly 1.1~beta3/src/java/org/apache/maven/jelly/tags 1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez 1.1~beta3/src/java/org/apache/maven/jelly/tags/maven 1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz 1.1~beta3/src/java/org/apache/maven/plugin 1.1~beta3/src/java/org/apache/maven/project 1.1~beta3/src/java/org/apache/maven/repository 1.1~beta3/src/java/org/apache/maven/util 1.1~beta3/src/java/org/apache/maven/verifier 1.1~beta3/src/java/org/apache/maven/werkz 1.1~beta3/src/java/org/apache/maven/werkz/jelly 1.1~beta3/src/man 1.1~beta3/src/messages 1.1~beta3/src/test 1.1~beta3/src/test/basedir 1.1~beta3/src/test/basedir/extend-1 1.1~beta3/src/test/basedir/extend-2 1.1~beta3/src/test/checksum 1.1~beta3/src/test/extend 1.1~beta3/src/test/extend/child_project 1.1~beta3/src/test/java 1.1~beta3/src/test/java/org 1.1~beta3/src/test/java/org/apache 1.1~beta3/src/test/java/org/apache/maven 1.1~beta3/src/test/java/org/apache/maven/jelly 1.1~beta3/src/test/java/org/apache/maven/jelly/tags 1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven 1.1~beta3/src/test/java/org/apache/maven/plugin 1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home 1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins 1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar 1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF 1.1~beta3/src/test/java/org/apache/maven/project 1.1~beta3/src/test/java/org/apache/maven/util 1.1~beta3/src/test/java/org/apache/maven/werkz 1.1~beta3/src/test/mock-plugins 1.1~beta3/src/test/mock-plugins/plugin-1 1.1~beta3/src/test/mock-plugins/plugin-2 1.1~beta3/src/test/mock-plugins/plugin-3 1.1~beta3/src/test/mock-plugins/plugin-4 1.1~beta3/src/test/mock-plugins/plugin-5 1.1~beta3/src/test/mock-plugins/plugin-6 1.1~beta3/src/test/mock-plugins/plugin-7 1.1~beta3/src/test/mock-plugins/plugin-8 1.1~beta3/src/test/mock-plugins/plugin-9 1.1~beta3/src/test/test-data 1.1~beta3/src/test/test-data/pom 1.1~beta3/src/test/test-data/pom/extend 1.1~beta3/src/test/touchstone-build 1.1~beta3/src/test/touchstone-build/lib 1.1~beta3/src/test/touchstone-build/src 1.1~beta3/src/test/touchstone-build/src/aptdocs 1.1~beta3/src/test/touchstone-build/src/conf 1.1~beta3/src/test/touchstone-build/src/main 1.1~beta3/src/test/touchstone-build/src/main/org 1.1~beta3/src/test/touchstone-build/src/main/org/apache 1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven 1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone 1.1~beta3/src/test/touchstone-build/src/reactor-build 1.1~beta3/src/test/touchstone-build/src/reactor-build/clean 1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject 1.1~beta3/src/test/touchstone-build/src/reactor-build/default 1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject 1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml 1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml 1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common 1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty 1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure 1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1 1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2 1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1 1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2 1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence 1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject 1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/a 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/b 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/c 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/d 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/e 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/f 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/a 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/b 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/c 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/d 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/e 1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/f 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1 1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2 1.1~beta3/src/test/touchstone-build/src/reactor-build/resources 1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject 1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources 1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice 1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/a 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/b 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/c 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/d 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e 1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f 1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test 1.1~beta3/src/test/touchstone-build/src/resources 1.1~beta3/src/test/touchstone-build/src/test 1.1~beta3/src/test/touchstone-build/src/test/org 1.1~beta3/src/test/touchstone-build/src/test/org/apache 1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven 1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/touchstone 1.1~beta3/src/test/touchstone-build/src/test-data 1.1~beta3/src/test/touchstone-build/xdocs 1.1~beta3/src/xsd 1.1~beta3/xdocs 1.1~beta3/xdocs/about 1.1~beta3/xdocs/contributing 1.1~beta3/xdocs/developers 1.1~beta3/xdocs/development 1.1~beta3/xdocs/errors 1.1~beta3/xdocs/images 1.1~beta3/xdocs/plugins 1.1~beta3/xdocs/project 1.1~beta3/xdocs/reference 1.1~beta3/xdocs/reference/ide 1.1~beta3/xdocs/start 1.1~beta3/xdocs/start/samples 1.1~beta3/xdocs/style 1.1~beta3/xdocs/using

Marcus Better marcusb-guest at costa.debian.org
Fri Sep 15 08:56:03 UTC 2006


Author: marcusb-guest
Date: 2006-09-15 08:55:53 +0000 (Fri, 15 Sep 2006)
New Revision: 2436

Added:
   branches/maven1/upstream/1.1~beta3/
   branches/maven1/upstream/1.1~beta3/KEYS
   branches/maven1/upstream/1.1~beta3/LICENSE.txt
   branches/maven1/upstream/1.1~beta3/NOTICE.txt
   branches/maven1/upstream/1.1~beta3/README.txt
   branches/maven1/upstream/1.1~beta3/bootstrap.sh
   branches/maven1/upstream/1.1~beta3/build-bootstrap.xml
   branches/maven1/upstream/1.1~beta3/checkstyle-license.txt
   branches/maven1/upstream/1.1~beta3/checkstyle.xml
   branches/maven1/upstream/1.1~beta3/maven.xml
   branches/maven1/upstream/1.1~beta3/plugin-profile.xml
   branches/maven1/upstream/1.1~beta3/plugins-site.xml
   branches/maven1/upstream/1.1~beta3/project.properties
   branches/maven1/upstream/1.1~beta3/project.xml
   branches/maven1/upstream/1.1~beta3/release.xml
   branches/maven1/upstream/1.1~beta3/src/
   branches/maven1/upstream/1.1~beta3/src/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/admin/
   branches/maven1/upstream/1.1~beta3/src/admin/create-checksums
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact.bat
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist.bat
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar.bat
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar
   branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar.bat
   branches/maven1/upstream/1.1~beta3/src/announcements/
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-2.ann
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-3.ann
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-4.ann
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-5.ann
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-6.ann
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-7.ann
   branches/maven1/upstream/1.1~beta3/src/announcements/1.0-rc1.ann
   branches/maven1/upstream/1.1~beta3/src/bin/
   branches/maven1/upstream/1.1~beta3/src/bin/forehead.conf
   branches/maven1/upstream/1.1~beta3/src/bin/maven
   branches/maven1/upstream/1.1~beta3/src/bin/maven.bat
   branches/maven1/upstream/1.1~beta3/src/bootstrap/
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/ArtifactDownloader.java
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Base64.java
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapPomParser.java
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapTask.java
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Dependency.java
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/HttpUtils.java
   branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/package.html
   branches/maven1/upstream/1.1~beta3/src/conf/
   branches/maven1/upstream/1.1~beta3/src/conf/defaults.properties
   branches/maven1/upstream/1.1~beta3/src/conf/driver.jelly
   branches/maven1/upstream/1.1~beta3/src/conf/driver.properties
   branches/maven1/upstream/1.1~beta3/src/conf/links.properties
   branches/maven1/upstream/1.1~beta3/src/conf/log4j.properties
   branches/maven1/upstream/1.1~beta3/src/installer/
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/before-install.nsh
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven-logo.bmp
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven-website.bmp
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven.bmp
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry-uninstall.nsh
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry.nsh
   branches/maven1/upstream/1.1~beta3/src/installer/nsis/startmenu-shortcuts.nsh
   branches/maven1/upstream/1.1~beta3/src/java/
   branches/maven1/upstream/1.1~beta3/src/java/org/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AbstractMavenComponent.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AntProjectBuilder.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/ArtifactListBuilder.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/DependencyClasspathBuilder.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/GoalException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenConstants.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenSession.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenUtils.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/UnknownGoalException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/App.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/CLIManager.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyBuildListener.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyUtils.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenExpressionFactory.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenJellyContext.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagLibrary.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagSupport.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/AddPathTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ConcatTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/CopyResources.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolver.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverInterface.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/GetTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InputTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InstallPluginTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeAbsolutePathTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeRelativePathTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTagLibrary.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ParamCheck.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PomTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PropertyTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ReactorTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/RootRelativePathTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SetTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SnapshotSignature.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UninstallPluginTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UserCheck.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/WerkzDependencyResolver.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/JellyScriptHousing.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginCacheManager.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginManager.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginScriptParser.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/UnknownPluginException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/project/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/project/Project.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractArtifact.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/Artifact.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/ArtifactTypeHandler.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactFactory.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/GenericArtifact.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/PluginArtifact.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/RepositoryLayout.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Base64.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/BootstrapDownloadMeter.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ConsoleDownloadMeter.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLFormatter.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLPathTool.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/EnhancedStringTokenizer.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Expand.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/HttpUtils.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/InsertionOrderedSet.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MD5Sum.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MavenTool.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ResourceBean.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringInputStream.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringTool.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/ChecksumVerificationException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/DependencyVerifier.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/RepoConfigException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/package.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Action.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Callback.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/CyclicGoalChainException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/DefaultAction.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Goal.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoActionDefinitionException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoSuchGoalException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostActionCallback.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostGoalCallback.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreActionCallback.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreGoalCallback.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Session.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/UnattainableGoalException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzException.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzProject.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainGoalTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/CallbackTagSupport.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/GoalTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/JellySession.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostActionTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostGoalTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreActionTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreGoalTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/ProjectTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/UseGoalsTag.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagLibrary.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagSupport.java
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/overview.html
   branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/package.html
   branches/maven1/upstream/1.1~beta3/src/man/
   branches/maven1/upstream/1.1~beta3/src/man/maven.1
   branches/maven1/upstream/1.1~beta3/src/messages/
   branches/maven1/upstream/1.1~beta3/src/messages/messages.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_el.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_es.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_fr.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_it.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_ja.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_nl.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_no.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_pl.properties
   branches/maven1/upstream/1.1~beta3/src/messages/messages_zh_CN.properties
   branches/maven1/upstream/1.1~beta3/src/test/
   branches/maven1/upstream/1.1~beta3/src/test/basedir/
   branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-1/
   branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-1/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-2/
   branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-2/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/basedir/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/checksum/
   branches/maven1/upstream/1.1~beta3/src/test/checksum/input.jar
   branches/maven1/upstream/1.1~beta3/src/test/extend/
   branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/
   branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project-child2.xml
   branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/extend/project-child.xml
   branches/maven1/upstream/1.1~beta3/src/test/extend/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/java/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/JAXPTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/MavenUtilsTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTestData.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/RootRelativePathTagTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/forehead.conf
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.0.jar
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.2-SNAPSHOT.jar
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-java-plugin-1.3.jar
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/maven-clean-plugin-1.1-SNAPSHOT.jar
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/BasedirTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/LegacyIdTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLFormatterTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLPathToolTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MD5SumTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MavenToolTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/StringToolTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTest.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTracker.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockCallback.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockGoal.java
   branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/ProjectTest.java
   branches/maven1/upstream/1.1~beta3/src/test/log4j.properties
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-1/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-1/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-2/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-2/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-3/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-3/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-4/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-4/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-5/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-5/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-6/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-6/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-7/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-7/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-8/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-8/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-9/
   branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-9/plugin.jelly
   branches/maven1/upstream/1.1~beta3/src/test/test-data/
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/dependencies.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-different-ids.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-id-only.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-matching-ids.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-different.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-matching.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-only.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-override-groupid.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-none.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-artifact-id.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml
   branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-id-only.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/a.jar
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/b.jar
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/c-1.0-alpha-1-SNAPSHOT.jar
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/aptdocs/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/aptdocs/apt-test.apt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/log4j.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/runtime.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalA.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalB.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/build.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/contributors.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/dependencies.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/developers.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/licenses.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/mailingLists.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/organization.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/reports.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/build.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/a/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/b/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/c/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/d/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/e/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/f/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/a/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/a/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/b/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/b/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/c/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/c/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/d/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/d/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/maven.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/project.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/maven.tar.gz
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/sea-header
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/test.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/whacky.properties
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/touchstone/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/.cvsignore
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/navigation.xml
   branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/tables.xml
   branches/maven1/upstream/1.1~beta3/src/xsd/
   branches/maven1/upstream/1.1~beta3/src/xsd/maven-v3_0_0.xsd
   branches/maven1/upstream/1.1~beta3/src/xsd/maven-v4_0_0.xsd
   branches/maven1/upstream/1.1~beta3/xdocs/
   branches/maven1/upstream/1.1~beta3/xdocs/.htaccess
   branches/maven1/upstream/1.1~beta3/xdocs/about/
   branches/maven1/upstream/1.1~beta3/xdocs/about/features.xml
   branches/maven1/upstream/1.1~beta3/xdocs/about/powered.xml
   branches/maven1/upstream/1.1~beta3/xdocs/about/whatismaven.xml
   branches/maven1/upstream/1.1~beta3/xdocs/contributing/
   branches/maven1/upstream/1.1~beta3/xdocs/contributing/help.xml
   branches/maven1/upstream/1.1~beta3/xdocs/contributing/patches.xml
   branches/maven1/upstream/1.1~beta3/xdocs/developers/
   branches/maven1/upstream/1.1~beta3/xdocs/developers/apache.xml
   branches/maven1/upstream/1.1~beta3/xdocs/developers/building-from-source.xml
   branches/maven1/upstream/1.1~beta3/xdocs/developers/committers.xml
   branches/maven1/upstream/1.1~beta3/xdocs/developers/documentation-conventions.xml
   branches/maven1/upstream/1.1~beta3/xdocs/developers/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/developers/making-releases.xml
   branches/maven1/upstream/1.1~beta3/xdocs/development-process.xml
   branches/maven1/upstream/1.1~beta3/xdocs/development/
   branches/maven1/upstream/1.1~beta3/xdocs/development/branches.xml
   branches/maven1/upstream/1.1~beta3/xdocs/development/deprecation.xml
   branches/maven1/upstream/1.1~beta3/xdocs/development/distributions.xml
   branches/maven1/upstream/1.1~beta3/xdocs/development/release-process.xml
   branches/maven1/upstream/1.1~beta3/xdocs/errors/
   branches/maven1/upstream/1.1~beta3/xdocs/errors/404.xml
   branches/maven1/upstream/1.1~beta3/xdocs/faq.fml
   branches/maven1/upstream/1.1~beta3/xdocs/images/
   branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project-2.png
   branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project-blue.png
   branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project.png
   branches/maven1/upstream/1.1~beta3/xdocs/images/banner.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/bg.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/breadcrumbs.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/collapsed.gif
   branches/maven1/upstream/1.1~beta3/xdocs/images/expanded.gif
   branches/maven1/upstream/1.1~beta3/xdocs/images/h3.gif
   branches/maven1/upstream/1.1~beta3/xdocs/images/h3.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/h5.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/logo_apache.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/logo_maven.jpg
   branches/maven1/upstream/1.1~beta3/xdocs/images/maven-blue.png
   branches/maven1/upstream/1.1~beta3/xdocs/images/maven-console.png
   branches/maven1/upstream/1.1~beta3/xdocs/images/maven-logo-2.gif
   branches/maven1/upstream/1.1~beta3/xdocs/images/maven-small.gif
   branches/maven1/upstream/1.1~beta3/xdocs/images/maventxt_logo_200.gif
   branches/maven1/upstream/1.1~beta3/xdocs/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/navigation.xml
   branches/maven1/upstream/1.1~beta3/xdocs/pdf-navigation.xml
   branches/maven1/upstream/1.1~beta3/xdocs/plugins/
   branches/maven1/upstream/1.1~beta3/xdocs/plugins/3rdparty.xml
   branches/maven1/upstream/1.1~beta3/xdocs/plugins/bundledHistory.xml
   branches/maven1/upstream/1.1~beta3/xdocs/plugins/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/project/
   branches/maven1/upstream/1.1~beta3/xdocs/project/components.xml
   branches/maven1/upstream/1.1~beta3/xdocs/project/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/project/initial-proposal.txt
   branches/maven1/upstream/1.1~beta3/xdocs/project/maven-resolution.txt
   branches/maven1/upstream/1.1~beta3/xdocs/project/related.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/
   branches/maven1/upstream/1.1~beta3/xdocs/reference/articles.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/backwards-compatibility.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/command-line.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/conventions.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/glossary.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/
   branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/idea.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/internal-repositories.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/links.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/project-descriptor.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/properties.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/repository-upload.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/scripting.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/sharing-plugins.xml
   branches/maven1/upstream/1.1~beta3/xdocs/reference/standard-sun-jar-names.xml
   branches/maven1/upstream/1.1~beta3/xdocs/roadmap.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/
   branches/maven1/upstream/1.1~beta3/xdocs/start/adapting.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/concepts.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/download.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/install.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/quick-start.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-2.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-3.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-LATEST.xml
   branches/maven1/upstream/1.1~beta3/xdocs/start/samples/
   branches/maven1/upstream/1.1~beta3/xdocs/start/samples/sample-echo.zip
   branches/maven1/upstream/1.1~beta3/xdocs/start/ten-minute-test.xml
   branches/maven1/upstream/1.1~beta3/xdocs/style/
   branches/maven1/upstream/1.1~beta3/xdocs/style/project.css
   branches/maven1/upstream/1.1~beta3/xdocs/using/
   branches/maven1/upstream/1.1~beta3/xdocs/using/bestpractices.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/customising.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/developing-plugins.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/index.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/jar.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/managing-dependencies.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/migrating.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/multiproject.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/releasing.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/repositories.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/resources.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/scm.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/site.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/tests.xml
   branches/maven1/upstream/1.1~beta3/xdocs/using/war.xml
Log:
Import upstream sources.


Added: branches/maven1/upstream/1.1~beta3/KEYS
===================================================================
--- branches/maven1/upstream/1.1~beta3/KEYS	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/KEYS	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,372 @@
+pub  1024D/C560DD8B 2005-09-19 Emmanuel Venisse <evenisse at apache.org>
+sub  2048g/CAD6BDC5 2005-09-19
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.1 (Cygwin)
+
+mQGiBEMueNERBADJ06GEXnWvehgWk4wmOCHkqFTPHswOMyjHW3cdEneLL667jl/n
+ouXkmR3yvW46Jto6X0qQutkiALCWy2Ozl3Kw9+hAKFiIsqex2Sk7i/5tSx0HQ7hL
+q7vQ2FvmwIWDNpZXqt2H9nJjCQ1yroMmu6FBUfutBNtQuMh8wKcSmVgTawCgnXth
+zqpPY+f4lQDZF64F7TJMOykEAJ27YghNE4hOu8CCgy9KV/+gluEhReT7ZMvXz4ha
+Iyx4i4+aH/x1fRdBWSO6lGk9rmAb7z6GEOMLyRbHGl6+PJgIIvJ7M00kuBu6TJtu
+HGhkgryXb4Tw4Jlo0bkd0VdZfew/3KNT9bYIVqqPW/FvfjH6+Z9xyd/x1d87Xflt
+gPA4A/4tfL+ErChs1ucy37PYNV9H8MknsDduvldspuEefMNEWRl3BjNIniopkTlw
+hG7V0nFNfA1Xk6OrLbcdQp4YnYPKvxoPLBpYuFIB+Fbf4139WUsGgClzeLaovIIm
+eDLfRjmSRACzxe2O5sm6xv1BIgHGtXxqSC+v02Yj2e2mrT5rfbQmRW1tYW51ZWwg
+VmVuaXNzZSA8ZXZlbmlzc2VAYXBhY2hlLm9yZz6IXgQTEQIAHgUCQy540QIbAwYL
+CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAKOTmkxWDdi5AoAJ9rF87z92snDugsB1Ur
+SJeAcNNlSgCdG7ZlyXenAiJaiT+ryaDDwadz6mK5Ag0EQy545hAIANyfgBCxhOmQ
+GbXCVmDmd8gHNqDdu7YqgJEmeFJ6SVSfzmgvZpR2FMsjTI2+yhHzSrLjF3mrHxVW
+vICZUsQFQUQnkj2nNQrZ468gpolNiZ3VnLDmwhCM1oF8eWUNJ3HtrEKq2nRnUHWm
+UKyMeSRFaXQKA6km2APMn/aXOC01Pi9LFQjIgnJNPo1WY2ykxyzoaRB4Gxzk7175
+yFIJLMoq6MymwYwc+tokUilWZO4TbW93zPPT3Q2LDWXFBjDE5yYEFc+Uj1hSFIQR
+K/EvdZ0CNhaPgeKe8NEwcEfZLU8aFAJc7RLaIgBS845OhdO1BOEUPcNDJCV4b4lv
+Q8dVREp0HXcAAwUIALQ92yiS/7uv0fMiL8sRBrwEy2xugEjMr+ieIbKMKo66i1+4
+PWd34jHEeW6nNU848kQrIMt+0u8LSk+Deff7nzOrHBT6TvfRcEsAZWzsk69hzRoY
+CD8lVGVcDQAem1v+xFAXeK5sYYG0R+9MeBiL1nHeX6MbTtmFH9MheYmn44CO5pph
+57rdEWnZTvTOgrJ5z9s9iZfpuhIyRKr8upUquhkaPrAlSU3HaAWmKhRogCZkEE/4
+MEvRYFIpwCLcpAn5Kowtlac5vrdG31zmDwZELyN5hv8tgDX1CLgup7Bkuz/BsWGH
+LFCz+PeUBEulC/lIVuZYkwdP4uJ4BOi76pvtwlaISQQYEQIACQUCQy545gIbDAAK
+CRAKOTmkxWDdi/IUAKCa67CLCwYoOkZtK6d1AGGd3pkKvACgjfdsFIC4jOwMbuLu
+i3qJ8WgS7ps=
+=SpiT
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub  1024D/BB617866 2005-05-24 Sarel Jason van Zyl <jason at maven.org>
+sub  1024g/5FBFF787 2005-05-24
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBEKToQARBACwQo1n5bxuC32J8I5tQkkTPdGenebpAAK8FvbRdwEDncT2sarY
+E/BTbUIGSJDp81nvHrG6hxQNESLMRqyfWVBGHrXdARvHTfhQSIqTPPq7qLJ9LNdk
+FfzbLoGDXs5eecfILXmaEIVTNcgm3ofsaBxLNjWTc5MXR3bgtGmYHvWvawCgk1xe
+NqRZJugYbCq/UA+IbMf+8cEEAKobX0GKDcNm76BFXgAk5AJhl71qGCq74WEMtfO1
+Fc8xRFhTDosmOgFeS/e5vhmdtO2OtBz/TMa7zV8HX28oXs+FQ+wSn+Z5BgYpMgUV
+OuU0+LywEa/CoRED7VJx0RSp1FA/ChoeBmn6jmzy97gGOl1ED09WXwq8lTep9kYH
+mdEdBACfq9o9m3VFlSQOZJlCbqSY5nfnMc935gRMtbXsBx5VmhPMuaY/rw7qBCzw
+bncV6luTeXU0SaMZFKivbo38Aj2UVxWu6hy9omy9JHsv9jzSCRYzZWJxzqjyHk18
+jsnEzLqk6hX2r+sYUZ0lUfVtrZXYMkiM6vg5sPoj+9v/YBtvKrQlU2FyZWwgSmFz
+b24gdmFuIFp5bCA8amFzb25AbWF2ZW4ub3JnPoheBBMRAgAeBQJCk6EAAhsDBgsJ
+CAcDAgMVAgMDFgIBAh4BAheAAAoJEMe/JtC7YXhmQBoAn3scsf+j7hXa2SCR9V5p
+ZHSc+A5SAKCOd9jUCIgKanSdYr9qBKSphfbcxLkBDQRCk6EBEAQAoX4fmYF+aXlA
+FyPVyR7JfxkatTFacH7iXwwgnCQizLxZb+ZQIYjZ9bfrr/sDsP896jLswqdDrVJH
+7yfZ3Ij4sSB0/yLIBIAnC+eO5Mz5ifCJWTB4+32khj8nFAV2i4uJ1ax7lZU4+5dF
+rWjOUWoTLyTLsbDxEPoHH0nKHF//sZsAAwUD/RX9OAjkBNSa96K4lGXK1WlCMmHg
+HutZK4zTm8xe8HA8HZ4xbTrDTswuhbX6nk/Cbo7MT7chLPMk56psUss6hDTpPmd9
+fkJ/oLquGtCv0Gfk+qHqi+VusZweoneTNa9IY5ORYREF0DBbBSR2Ub1r65psArxp
+5ZPbpI3APvUHSJPXiEkEGBECAAkFAkKToQECGwwACgkQx78m0LtheGbL3wCdEezs
+6rKVG/oUC92s7WUcfA3eDOcAoIHyvP3YzwFT29YP1ZdRbBw0FmXo
+=8R+l
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub  1024D/C9725F3B 2003-10-07 Dion Gillard <dion at multitask.com.au>
+sig 3       C9725F3B 2003-10-07   Dion Gillard <dion at multitask.com.au>
+sub  1024g/3C2839E8 2003-10-07
+sig         C9725F3B 2003-10-07   Dion Gillard <dion at multitask.com.au>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.2 (Cygwin)
+
+mQGiBD+CGPIRBACjo0oWZZXPBYSv6DeBXSFmDDrwAX/kIJ5/w0rObBjEwl+KAm+/
+ZP1sAzkhokAi0xy94JD7+1cj55a5bGk6yyxvAKTBnknogRY9RZqLnRcVZGFwfBIq
+FziLd8Qerj3ML0toxkN0PvvgZQyWTgLv3oQK2ojB3uBU9zQmNCWYwVzGjwCg6jGO
+str34zdV991OT3ubny0R9h8EAIwFOxVvgepaLImQsl436GIU6XFWLAfWULyZ8C7L
+zN9Rh5C7xQoBW39iIpn+QL9R6zABDWHGTT+o4OUoz2pgLfPHAcD6OlceQWzSNFqL
+L9Gc5DtSjVkJCMvqZ2fhmiOWMMRzmKHJzgHcVcXTO5EFnxCP/3bq1gv/CB+ns0t5
+ZgWQA/sEg2/2CAhBXx5eX2lSBmF8ZfISrj6twtrFOQBaOaFGh0YSgjX+zenlMBWP
+WAkOdVngJeMSN0OnrV6v0i6KezmGNCqF4Ect3rxpFS1mO3cavPaa/pdvCWcY/xqC
+6x9GawjXBrIYOJVTUh0ayeWITnLrjTvTrLODRIkqV68GwjOYP7QkRGlvbiBHaWxs
+YXJkIDxkaW9uQG11bHRpdGFzay5jb20uYXU+iFsEExECABsFAj+CGPIGCwkIBwMC
+AxUCAwMWAgECHgECF4AACgkQgM5+XclyXzvvKQCg3t9RBSpbHrDjT0RtXbNC5TGp
+JggAn3xHXbl1CPr+6mCi3Rw8JVB4wpLduQENBD+CGPUQBAD1GbNCPAfnw7U9qhYM
+laHoXWlWlHH7H5MRzjyUbZWBLZSTNiwXg1pc87FKl6MeVeUVhD4fFpo8cuL8wuFf
+dfZu2N+U3StRxNBwHBEvLsiTyyw3QBhcdk1rkOXFtl5Dq8emTz2PDxu82vYocz1E
+F2CsPwm5hGmbYLPJ3XEONrgdqwADBgP8CQULO314o215GKpiGEOlL4VwybRbtGM4
+z5cce5EeVL5AHtSUMU84a0swc3LxSaSR2NnuoeYTzwNiBPK0e8l8Kny3Id2Nui2W
+TG/xSIDyHvlo404C87Yt2/2r09kZ1BSZrU8bbh/uzRGGqajAjorMRiw8gfHjNLja
+J8yGQOg1VnaIRgQYEQIABgUCP4IY9QAKCRCAzn5dyXJfO2NkAKCFKHKJHvpGQpvG
+74j4uwB6KPjFhACgnPRu+lBL7YtZVzmpeI9kbZnNQz8=
+=3NgO
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub  1024D/084C9113 2004-05-20 Brett Porter <brett at apache.org>
+sig 3       084C9113 2004-05-20   Brett Porter <brett at apache.org>
+sub  1024g/58EEF239 2004-05-20
+sig         084C9113 2004-05-20   Brett Porter <brett at apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.4 (Cygwin)
+
+mQGiBECsr7MRBACBCVPGmXWGV0P9fLySv6BGECNS7uapbcKgFCsxBrhe8Czb+5iY
+0BOTH8lQriXCkKkG4rEKqt+wQH3mXTGL70stuT1//mgLd0kLQG8aYvoQmrW9jN81
+8dPGUDOYFNnu3/2+eqVX5IBSc5puMmRL+msB0IH3Gt2pdOOQ2HbwNKWWnwCgxvug
+icw0Vw2xSEI+++pm4ETI+b0D/0cuPIqCwgvcOW0FyZqyH8B5JQTRcKVG81mVUZtP
+tSg14uL+UYLW4HtwCC6rINv561hPnMydodrs8ChQdRCoyKZQankUwAf3ugwDjKIW
+FVIakRCMYEJt7jU/LDJXpzvquDjjSlgyi7BS/b1E9ZvDMQukNV/IVieaJ3vGIok+
+oArvA/9kjf7VB86/CTOIdO0465I9srhBLFcrViRsBn3+biZeoLni1EMhVFRyDz0Y
+uFVztwgTT9u21FHiSbmkwuLLR7SBJeUSDeZVwEOa+1oA06PaJz2qfHx9zBIrkpoF
+49rmKea43ynJYL9EMvD8k4M8ypFgYNNbkT/fq8+fdfex9zaP9LQfQnJldHQgUG9y
+dGVyIDxicmV0dEBhcGFjaGUub3JnPoheBBMRAgAeBQJArK+zAhsDBgsJCAcDAgMV
+AgMDFgIBAh4BAheAAAoJEDm+UaEITJETFMYAn001PM5JYf9ae1r/rqnGuD3a4Q5z
+AKCyzir2OSPMPUOo/PGg1xs+S3vMtbkBDQRArK+2EAQAlNhcASHnoDpGRdqvM9lP
+DNBIU6mo2md0ixC8xdoT1mRLNEFCuDDpdZ23v3LNBigaJVApryaYwDw9EreqV1Cn
+KSxUZ5GafLofbtVAtBPhKD1Lcw7Aohc9cg68MtKOvA0Msog77ogM5mmpgYGEzNUC
+SHYRLS6hy2sRksq8tbbEWMsAAwUEAIgLh2HQaH9D0gX0J8hE6X80JKUW0kdBz8px
+S8ky6f/ySEcimmhnVqz5Fd0xjD5zGXZJtVNd5g2djIt7f873nmNEBCaPrZS44OjL
+YMVwpfPnQEwG1rb3+OvErjxFsQ3FNRJGlcc/korz1LVKv7HQUKeoYoYaSnJYHF9y
+Em97W0CXiEkEGBECAAkFAkCsr7YCGwwACgkQOb5RoQhMkRMVfgCgj+kz0ILPwP/X
+Kz1AvTMYJzWthjAAoL2r8Jp8ZnwVUIXrrL9Wq8DkdVAd
+=W22p
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   1024D/F0E309FF 2006-04-20
+uid                  Vincent Massol <vmassol at apache.org>
+sub   2048g/03A9F007 2006-04-20
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.3 (MingW32)
+
+mQGiBERHwpoRBACrCcGp+AsBCZW5pDF/GjEc42adg4jHg6ovsO31TIrxe/StFng0
+usXgPeRSW5yUxaA8nLi5M84mYFyVpKbukD7sW1kKPNgBvLmmyXMvapex1ReeiLqR
+L320wcwPQrVAhgtx0ClR7wECwn55b+q8ZARhuBF7A13iEh+b0medx8MblwCgpfNK
+Sk//LkvHkJGKRO6sXB+PNEkD/0dXGifeK3PHnHqUPbpKU3rwOQ7+XcDktyg1QChS
+x3GBu4JtE5Bn6GkDclgFMoX9xdN60iYNUx6Cf+DSDh6Mv78lW0SoqKZ5gChfEuBs
+/aygIsTNioJ6/igEugjxy25yd7yTyNJBBWnvmbitBMjKO/vGjLghlB7YNVTGU7Ef
+CY8IA/0WL/EZhvQKU0PX3rnbbnS6T9Hw3NB7JHKf8vOdJefghwbx3IgcYPg0Vuwf
+OIJ4XyDIShCAmjV6u5eC7k16Pt4xNR1dCQm7jfYz+vcctd0eUGBPo2t3i3prWfHl
+fBa9j3/pwlZ6PJX6hv5qJdGhLLLQ23Fb7K58wIo7ofOuQqEyxLQjVmluY2VudCBN
+YXNzb2wgPHZtYXNzb2xAYXBhY2hlLm9yZz6IYAQTEQIAIAUCREfCmgIbAwYLCQgH
+AwIEFQIIAwQWAgMBAh4BAheAAAoJEKwtVurw4wn/bW8AoIx1THbuFMA6kyc3ev0/
+mvcDTnAOAJ9eWzunRh2Rd5cxpQ28WNPyg57RgbkCDQRER8K3EAgAlRvvU/c8Uj18
+896kKSTvjG+mSkH08KeqLUKSzpF3KKQeC8AwXo6AhkH0wmFqIIZ4O1YpMsagoZ2O
+bMFCjpjxGWD6jlYOwCJTZjgrDn00d1ulc0GmOIKFc/wBdoCEtAn1EhyVNzh8cbgR
+jLJPEV7xuOGsFyfoPBEMgKQPe94HcmxkRfC9GFRLS9VXiHVOXTuslTkNJI1edPoe
+wm++qPzSGyTZ4JAYO0wZFCtE2cCX1UR8TUazPqL6HLlELDAkwtLBWXPVsDpO7tcS
+SmxEiJ3Z1uhRsVXSZeEX8ISz9bTE3IFXTmHRZyIGd+l8Wps8eHTXGCRjnG1Q1C73
+s52zui4HmwADBQf/Q2cQ/NB+LAtY2/zEeiJad5XqzeZXGsUGVdfNNt7jxvn8xwf4
+6jO0AXXO+RkUHLOigLH/AuI+QUdZJqgmqulHuiqvGEUdnYR0D0mn0YkLMqMrkHVc
+c+XGLORnSNQlFknu8Wu18XCHOhobJl5j/Q/k51xdtC+s2yBKhQJrkkG6vr0CmGvN
+4xrkJlFjxZiItrRxrRlE7ZbVCeHJAiqzSO7fp7wVmtx9kZlAnYFu+3u8tN0K2lPe
+PWy2RQgK9ZFaYy5W1f0aUIQdvdU0lEO0G2h8l0uTuh0UBI9UT9fZnNjIWoPS/bOb
+MsTo5JHoQ/GSfNDYzFZ0elqQ6XaQqRP34ief1YhJBBgRAgAJBQJER8K3AhsMAAoJ
+EKwtVurw4wn/K6EAn1Z0RA8kAivjCAPxULBFj9W/KMXeAJ4uNwptFSE2C4DG2E3B
+iLH7HEhL1Q==
+=cyuY
+-----END PGP PUBLIC KEY BLOCK-----
+pub   1024D/9C0EFF85 2005-03-10 John D Casey <jdcasey at apache.org>
+sub   1024g/39298EC7 2005-03-10
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.1 (Darwin)
+
+mQGiBEIwq7cRBAD5TS9pI9r8ec32FmOLzkse8KYF0t41qaud28z6fgyqtkgeFg6/
+KjtS5pVAlxcCLbpjgVGVu1XIO3weWX+e4pvkkIa2M+I84y6rm5PMeDvptz9qTgKp
+3cid/u5wFoZPdLAx8ENXcv0inVacnp6Ovq7vl+mIZ4NHcRYIHO0ZW2zqSwCgsZLe
+sOXQBnKlZ35m5+MFnLy1EEcD/AgNAo9DDBKC2WsD/4Qo5QeefKAJw9GUsxEWUhaj
+2GLfa1mlyimF1vOBZGJJvlAjtxs42zFyh5zYVbKAuVYnBFvOrO+DuVq26XoojtdW
+8ZxklZ9R/22kWcc2V6O5GvIXvPVDSouXsEqxfUdnyg/TTU+a2RHOfMTrB4qf5n6o
+CRpUBACc0rEQ7JhRw3xbhU2V7N7JawuK+EOlUJwt6x+IW4VQuicaskQgS2oWvlZR
+Rk6T0UVk/JlFys9hMR8Nzp4BBjb7MSwBP8RXRrMDBmOF9I+Hw/T3VhA43ZCFFQjV
+gQD0M4yMeEjYEiC6Y1KWW+j0DJpdg/0PL/jPicUwZl1eIXo/37QxSm9obiBEIENh
+c2V5IChNYXZlbiBEZXYpIDxqZGNhc2V5QGNvbW1vbmphdmEub3JnPoheBBMRAgAe
+BQJCMKu3AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJECt4dgmcDv+FbXAAn1a7
+Wb95pAlphSUUBkA+Ya5pv24NAJ4hwKNZU96orJyTHvCMtONp+SaowIhGBBMRAgAG
+BQJCMLVjAAoJEDm+UaEITJETzeUAoJjRHyiYaC2Rfp80cgIm/mSrgd6DAKCHssVy
+4Er5gR4cLxDMRX1KeLFLH4hGBBMRAgAGBQJCMLWjAAoJEOBGzPdnMglFDOsAnRQo
+P1at91RIg8tZ1h7DPjAZXw50AJ49HaEfx97HoqNPF3AZKkk3N2Th27QhSm9obiBE
+IENhc2V5IDxqZGNhc2V5QGFwYWNoZS5vcmc+iF4EExECAB4FAkIwtZ8CGwMGCwkI
+BwMCAxUCAwMWAgECHgECF4AACgkQK3h2CZwO/4XsTgCeMLAFdtrADNLwLJu2LoYW
+2ZNZCYsAn3d3U/am86CbbP/9bYrNqocG3EC9tCNKb2huIEQgQ2FzZXkgPGpkY2Fz
+ZXlAY29kZWhhdXMub3JnPoheBBMRAgAeBQJCMLaXAhsDBgsJCAcDAgMVAgMDFgIB
+Ah4BAheAAAoJECt4dgmcDv+FzIAAoJYBsFCk5XDkAlkAc+Pa4CExYZRuAJ9pR7aM
+BprDjwvmGL3A8fHJQbuHv7QiSm9obiBEIENhc2V5IDxqZGNhc2V5QG1lcmdlcmUu
+Y29tPoheBBMRAgAeBQJCMLbmAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJECt4
+dgmcDv+FJskAn3H01O8SAy6CCT0e0+06Z5mFP2GSAJ0Z0daZMbt92Es7chft6n9h
+5iEJVLkBDQRCMKu5EAQAzxn8JaxGl8/K9hT6VmZPXXQ/noVXoPe+XN/BG2IRxFYC
++DNFAqqMrs9O8o2YS8F0tvM6mXaFQHdFkEmdb5m8xyFSAPXR3NGC01Ww6DjiW7rf
+oMNteztNYoS6eG7XKnjhoh4j6h7Kq7x8w/RLa9DAqUsqqcDl2XF6E/1XCHwrszcA
+AwUD/R8RKSBuySgzhKCnbpxLK0bQYcF9d7iyzU+9VzzoFzvJUJfz4PlAuZUehkL3
+tJSuAQJphNRved0SAWc54z+aqQgRA+POMBVtCwksxYqyWCmK2WxN7uHslnDyx24N
+ueowMp8Xb48VgrJcA7ZKoODi0YingUGyn08FgbTzR3L4g0L9iEkEGBECAAkFAkIw
+q7kCGwwACgkQK3h2CZwO/4VpyQCfUeYsJujSe9z2nN+qJBlV016NRkYAoKIHZidV
+MKcTkD16VjKbOxE2p1av
+=wt3q
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   1024D/5249885E 2006-01-11
+uid                  Lukas Theussl <ltheussl at apache.org>
+sig 3        5249885E 2006-01-11  Lukas Theussl <ltheussl at apache.org>
+sub   2048g/43DC8F48 2006-01-11
+sig          5249885E 2006-01-11  Lukas Theussl <ltheussl at apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.2 (FreeBSD)
+
+mQGiBEPFfH0RBADkuxROXwqAQUmZLl+K72ajTFDeh5dZ5Odkczu5sA5jfkeIGxsc
+BdJwYW6XnbIzowYiMbt79fxAs17AZC4bMuPMBu0Ai5aNAymvkI+/Jr6l6YOwRIEy
+cxrVawoAW3OQCoxDpF5/ZmQJOOOWBNK8OtChZXNC9lbD1Ybj+wQXvEdz6wCgnP6e
+0svIAFFNHVJao1TDBV+T7r0D/2jMPeP5PXlpjBG7GdwEEtrDtQLbFWfTniRZs2wz
+md8huNrM/9Q35D49/EnYUH2nevAvuSEyglGHQEGUfknI4/+SqtM5/z5jxSeueVm1
+oN7pohUpVH04sH41h4xBtjL59PW4/VgdQScUtrGOXhWznnaGmq+CLWs2u7ACIwob
+5EnNBADXU53Hq6PK8hRMgui6WnOcAiq2RVf8V+CElCrcT2yjNAPhu5qo5UEmVHln
+PiMpv3gHrpfJ2SzJ5Oh7qsElIh4cVHl9bsYK3AwRuIpBfWby8bjjCNUyMoVWzee6
+rFs+/hzBnNMdZuCJpy0jc074kqbfSFeMFJtLVZj9zJTlzYfGUbQjTHVrYXMgVGhl
+dXNzbCA8bHRoZXVzc2xAYXBhY2hlLm9yZz6IYAQTEQIAIAUCQ8V8fQIbAwYLCQgH
+AwIEFQIIAwQWAgMBAh4BAheAAAoJEMxso49SSYherY0An0WGuAUBvQ2qx8m/CY0l
+EwgzeywAAKCQbUuPwl/MV/ik1hK5CAuDmSv9a7kCDQRDxXyZEAgAltv6si0Uwv72
+FOrK5YgutZVhV0NDJgbXfkBaLs90dRdDzL+nhFJ9tr6xMg/NhK+TOdfcrg1WCOYp
+jA+QNIl9S5ZBwbTaISbbwNtEYPW3eIHx6dWLmQHmbmY+JNI3FroelFmOqH8f5B75
+Hx5QBBwmRpzMQvdrqxmassI4xFnWpH11K07xemu+4hUsTGt7Oi2VY8K0c0HRimfI
+1a3qsMOcRofOJeSTZzcHIs9DrhjnvNhj6207/Axh8sX4QoJGecB/6N442PDtC0ZS
+UA3ZOj9vL3OmV91EmHr5JGGUKZTwI0rIMQNTgbKIhWT6wB74dj+YOhKwphDPqmxn
+RRPFZANOnwAECwf9E7f52qKhBs2Jc1HvvFjkcM9S4rFrTtpjWM1qjoxDD5o15OT1
++rmO4nS73asdZtnWpqVBHOJtWrwgMzgfbp1QiOAMZj5ZaGMoCsAV1rQqWiA5tQsT
+NlYwwJy2QeZpqWB+BcBThm+BE40w050YU+KjbeTWqT65+B3LPjPVozdNcTMDOQg3
+UZwhyiWguUy3gAfG3obsWa5hydHoEJ9tApkmtt96PWYLWEercs6679WWEEQQir6y
+xUnY9oxaBnjVVHlb1dT52pdtm7NaCuRIrtlwkHIXlr9BUTQkeoCCq0pLSE3v5RY/
+wDSycaxXPycG8P68m/u3FUq5+AhXcfdnKdE/IohJBBgRAgAJBQJDxXyZAhsMAAoJ
+EMxso49SSYhe9LsAnRH2wZfW5YRWeYiFnX/E7Fh+RrV/AJ9OTxLlRX5ZmrMoPfUQ
+CDY680YW3w==
+=yLuJ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   1024D/93CC521B 2006-03-27
+uid                  Arnaud Heritier (aheritier) <aheritier at apache.org>
+sig 3        93CC521B 2006-03-27  Arnaud Heritier (aheritier) <aheritier at apache.org>
+sub   2048g/6DC661B6 2006-03-27
+sig          93CC521B 2006-03-27  Arnaud Heritier (aheritier) <aheritier at apache.org>
+
+pub   1024D/699A35EB 2006-07-17
+uid                  Arnaud Heritier (CODE SIGNING KEY) <aheritier at apache.org>
+sig 3        699A35EB 2006-07-17  Arnaud Heritier (CODE SIGNING KEY) <aheritier at apache.org>
+sub   2048g/B5B9AD88 2006-07-17
+sig          699A35EB 2006-07-17  Arnaud Heritier (CODE SIGNING KEY) <aheritier at apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.4 (FreeBSD)
+
+mQGhBEQoUYcRBACPaoGxKKJ5ocsQetXi8yeLPXrBjxD6Ut3SZ92xawA/2HYrn9mm
+LWYz7YkmU1FU11a6JdUs5y2mtuC/CH9UcPkaFyzOKklstLn1WBv1T3Ob/rvTIm95
+goEbPCwQ7lP9WZ4YmmNeUZ2qfr0ysOoJ7qatUoiK1ScaG3ocD7pxFbRSJwCgh0/z
+gCITYyiKTozeX40pKH2XI7kEAIl65xmp9/d9MUVqB/mWy8wnx8Ku7NEpG3fuMywI
+wVMTNG+a8FTW47jKrhJ2wHK0MdLwHy0WKl93WcdLGyp8KyasxR1k+/q118akRf3v
+B+eYVlA7lSIbuNNiIYNQIu/7rOi7CXFFa3BU7hBE+u2JRkLENJgYX9B9n9KSdFZx
+mNhEA/MGbXl7gt07HGh77TUze94N/niKaHL07K634uSOzeYIFMS3dOJX3NNtQwUK
+L2CJP1KEq4beDLGS3o5PLj+6KedcCTmjqH9RINoO26kZDkgkkrkg9S8ftMoPPNFi
+mOp7XV6XPdnVGBhPflnH5Z6+yigbXzaW9wHbtEcTgc9fdNcatDJBcm5hdWQgSGVy
+aXRpZXIgKGFoZXJpdGllcikgPGFoZXJpdGllckBhcGFjaGUub3JnPohgBBMRAgAg
+BQJEKFGHAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQKY5MepPMUhsN7ACe
+JF03ePnbtEWugAb3tolLjtnnw3MAn38EK1oksKYkfnwhmgaL619lZU02uQINBEQo
+UaEQCADBaL0c/4bUkpNxHpf0qkMZCakptDADi2VYk1+dHQL+QSPgtZxHZygX4QwG
+ufUyVCNOIvpSoTmw3Q7zQRy2Fc0bJYtI9Xif4aeXVxGey3QqceR+CBcqFEbG2q1i
+0izjAz3rH5Df6y6jopzFGhOg6EbrH5+oWyn4VEpRNF3JFp7Px58AM2VCzV28sIiz
+iWEoeM13mYtpyO5gVoj5XJJSWNltg+/0+WxXOtHGnMa2rGoBnoJC+iOZ0HpqwScP
+cFZPCXQ5aWgS5wIO1UUFwCWFxeF7kuAtrteaa8/Wr6pj4TI2EPPmu2eAaBrWWm/q
+JqmQWTk1UFbDn3glO7pWdHt2hMODAAMFCACOUiHd12uWUAhR/5c3JhK2l++G6yK2
+CKqtUD9FVd8sfR1WuJ+oWTaelzJvXqgG+2o7TOi8d7GY9d1DOBLKy7DQE+3zOBv4
+aZ6aUXeDSXdLPEZAnIK6tw2tIHttcMKQ1PMdN01cPf01G7yz8mn9sT3vWlpqSGW2
+wQelegX6k7JvCuOMGBzJb3IZ42p+YEjbgTGkpIFBW7M1JDmrR2trapGXvyrmeyQh
+uwseb8rMy1NBINgMkONhBW0e8DK+iV8EAjmbf7mhzL9W1QbsNg6Ed1eehGXOdbUS
+7sO7G3W4Zbq5liKfeU8OOdw8tdnTB7RkNuXMZrFbtJFycNkJgoFOS1lUiEkEGBEC
+AAkFAkQoUaECGwwACgkQKY5MepPMUhtqYgCfZU1Rf272COB5FMRpBZ7eDWmwO88A
+nAwl4AU4XZ+IzP68Ldihh2asAIl0mQGiBES8D44RBACaoHjJiJvS9HyTUQT99AJz
+mz4qOF+YdyOsrF7iiKjQwb6cidmjZvdUFzpC4qXTd5SHNIM075T76UFtcObgIXY7
+C4YQPyWDVkByOe3fztNtXi7YcoK5PyVxTQIYkk7AQZuglZk9eyGgxO45h8BHxkX4
+XYH1xHDePK6fYscIwCbPXwCgkh9bQ/UT3BH+iP+IUl6kmo/DF5sD/jn1pgAkU/VB
+IBk9WTWVjforc3ZJGrmPVSkS2nuOIyVDmc6r6GpoxmozhSCP4QaGqdFUM2/skSTE
+VBatHArYvzgqVFDBpuCP2FSIK1+IyLjEfsAT90xb+dM08rc6sJaS3eHfkzIfDdmj
+UyhKBPHdNWM3oovY7Ku5yWHV8kG3rndiA/0TFz+ArQ75FK76WP4UhWAeHrnRQmJz
+LZTavOeLcC1MoHxgi+xEKajtHJmG5QjERSttrScq5DVhHnBLVqetGvoB8a7F0RE0
+AMYC263yWbLKWlC9UjV1c77X27Cp+BYSWMAwEZRDGjIbKGpwpDZgfSgFay5Pd/wA
+6O1Eoy8tVdx4RrQ5QXJuYXVkIEhlcml0aWVyIChDT0RFIFNJR05JTkcgS0VZKSA8
+YWhlcml0aWVyQGFwYWNoZS5vcmc+iGAEExECACAFAkS8D44CGwMGCwkIBwMCBBUC
+CAMEFgIDAQIeAQIXgAAKCRA7W50JaZo165yVAJ9YhLrqxr2em3N+Ibv6ablWh9yo
+rQCfUmcHOj4cU4nbuB/M9DRoxtWNARC5Ag0ERLwPoxAIAOjqyMo+pYXOfafb+YWg
+HWBgr98kYgvlynbVOOKVyjO61ehA0417y97ZDWbcd/nTA2s4cef5c9J0WStMy6gS
+HOs1Hf4bjHLA6CbmNtwtMF7AeKk1+KYUw/4DRd7hChv2yUNvTcHgEgK8M9pQ0F6L
+0RA7yUKqastDXQwDAffsrbF2PuMU+ed8fC7sHlW/HWOdKNXiBg383pAXToq+7gAr
+g8liin/GsjKLcOf3tBrj0vdNEEcrfzg20ZG6uiuva1GPu4k8p8lbxdc5h2fMvUz9
+SqYz9e6GAilKV/n3y26s2ez8uuweRUOipX5oO+KMCJyniDVSgHUwfiKMoEk0NRIn
+9A8ABREIAOh6Hzo2fEOXAEt1Ku4jjMoRxrTXEPbCG+b01LHmj+D/5fbRly8fHyji
+fLiOdjKTFuiEALMJZp9MFCMf1RfgqlAIop+MqNwhVpQgciZ/SfH+CpSm+ReYM7Q5
+/gQ50jm89LyzUaEowqFHIz74sYclsECEfFiQk/uL9T//HIieD4eXVMRO1sLa2G6d
+ov4HjHCbKLuI73kZYwoHkfXDqnSal6AhnqmuIXiHY2P0GwaVSOPYGfrbxIIa0idV
+VGv3V9c7rigXxuV0Eic/qbzM7jWPbHudj3QFURL8sfank7VlNfJeSpfHA7kFQlKr
+BKT54qfSVECN7kMYvkLA9nsL1ny1v96ISQQYEQIACQUCRLwPowIbDAAKCRA7W50J
+aZo1625YAJ9IDsHcRQhU9flpq9OEd47agyjjVQCfVW3B7PgJsqhjF5TSwSBtE6fX
+SOA=
+=XlE0
+-----END PGP PUBLIC KEY BLOCK-----
+pub   1024D/27CD9F92 2006-04-11
+uid                  Fabrizio Giustina <fgiust at apache.org>
+sig 3        27CD9F92 2006-04-11  Fabrizio Giustina <fgiust at apache.org>
+sub   2048g/52DCFC6D 2006-04-11
+sig          27CD9F92 2006-04-11  Fabrizio Giustina <fgiust at apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.2.2 (FreeBSD)
+
+mQGiBEQ8CfQRBACHTbEebUEIzFXS0+wZ/EA9C81/dB/qFB2eIkFKvHDAcV0Bjuv7
+zDKxcpoHvQJNUignDmjOb8qxnBVu8HHhMmC192gwkRcXpCLhBSJRevXd/sdWgjaK
+kmmbfBpLClzsCDGIilZ1wmlOSL2vwfm/Sm0wLiAwodcwRaKl1UrSOMkjvwCg9Y16
+rdbiFB8SYbMr1t9zW0yLomcD/R7IByVi+jYN0pMGV6NvUe8UkjGQfA+sN8aAxcDJ
+wHNEmQffto7ONgFsb/kqPwzE1QuKqKsfppLxR1uUWsWTvVzqFTd5ekf2CpHneH4t
+KJx02w5MbC4OS1jSst4k/3VG2W3G/ohfvmG3JdvqyHYhHn0pmnf6TlW2UVoNrz4q
+UvsVA/9Bu/yvkNXix+TFGdzFW71m7AEjM6TlBVdAIqeTZzGaH+Z9FgB+fCQeOltx
+ewQZ2eyKIe25i3+yQXbndk5yf3s1iAjR0+OPI1XU4JzAgBYNDf5OJeC9Fu5GFtWx
+SIHUUKb4o54oAKvoN6neMiBm+ak6wxNkU8sQ7x+J1TqDrrGuurQlRmFicml6aW8g
+R2l1c3RpbmEgPGZnaXVzdEBhcGFjaGUub3JnPohgBBMRAgAgBQJEPAn0AhsDBgsJ
+CAcDAgQVAggDBBYCAwECHgECF4AACgkQNAKnSifNn5LhwACfctyWfQeilRrLpxNq
+6BjzEYKDfg0An2DKoywRm4b7DU4dTZcpXUIyPBRouQINBEQ8CfoQCACTmAMgSS80
+vYpFdf9o0iouN84pzWrwpd3GB2F0eca6M11Cm7VHehBGQBq5Urom8zFfkkIPft4x
+n1xT50F1l4KNC+5pt6vQJe/VlkPaOmYvIzEQnEitfSB3F65wJImWB51OhzbXqraq
+RGfwiSKaxuXPnAdena/qGrd5AzKNsEa0FQnDyZabUuEqcQiVMgGHVaHZGWdhfxO4
+dSPg3deaDTSRxn3eiZEbfxNJynY0if772ISBdXTLu5FYkWzwX0eYgdj/yZOK/mrJ
+ZTx5waZPzNu1WwL/dNOa8XKyVU25XgCR/Sta+JOvUuB/fh25yp9rExs4NyXj7N+M
+rGQafQ7OdijfAAMFB/9PdDPK4bwrbIsO1H2HHeq1MFZN3WUKCU/j9vn/BcKQO8tf
+Mp01Gt4hKfGZWcK5eL05gBp61OGWgd86g/Pc35i4A3Tds0GYKNV/bIOhwNDvNdtR
+R5c/bVsOceV9Y46qeqWcImf2gGGRf6nJSJnoLxlMwKF6rZjpkf+qwq0nX3pXb6mF
+me8uma/EZ9nB8xrzbRd1Syxwi2vvTc2wYrsywngitISnoSFSYLBjK8T8eTbBBoU9
+rwR3txtzBqPrPXBdE09b7Q2CezuxCLnVfai2d8N/F/lapHCZ9d4fblzDmZvsVqru
+lcnPI0cPQpZn/vAmejo2qLXUjP7CkP7KT9dNHb5uiEkEGBECAAkFAkQ8CfoCGwwA
+CgkQNAKnSifNn5Lf1ACfeR+03+Yd258fXbUm+euuckUbcYUAn33HikU1BkLOmvrm
+5YqQRvX2kAh7
+=3jDN
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   1024D/F0E309FF 2006-04-20
+uid                  Vincent Massol <vmassol at apache.org>
+sub   2048g/03A9F007 2006-04-20
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.3 (MingW32)
+
+mQGiBERHwpoRBACrCcGp+AsBCZW5pDF/GjEc42adg4jHg6ovsO31TIrxe/StFng0
+usXgPeRSW5yUxaA8nLi5M84mYFyVpKbukD7sW1kKPNgBvLmmyXMvapex1ReeiLqR
+L320wcwPQrVAhgtx0ClR7wECwn55b+q8ZARhuBF7A13iEh+b0medx8MblwCgpfNK
+Sk//LkvHkJGKRO6sXB+PNEkD/0dXGifeK3PHnHqUPbpKU3rwOQ7+XcDktyg1QChS
+x3GBu4JtE5Bn6GkDclgFMoX9xdN60iYNUx6Cf+DSDh6Mv78lW0SoqKZ5gChfEuBs
+/aygIsTNioJ6/igEugjxy25yd7yTyNJBBWnvmbitBMjKO/vGjLghlB7YNVTGU7Ef
+CY8IA/0WL/EZhvQKU0PX3rnbbnS6T9Hw3NB7JHKf8vOdJefghwbx3IgcYPg0Vuwf
+OIJ4XyDIShCAmjV6u5eC7k16Pt4xNR1dCQm7jfYz+vcctd0eUGBPo2t3i3prWfHl
+fBa9j3/pwlZ6PJX6hv5qJdGhLLLQ23Fb7K58wIo7ofOuQqEyxLQjVmluY2VudCBN
+YXNzb2wgPHZtYXNzb2xAYXBhY2hlLm9yZz6IYAQTEQIAIAUCREfCmgIbAwYLCQgH
+AwIEFQIIAwQWAgMBAh4BAheAAAoJEKwtVurw4wn/bW8AoIx1THbuFMA6kyc3ev0/
+mvcDTnAOAJ9eWzunRh2Rd5cxpQ28WNPyg57RgbkCDQRER8K3EAgAlRvvU/c8Uj18
+896kKSTvjG+mSkH08KeqLUKSzpF3KKQeC8AwXo6AhkH0wmFqIIZ4O1YpMsagoZ2O
+bMFCjpjxGWD6jlYOwCJTZjgrDn00d1ulc0GmOIKFc/wBdoCEtAn1EhyVNzh8cbgR
+jLJPEV7xuOGsFyfoPBEMgKQPe94HcmxkRfC9GFRLS9VXiHVOXTuslTkNJI1edPoe
+wm++qPzSGyTZ4JAYO0wZFCtE2cCX1UR8TUazPqL6HLlELDAkwtLBWXPVsDpO7tcS
+SmxEiJ3Z1uhRsVXSZeEX8ISz9bTE3IFXTmHRZyIGd+l8Wps8eHTXGCRjnG1Q1C73
+s52zui4HmwADBQf/Q2cQ/NB+LAtY2/zEeiJad5XqzeZXGsUGVdfNNt7jxvn8xwf4
+6jO0AXXO+RkUHLOigLH/AuI+QUdZJqgmqulHuiqvGEUdnYR0D0mn0YkLMqMrkHVc
+c+XGLORnSNQlFknu8Wu18XCHOhobJl5j/Q/k51xdtC+s2yBKhQJrkkG6vr0CmGvN
+4xrkJlFjxZiItrRxrRlE7ZbVCeHJAiqzSO7fp7wVmtx9kZlAnYFu+3u8tN0K2lPe
+PWy2RQgK9ZFaYy5W1f0aUIQdvdU0lEO0G2h8l0uTuh0UBI9UT9fZnNjIWoPS/bOb
+MsTo5JHoQ/GSfNDYzFZ0elqQ6XaQqRP34ief1YhJBBgRAgAJBQJER8K3AhsMAAoJ
+EKwtVurw4wn/K6EAn1Z0RA8kAivjCAPxULBFj9W/KMXeAJ4uNwptFSE2C4DG2E3B
+iLH7HEhL1Q==
+=cyuY
+-----END PGP PUBLIC KEY BLOCK-----
+

Added: branches/maven1/upstream/1.1~beta3/LICENSE.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/LICENSE.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/LICENSE.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

Added: branches/maven1/upstream/1.1~beta3/NOTICE.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/NOTICE.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/NOTICE.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,2 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).

Added: branches/maven1/upstream/1.1~beta3/README.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/README.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/README.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,2 @@
+For build instructions, please see xdocs/developers/building-from-source.xml.
+A similar document can be found at http://maven.apache.org/developers/building-from-source.html.


Property changes on: branches/maven1/upstream/1.1~beta3/README.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/bootstrap.sh
===================================================================
--- branches/maven1/upstream/1.1~beta3/bootstrap.sh	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/bootstrap.sh	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+cygwin=false;
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+esac
+
+if $cygwin; then
+  export MAVEN_HOME=`cygpath -pw $MAVEN_HOME`
+  export MAVEN_HOME_LOCAL=`cygpath -pw $MAVEN_HOME_LOCAL`
+fi
+
+ant -f build-bootstrap.xml $@ >bootstrap.txt 2>&1 &
+
+sleep 1
+
+ps -f | grep $$ | grep -v grep | while read t0 t1 t2
+do
+  if [ $t1 != $$ ]; then
+    tail -f --pid=$t1 bootstrap.txt
+    exit
+  fi
+done
+


Property changes on: branches/maven1/upstream/1.1~beta3/bootstrap.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/build-bootstrap.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/build-bootstrap.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/build-bootstrap.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,471 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<project name="Maven" default="bootstrap" basedir=".">
+
+  <property file="${user.home}/build.properties"/>
+  <property file="${basedir}/build.properties"/>
+  <property file="${basedir}/project.properties"/>
+  <property environment="env"/>
+  <property name="maven.home" value="${env.MAVEN_HOME}"/>
+
+  <!-- ===================================================================== -->
+  <!-- B O O T S T R A P                                                     -->
+  <!-- ===================================================================== -->
+  <target 
+    name="bootstrap" 
+    depends="install-maven,test-plugins"
+        description="Builds maven without needing maven previously installed."/>
+
+  <target 
+    name="install-maven" 
+    depends="clean-maven-home,build-maven-with-itself">
+    <copy
+      file="${basedir}/target/maven.jar"
+      todir="${maven.bootstrap.install.dir}/lib"
+      overwrite="yes"
+    />
+    <copy tofile="${maven.bootstrap.install.dir}/maven-project-3.xsd" overwrite="yes" file="${basedir}/src/xsd/maven-v3_0_0.xsd"/>
+    <copy todir="${maven.home}">
+      <fileset dir="${maven.bootstrap.install.dir}"/>
+    </copy>
+    <chmod file="${maven.home}/bin/maven" perm="+x"/>
+  </target>
+
+  <target 
+    name="build-maven-with-itself" 
+    depends="env,maven-phase-1,install-plugins">
+    <echo>
+|
+| BUILDING MAVEN WITH ITSELF...
+|
+    </echo>
+    <exec executable="${maven.command}" failonerror="true">
+      <arg value="-Dmaven.home.local=${maven.home.local}"/>
+      <arg value="-Dmaven.repo.local=${maven.repo.local}"/>
+      <arg value="-Dmaven.download.meter=bootstrap"/>
+      <arg value="${maven.bootstrap.online}"/>
+      <arg value="clean"/>
+      <arg value="jar:jar"/>
+      <arg value="maven:run-touchstone"/>
+      <!-- Allows failonerror to work -->
+      <env key="MAVEN_TERMINATE_CMD" value="on" />
+    </exec>
+  </target>  
+  
+  <!-- ===================================================================== -->
+  <!-- T E S T  P L U G I N S  W I T H  M A V E N                      -->
+  <!-- ===================================================================== -->
+
+  <target 
+    name="test-plugins" 
+    if="test-plugins" 
+    depends="install-plugins">
+    <echo>
+|
+| TESTING THE PLUGINS...
+|
+    </echo>
+    <exec
+      executable="${maven.command}"
+      dir="${maven.plugins.directory}"
+      failonerror="true">
+      <arg value="-Dmaven.home.local=${maven.home.local}"/>
+      <arg value="-Dmaven.repo.local=${maven.repo.local}"/>
+      <arg value="-Dmaven.download.meter=bootstrap"/>
+      <arg value="-p"/>
+      <arg value="${maven.plugins.directory}/project.xml"/>
+      <arg value="-e"/>
+      <arg value="${maven.bootstrap.online}"/>
+      <arg value="plugins:test-all"/>
+      <env key="MAVEN_TERMINATE_CMD" value="on" />
+    </exec>
+  </target>
+
+  <!-- ===================================================================== -->
+  <!-- I N S T A L L  P L U G I N S  W I T H  M A V E N                      -->
+  <!-- ===================================================================== -->
+
+  <target 
+    name="install-plugins" 
+    depends="maven-phase-1"
+    description="Install all plugins">
+    <echo>
+|
+| INSTALLING THE PLUGINS...
+|
+    </echo>
+    <exec
+      executable="${maven.command}"
+      dir="${maven.plugins.directory}"
+      failonerror="true">
+      <arg value="-Dmaven.home.local=${maven.home.local}"/>
+      <arg value="-Dmaven.repo.local=${maven.repo.local}"/>
+      <arg value="-Dmaven.download.meter=bootstrap"/>
+      <arg value="-Dbootstrapping=true"/>
+      <arg value="-p"/>
+      <arg value="${maven.plugins.directory}/project.xml"/>
+      <arg value="-e"/>
+      <arg value="${maven.bootstrap.online}"/>
+      <arg value="plugins:install-all"/>
+      <!-- Allows failonerror to work -->
+      <env key="MAVEN_TERMINATE_CMD" value="on" />
+    </exec>
+    <delete includeEmptyDirs="true">
+      <fileset dir="${maven.home}/plugins" includes="${maven.bootstrap.plugins}" />
+    </delete>
+    <delete dir="${maven.bootstrap.install.dir}/plugins" />
+    <copy todir="${maven.bootstrap.install.dir}/plugins">
+      <fileset dir="${maven.home}/plugins" />
+    </copy>
+    <!-- install locally touchstone plugins -->
+    <exec
+      executable="${maven.command}"
+      dir="${maven.plugins.directory}/touchstone"
+      failonerror="true">
+      <arg value="-Dmaven.home.local=${maven.home.local}"/>
+      <arg value="-Dmaven.repo.local=${maven.repo.local}"/>
+      <arg value="-Dmaven.download.meter=bootstrap"/>
+      <arg value="-Dbootstrapping=true"/>
+      <arg value="-p"/>
+      <arg value="${maven.plugins.directory}/touchstone/project.xml"/>
+      <arg value="-e"/>
+      <arg value="${maven.bootstrap.online}"/>
+      <arg value="plugin:repository-install"/>
+      <env key="MAVEN_TERMINATE_CMD" value="on" />
+    </exec>
+    <exec
+      executable="${maven.command}"
+      dir="${maven.plugins.directory}/touchstone-partner"
+      failonerror="true">
+      <arg value="-Dmaven.home.local=${maven.home.local}"/>
+      <arg value="-Dmaven.repo.local=${maven.repo.local}"/>
+      <arg value="-Dmaven.download.meter=bootstrap"/>
+      <arg value="-Dbootstrapping=true"/>
+      <arg value="-p"/>
+      <arg value="${maven.plugins.directory}/touchstone-partner/project.xml"/>
+      <arg value="-e"/>
+      <arg value="${maven.bootstrap.online}"/>
+      <arg value="plugin:repository-install"/>
+      <env key="MAVEN_TERMINATE_CMD" value="on" />
+    </exec>
+  </target>
+
+  <!-- ===================================================================== -->
+  <!-- M A V E N  P H A S E  1                                               -->
+  <!-- ===================================================================== -->
+  <target 
+    name="maven-phase-1" 
+    depends="clean-maven-home"
+    description="Build a minimal maven distribution with ant">
+    
+    <delete dir="${maven.bootstrap.dir}"/>
+    <mkdir dir="${maven.bootstrap.classes}"/>
+    <javac
+      destdir="${maven.bootstrap.classes}"
+      debug="on"
+      deprecation="off"
+      optimize="off">
+      <src path="src"/>
+      <include name="bootstrap/**"/>
+    </javac>
+<echo>
+|
+| LOADING BOOTSTRAP TASKDEF...
+|
+</echo>
+    <taskdef
+      name="bootstrap"
+      classname="org.apache.maven.BootstrapTask">
+      <classpath>
+        <path location="${maven.bootstrap.classes}"/>
+      </classpath>
+    </taskdef>
+
+<echo>
+|
+| RUNNING BOOTSTRAP TASK...
+|
+</echo>
+    <!-- The proxy values will be used if the values are actually set -->
+    <delete dir="${maven.bootstrap.bin.dir}"/>
+    <mkdir dir="${maven.bootstrap.bin.dir}"/>
+    <bootstrap
+      projectDescriptor="project.xml"
+      baseUrl="${maven.repo.remote}"
+      mavenRepoLocal="${maven.repo.local}"
+      online="${maven.bootstrap.online}"
+      proxyHost="${maven.proxy.host}"
+      proxyUserName="${maven.proxy.username}"
+      proxyPassword="${maven.proxy.password}"
+      proxyPort="${maven.proxy.port}"
+      copyScriptDir="${maven.bootstrap.bin.dir}"
+    />
+
+<echo>
+|
+| COMPILING MAVEN SOURCES USING ANT...
+|
+</echo>
+    <delete dir="${maven.bootstrap.phase1.classes}"/>
+    <mkdir dir="${maven.bootstrap.phase1.classes}"/>
+    <javac
+      destdir="${maven.bootstrap.phase1.classes}"
+      debug="on"
+      deprecation="off"
+      optimize="off">
+      <classpath refid="bootstrap-classpath"/>
+      <src>
+        <path location="src/java"/>
+      </src>
+    </javac>
+
+    <copy todir="${maven.bootstrap.phase1.classes}">
+      <fileset dir="src/conf">
+        <include name="*.properties"/>
+        <include name="*.jelly"/>
+      </fileset>
+    </copy>
+    <copy todir="${maven.bootstrap.phase1.classes}/org/apache/maven/messages">
+      <fileset dir="src/messages"/>
+    </copy>
+
+<echo>
+|
+| CREATING MAVEN JAR WITH ANT...
+|
+</echo>
+    <jar jarfile="${maven.bootstrap.dir}/maven.jar">
+      <fileset dir="${maven.bootstrap.phase1.classes}">
+        <include name="**/*.class"/>
+        <include name="**/*.properties"/>
+        <include name="**/*.jelly"/>
+        <include name="**/messages.*"/>
+        <exclude name="**/package.html"/>
+      </fileset>
+    </jar>
+
+<echo>
+|
+| CREATING PHASE 1 INSTALL...
+|
+</echo>
+    <!-- Create the install directory -->
+    <delete dir="${maven.bootstrap.install.dir}"/>
+    <mkdir dir="${maven.bootstrap.install.dir}"/>
+    <mkdir dir="${maven.bootstrap.install.dir}/bin"/>
+    <mkdir dir="${maven.bootstrap.install.dir}/lib"/>
+    <mkdir dir="${maven.bootstrap.install.dir}/plugins"/>
+
+    <!-- Copy Maven's scripts into the install bin directory -->
+    <copy todir="${maven.bootstrap.install.dir}/bin">
+      <fileset dir="src/bin"/>
+      <fileset dir="${maven.bootstrap.bin.dir}"/>
+    </copy>
+
+    <!-- Copy Maven's dependencies into install lib directory -->
+    <copy
+      todir="${maven.bootstrap.install.dir}/lib"
+      flatten="yes">
+      <fileset dir="${maven.repo.local}">
+        <patternset refid="bootstrap-patternset"/>
+      </fileset>
+    </copy>
+
+    <!-- Install maven in the lib directory -->
+    <copy
+      file="${maven.bootstrap.dir}/maven.jar"
+      todir="${maven.bootstrap.install.dir}/lib"
+      overwrite="true"
+    />
+    
+    <!-- make the endorsed dir -->
+    <mkdir dir="${maven.bootstrap.install.dir}/lib/endorsed" />
+    <move todir="${maven.bootstrap.install.dir}/lib/endorsed">
+      <fileset dir="${maven.bootstrap.install.dir}/lib">
+        <include name="xml-apis-*.jar" />
+        <include name="xml-resolver-*.jar" />
+        <include name="xercesImpl-*.jar" />
+      </fileset>
+    </move>
+
+    <!-- Don't duplicate endorsed files -->
+    <delete>
+      <fileset dir="${maven.bootstrap.install.dir}/lib">
+        <include name="xml-apis-*.jar" />
+        <include name="xml-resolver-*.jar" />
+        <include name="xercesImpl-*.jar" />
+      </fileset>
+    </delete>
+    
+    <copy todir="${maven.bootstrap.install.dir}/plugins">
+      <fileset dir="${maven.plugins.directory}" includes="${maven.bootstrap.plugins},project.xml" excludes="**/maven.xml,**/target/**" />
+    </copy>
+
+    <copy todir="${maven.home}">
+      <fileset dir="${maven.bootstrap.install.dir}" />
+    </copy>
+
+    <!-- Now we have a functional maven install -->
+    <chmod file="${maven.home}/bin/maven" perm="+x"/>
+
+    <condition property="maven.script" value="maven.bat">
+      <and>
+        <os family="windows" />
+        <equals arg1="${maven.script}" arg2="$${maven.script}" />
+      </and>
+    </condition>
+    <condition property="maven.script" value="maven">
+        <equals arg1="${maven.script}" arg2="$${maven.script}" />
+    </condition>
+
+    <property name="maven.command" value="${maven.home}/bin/${maven.script}"/>
+  </target>
+  
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!-- Cleanup maven home                                                    -->
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <target 
+    name="clean-maven-home" 
+    depends="env">
+    <delete dir="${maven.home}/bin"/>
+    <mkdir dir="${maven.home}/bin"/>
+    <delete dir="${maven.home}/lib"/>
+    <mkdir dir="${maven.home}/lib"/>
+    <delete dir="${maven.home}/plugins"/>
+    <mkdir dir="${maven.home}/plugins"/>
+    <!-- cleanup the local plugins dir -->
+    <delete dir="${maven.home.local}/cache"/>
+  </target>
+
+  <!-- ===================================================================== -->
+  <!-- E N V I R O N M E N T  C H E C K S                                    -->
+  <!-- ===================================================================== -->
+  <target 
+    name="env" 
+    depends="check-properties,check-env" 
+    description="Check environment settings">
+   <echo>maven.home = ${maven.home}</echo>
+   <echo>maven.home.local = ${maven.home.local}</echo>
+   <echo>maven.repo.local = ${maven.repo.local}</echo>
+<echo>
++----------------------------------------------------------
+| WARNING WARNING WARNING WARNING WARNING WARNING WARNING
+|
+|  Maven bootstrap now creates a repository in
+|  $${user.home}/.maven/repository
+|  if you do not have the maven.repo.local property set
+|  before bootstrapping.
+|
+|  Maven bootstrap also expands plugins to
+|  $${user.home}/.maven/cache
+|  if you do not have the MAVEN_HOME_LOCAL environment
+|  variable or
+|  maven.home.local property set before bootstrapping.
+|
+|  This feature is to accomodate the new ability of Maven
+|  to work from a read only install to MAVEN_HOME.
+|
+| WARNING WARNING WARNING WARNING WARNING WARNING WARNING
++----------------------------------------------------------
+</echo>
+  </target>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!-- Environment variables check                                           -->
+  <!-- Check if environment variables are set                                -->
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <target 
+    name="check-env">
+    <echo>maven.home = ${maven.home}</echo>
+    <fail unless="env.MAVEN_HOME" message="You MUST set MAVEN_HOME first"/>
+  </target>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!-- Properties check :                                                    -->
+  <!-- In order to bootstrap Maven you must have the following               -->
+  <!-- properties defined in order for the bootstrap to work                 -->
+  <!-- correctly:                                                            -->
+  <!-- ${maven.home}: Maven installation directory                           -->
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <target
+    name="check-properties"
+    depends="check-maven-home,check-maven-home-local,check-maven-repo-local">
+
+      <!-- are we online? -->
+      <condition property="online">
+        <equals arg1="${maven.bootstrap.online}" arg2="" />
+      </condition>
+
+      <!-- are we online via a proxy -->
+      <condition property="proxied-online">
+        <and>
+          <not><equals arg1="${maven.proxy.host}" arg2="$${maven.proxy.host}"/></not>
+          <equals arg1="${maven.bootstrap.online}" arg2="" />
+        </and>
+      </condition>
+
+      <!-- do we want to test plugins? -->
+      <condition property="test-plugins">
+        <equals arg1="${maven.bootstrap.test.plugins}" arg2="true" />
+      </condition>
+  </target>
+
+  <target
+    name="check-maven-repo-local"
+    unless="maven.repo.local">
+    <!-- we default the local repo to write in the local home -->
+    <!-- if we don't then -->
+    <property name="maven.repo.local" location="${maven.home.local}/repository"/>
+  </target>
+
+  <target
+    name="check-maven-home"
+    unless="maven.home">
+    <fail>
+      +------------------------------------------------------------------
+      | ERROR!
+      |
+      | You must set ${maven.home} in your ${user.home}/build.properties
+      | or ${project.home}/project.properties
+      |
+      | Please refer to the bootstrap document:
+      | http://maven.apache.org/start/bootstrap.html
+      +------------------------------------------------------------------
+    </fail>
+  </target>
+
+  <!-- doesn't mimic actual maven cause the properties files are loaded before -->
+  <target 
+    name="check-maven-home-local" 
+    if="env.MAVEN_HOME_LOCAL" 
+    depends="check-maven-home-local-default">
+    <property name="maven.home.local" location="${env.MAVEN_HOME_LOCAL}"/>
+  </target>
+  
+  <target 
+    name="check-maven-home-local-default" 
+    unless="env.MAVEN_HOME_LOCAL">
+    <!-- last resort , if already set no worries -->
+    <property name="maven.home.local" location="${user.home}/.maven"/>
+  </target>
+</project>

Added: branches/maven1/upstream/1.1~beta3/checkstyle-license.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/checkstyle-license.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/checkstyle-license.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,18 @@
+
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */

Added: branches/maven1/upstream/1.1~beta3/checkstyle.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/checkstyle.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/checkstyle.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,174 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
+
+<!--
+  Checkstyle checks configured for Maven.
+-->
+
+<module name="Checker">
+
+    <!-- Locale to use to generate messages -->
+    <property name="localeCountry" value="${checkstyle.localeCountry}"/>
+
+    <!-- Checks that a package.html file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
+    <module name="PackageHtml"/>
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <module name="NewlineAtEndOfFile"/>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+
+    <module name="TreeWalker">
+
+        <property name="cacheFile" value="${checkstyle.cache.file}"/>
+
+        <!-- ************************************************************** -->
+        <!-- Checks that are different from the sun coding conventions ones -->
+        <!-- ************************************************************** -->
+        <module name="Header">
+            <property name="headerFile" value="${maven.checkstyle.header.file}"/>
+            <property name="ignoreLines" value="1,2,3,4,5,6"/>
+        </module>
+        <property name="tabWidth" value="4"/>
+        <module name="LeftCurly">
+          <property name="option" value="nl"/>
+        </module>
+        <module name="RightCurly">
+          <property name="option" value="alone"/>
+        </module>
+        <module name="LineLength">
+          <property name="max" value="132"/>
+        </module>
+        <module name="MethodLength">
+          <property name="max" value="175"/>
+        </module>
+        <!-- No Paren pad check
+        <module name="ParenPad"/>
+        -->
+        <module name="ConstantName">
+          <property name="format" value="log|^[a-zA-Z][a-zA-Z0-9_]*$"/>
+        </module>
+        
+        <!-- ************************************************************** -->
+        <!-- Default Sun coding conventions checks                          -->
+        <!-- ************************************************************** -->
+
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <module name="JavadocMethod"/>
+        <module name="JavadocType"/>
+        <module name="JavadocVariable"/>
+
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="LocalFinalVariableName"/>
+        <module name="LocalVariableName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+        <module name="MemberName"/>
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport"/>
+        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+        <module name="RedundantImport"/>
+        <module name="UnusedImports"/>
+
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <module name="FileLength"/>
+        <module name="ParameterNumber"/>
+
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <module name="EmptyForIteratorPad"/>
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+        <module name="OperatorWrap"/>
+        <module name="TabCharacter"/>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround"/>
+
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+        <module name="RedundantModifier"/>
+
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="AvoidNestedBlocks"/>
+        <module name="EmptyBlock"/>
+        
+        <module name="NeedBraces"/>
+
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <module name="AvoidInlineConditionals"/>
+        <module name="DoubleCheckedLocking"/>    <!-- MY FAVOURITE -->
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+        <module name="HiddenField"/>
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+        <module name="MagicNumber"/>
+        <module name="MissingSwitchDefault"/>
+        <!--<module name="RedundantThrows"/>-->
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!--<module name="DesignForExtension"/>-->
+        <module name="FinalClass"/>
+        <module name="HideUtilityClassConstructor"/>
+        <module name="InterfaceIsType"/>
+        <module name="VisibilityModifier"/>
+
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <module name="ArrayTypeStyle"/>
+        <!-- <module name="FinalParameters"/> -->
+        <module name="GenericIllegalRegexp">
+            <property name="format" value="\s+$"/>
+            <property name="message" value="Line has trailing spaces."/>
+        </module>
+        <module name="TodoComment"/>
+        <module name="UpperEll"/>
+
+    </module>
+
+</module>

Added: branches/maven1/upstream/1.1~beta3/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,336 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:u="jelly:util" xmlns:x="jelly:xml" xmlns:ant="jelly:ant" xmlns:maven="jelly:maven">
+
+  <preGoal name="java:jar-resources">
+    <ant:filter token="pom.currentVersion" value="${pom.currentVersion}"/>
+  </preGoal>
+
+  <postGoal name="site">
+    <ant:copy todir="${maven.docs.dest}">
+      <ant:fileset dir="${basedir}/src/xsd"/>
+    </ant:copy>
+  </postGoal>
+
+  <goal name="maven:run-touchstone" description="Runs touchstone tests.">
+    <!-- 
+    Force to set this property to an empty value.
+    This property cannot be evaluated in touchstone build because
+    pom.siteDirectory isn't defined in all poms 
+    -->
+    <j:set var="maven.site.stage.directory" value="" scope="parent"/>
+    <maven:maven descriptor="${basedir}/src/test/touchstone-build/project.xml" goals="clean,jar:jar,touchstone-tests" ignoreFailures="false"/>
+  </goal>
+
+  <goal name="maven:jar-install" description="Compile Maven and put a new jar in ${maven.home}/lib.">
+    <attainGoal name="jar:jar"/>
+    <copy file="${maven.build.dir}/${maven.final.name}.jar" tofile="${maven.home}/lib/${maven.final.name}.jar" overwrite="yes"/>
+    <copy file="${maven.build.dir}/${maven.final.name}.jar" tofile="${maven.repo.local}/maven/jars/${maven.final.name}.jar" overwrite="yes"/>
+  </goal>
+
+  <goal name="maven:scripts-install" description="Put scripts in ${maven.home}/bin.">
+    <ant:copy todir="${maven.home}/bin" overwrite="yes">
+      <ant:fileset dir="${basedir}/src/bin"/>
+    </ant:copy>
+  </goal>
+
+  <goal name="maven:build-install" prereqs="clean,jar:jar" description="Generates a maven installation.">
+    <j:set var="tag" value="${pom.artifactId}-${pom.currentVersion}"/>
+    <j:set var="installerDir" value="${maven.build.dir}/installer/${tag}"/>
+    <ant:delete dir="${installerDir}"/>
+    <ant:mkdir dir="${installerDir}"/>
+    <ant:mkdir dir="${installerDir}/bin"/>
+    <ant:mkdir dir="${installerDir}/lib"/>
+    <ant:mkdir dir="${installerDir}/plugins"/>
+    <ant:copy tofile="${installerDir}/maven-project-3.xsd" overwrite="yes" file="${basedir}/src/xsd/maven-v3_0_0.xsd"/>
+    <ant:copy todir="${installerDir}/bin">
+      <ant:fileset dir="${basedir}/src/bin"/>
+    </ant:copy>
+    <j:forEach var="lib" items="${pom.artifacts}">
+      <j:set var="dep" value="${lib.dependency}"/>
+      <j:if test="${dep.type=='jar'}">
+        <j:choose>
+          <j:when test="${dep.getProperty('endorsed')}">
+            <ant:copy todir="${installerDir}/lib/endorsed" file="${lib.path}" />
+          </j:when>
+          <j:otherwise>
+            <ant:copy todir="${installerDir}/lib" file="${lib.path}" />
+          </j:otherwise>
+        </j:choose>
+      </j:if>
+    </j:forEach>
+    <ant:copy todir="${installerDir}/lib" file="${maven.build.dir}/${maven.final.name}.jar"/>
+    <ant:copy todir="${installerDir}">
+      <ant:fileset dir=".">
+        <ant:include name="NOTICE.txt"/>
+        <ant:include name="LICENSE.txt"/>
+      </ant:fileset>
+    </ant:copy>
+    <attainGoal name="maven:generate-install-scripts"/>
+    <ant:copy todir="${installerDir}/bin" file="${maven.build.dir}/install_repo.bat"/>
+    <ant:copy todir="${installerDir}/bin" file="${maven.build.dir}/install_repo.sh"/>
+    <ant:fixcrlf srcdir="${installerDir}" eol="crlf" includes="**/*.bat"/>
+    <ant:fixcrlf srcdir="${installerDir}" eol="lf" includes="**/*.sh,**/maven"/>
+    <x:parse var="plugins" xml="${maven.plugins.profile}"/>
+    <x:forEach var="plugin" select="$plugins/plugins/plugin">
+      <j:set var="groupId">
+        <x:expr select="@groupId"/>
+      </j:set>
+      <j:set var="artifactId">
+        <x:expr select="@artifactId"/>
+      </j:set>
+      <j:set var="version">
+        <x:expr select="@version"/>
+      </j:set>
+      <ant:echo>Downloading ${groupId}:${artifactId} version ${version}</ant:echo>
+      <attainGoal name="plugin:download-artifact"/>
+      <ant:copy file="${maven.repo.local}/${groupId}/plugins/${artifactId}-${version}.jar" todir="${installerDir}/plugins"/>
+    </x:forEach>
+    <ant:echo>Running touchstone against the new Maven install...</ant:echo>
+    <j:choose>
+      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
+        <j:set var="maven.bin.script" value="${installerDir}/bin/maven.bat"/>
+      </j:when>
+      <j:otherwise>
+        <j:set var="maven.bin.script" value="${installerDir}/bin/maven"/>
+        <ant:exec executable="chmod">
+          <ant:arg value="ug+x"/>
+          <ant:arg value="${installerDir}/bin/maven"/>
+        </ant:exec>
+      </j:otherwise>
+    </j:choose>
+    <ant:exec executable="${maven.bin.script}" failonerror="true">
+      <ant:arg value="-Dmaven.home=${installerDir}"/>
+      <ant:arg value="-Dmaven.home.local=${maven.build.dir}/home-local"/>
+      <ant:arg value="-Dmaven.repo.local=${maven.repo.local}"/>
+      <ant:arg value="maven:run-touchstone"/>
+      <ant:arg value="-e"/>
+      <ant:env key="MAVEN_HOME" value="${installerDir}"/>
+    </ant:exec>
+    <!-- Temporarily disabled - we cannot release this at Apache due to GPL libraries included
+    <attainGoal name="maven:build-seed-repo" />
+-->
+  </goal>
+
+  <goal name="maven:build-plugin-profile" description="Generates the last versions list of plugins.">
+    <maven:reactor basedir="${maven.plugins.directory}" includes="${maven.plugins.includes}" excludes="${maven.plugins.excludes}" postProcessing="true" banner="Gathering" ignoreFailures="false"/>
+    <ant:copy tofile="${maven.plugins.profile}.bak" file="${maven.plugins.profile}"/>
+    <j:file name="${maven.plugins.profile}" omitXmlDeclaration="false" outputMode="xml" prettyPrint="true">
+      <plugins>
+        <j:forEach var="reactorProject" items="${reactorProjects}">
+          <j:set var="version" value="${reactorProject.versions[size(reactorProject.versions)-1]}"/>
+          <j:if test="${version.tag == 'HEAD'}">
+            <j:set var="version" value="${reactorProject.versions[size(reactorProject.versions)-2]}"/>
+          </j:if>
+          <j:if test="${version == null}">
+            <ant:echo>WARNING: no version for ${reactorProject.id}</ant:echo>
+          </j:if>
+          <j:if test="${version != null}">
+            <plugin artifactId="${reactorProject.artifactId}" groupId="maven" version="${version}"/>
+          </j:if>
+        </j:forEach>
+      </plugins>
+    </j:file>
+    <ant:echo>Be careful to also update the document : ${maven.docs.src}/plugins/bundledHistory.xml</ant:echo>
+  </goal>
+
+  <!--
+  <goal name="maven:install">
+    <i:ask 
+      question="Enter the installation directory (contents will be deleted): "
+      answer="newMavenHome"
+    />
+    <j:if test="${empty(newMavenHome)}">
+      <ant:fail>You must specify an installation directory</ant:fail>
+    </j:if>
+    
+    <attainGoal name="maven:build-install" />
+
+    <ant:delete dir="${newMavenHome}" />
+    <ant:copy todir="${newMavenHome}">
+      <ant:fileset dir="${installerDir}" />
+    </ant:copy>
+  </goal>
+-->
+
+  <goal name="maven:installer" prereqs="maven:build-install" description="Generate maven distributions (zip, tar, exe, ...)">
+    <j:set var="tag" value="${pom.artifactId}-${pom.currentVersion}"/>
+    <j:set var="installerDir" value="${maven.build.dir}/installer/${tag}"/>
+    <ant:tar longfile="gnu" tarfile="${maven.build.dir}/installer/${tag}.tar">
+      <ant:tarfileset dir="${maven.build.dir}/installer">
+        <ant:include name="${tag}/**"/>
+        <ant:exclude name="**/maven"/>
+        <ant:exclude name="**/install_repo.sh"/>
+      </ant:tarfileset>
+      <ant:tarfileset dir="${maven.build.dir}/installer" mode="755">
+        <ant:include name="**/maven"/>
+        <ant:include name="**/install_repo.sh"/>
+      </ant:tarfileset>
+    </ant:tar>
+    <ant:bzip2 zipfile="${maven.build.dir}/installer/${tag}.tar.bz2" src="${maven.build.dir}/installer/${tag}.tar"/>
+    <ant:gzip zipfile="${maven.build.dir}/installer/${tag}.tar.gz" src="${maven.build.dir}/installer/${tag}.tar"/>
+    <ant:delete file="${maven.build.dir}/installer/${tag}.tar"/>
+    <ant:zip zipfile="${maven.build.dir}/installer/${tag}.zip">
+      <ant:zipfileset dir="${maven.build.dir}/installer" includes="${tag}/**"/>
+    </ant:zip>
+    <!--
+    <u:tokenize var="pluginList" delim=",">${maven.lite.plugins}</u:tokenize>
+
+    <j:set var="installerDirLite" value="${installerDir}-lite" />
+    <ant:copy todir="${installerDirLite}">
+      <ant:fileset dir="${installerDir}">
+        <ant:exclude name="plugins/**" />
+      </ant:fileset>
+      <ant:fileset dir="${installerDir}">
+        <j:forEach var="pluginName" items="${pluginList}">
+          <ant:include name="plugins/maven-${pluginName}-plugin-*.jar"/>
+        </j:forEach>
+        <ant:include name="plugins/project.xml" />
+      </ant:fileset>
+    </ant:copy>
+
+    <ant:tar longfile="gnu" tarfile="${maven.build.dir}/installer/${tag}-lite.tar">
+      <ant:tarfileset dir="${installerDirLite}">
+        <ant:exclude name="**/maven"/>
+        <ant:exclude name="**/install_repo.sh"/>
+      </ant:tarfileset>
+      <ant:tarfileset dir="${installerDirLite}" mode="755">
+        <ant:include name="**/maven"/>
+        <ant:include name="**/install_repo.sh"/>
+      </ant:tarfileset>
+    </ant:tar>
+
+    <ant:bzip2
+      zipfile="${maven.build.dir}/installer/${tag}-lite.tar.bz2"
+      src="${maven.build.dir}/installer/${tag}-lite.tar"
+      />
+
+    <ant:gzip
+      zipfile="${maven.build.dir}/installer/${tag}-lite.tar.gz"
+      src="${maven.build.dir}/installer/${tag}-lite.tar"
+      />
+
+    <ant:delete file="${maven.build.dir}/installer/${tag}-lite.tar"/>
+
+    <ant:zip zipfile="${maven.build.dir}/installer/${tag}-lite.zip">
+      <ant:zipfileset dir="${installerDirLite}" />
+    </ant:zip>
+-->
+    <j:choose>
+      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
+        <j:set var="maven.nsis.build.dir" value="${installerDir}"/>
+        <attainGoal name="nsis"/>
+        <ant:copy tofile="${maven.build.dir}/installer/${pom.artifactId}-${pom.currentVersion}.exe" file="${maven.build.dir}/${maven.nsis.final.name}.exe"/>
+        <!--
+        <j:set var="maven.dist.bin.assembly.dir" value="${installerDirLite}" />
+        <attainGoal name="nsis" />
+        <ant:copy tofile="${maven.build.dir}/installer/${pom.artifactId}-${pom.currentVersion}-lite.exe" file="${maven.build.dir}/${pom.artifactId}.exe" />
+-->
+      </j:when>
+      <j:otherwise>
+        <ant:echo>WARNING: nsis installer not generated. Run again on windows if needed.</ant:echo>
+      </j:otherwise>
+    </j:choose>
+  </goal>
+
+  <goal name="maven:generate-install-scripts" description="Generates install_repo scripts.">
+    <j:file name="${maven.build.dir}/install_repo.sh" omitXmlDeclaration="true">
+      <j:whitespace>#!/bin/sh
+REPO_DIR=$1
+if [ -z "$REPO_DIR" ]; then echo "usage: $0 [repository directory]"; exit; fi
+if [ -z "$MAVEN_HOME" ]; then echo "MAVEN_HOME must be set"; exit; fi
+</j:whitespace>
+      <j:forEach var="lib" items="${pom.artifacts}">
+        <j:set var="dep" value="${lib.dependency}"/>
+        <j:set var="libdir" value="lib"/>
+        <j:if test="${dep.getProperty('endorsed')=='true'}">
+          <j:set var="libdir" value="lib/endorsed" />
+        </j:if>
+        <j:if test="${dep.type=='jar'}">
+          <j:whitespace>if [ ! -f $$REPO_DIR/${dep.groupId}/jars/${dep.artifactId}-${dep.version}.jar ]; then 
+  mkdir -p $$REPO_DIR/${dep.groupId}/jars
+  cp $$MAVEN_HOME/${libdir}/${dep.artifactId}-${dep.version}.jar $$REPO_DIR/${dep.groupId}/jars
+fi
+</j:whitespace>
+        </j:if>
+      </j:forEach>
+    </j:file>
+    <j:file name="${maven.build.dir}/install_repo.bat" omitXmlDeclaration="true">
+      <j:whitespace>@ECHO OFF
+if %1a==a goto usage
+if "%MAVEN_HOME%"=="" goto MHusage
+set REPO_DIR=%1
+:start
+shift
+if %1a==a goto parsed
+set REPO_DIR=%REPO_DIR% %1
+goto start
+:parsed
+echo copying to repository %REPO_DIR%
+REM this warns but works on WinNT+, should work on Win9x too
+if not exist "%REPO_DIR%\nul" mkdir "%REPO_DIR%"
+</j:whitespace>
+      <j:forEach var="lib" items="${pom.artifacts}">
+        <j:set var="dep" value="${lib.dependency}"/>
+        <j:set var="libdir" value="lib"/>
+        <j:if test="${dep.getProperty('endorsed')=='true'}">
+          <j:set var="libdir" value="lib\endorsed" />
+        </j:if>
+        <j:if test="${dep.type=='jar'}">
+          <j:whitespace>if not exist "%REPO_DIR%\${dep.groupId}\nul" mkdir "%REPO_DIR%\${dep.groupId}"
+if not exist "%REPO_DIR%\${dep.groupId}\jars\nul" mkdir "%REPO_DIR%\${dep.groupId}\jars"
+if not exist "%REPO_DIR%\${dep.groupId}\jars\${dep.artifactId}-${dep.version}.jar" copy "%MAVEN_HOME%\${libdir}\${dep.artifactId}-${dep.version}.jar" "%REPO_DIR%\${dep.groupId}\jars"
+</j:whitespace>
+        </j:if>
+      </j:forEach>
+      <j:whitespace>goto end
+:MHusage
+echo MAVEN_HOME must be set
+:usage
+echo usage: %0 [repository directory]
+:end
+</j:whitespace>
+    </j:file>
+  </goal>
+
+  <goal name="maven:build-seed-repo">
+    <j:set var="prevRepoLocal" value="${maven.repo.local}"/>
+    <j:set var="prevRepoRemote" value="${maven.repo.remote}"/>
+    <j:set var="repoLocal" value="${basedir}/target/seed-repo"/>
+    <j:set var="repoRemote" value="file:${prevRepoLocal},${prevRepoRemote}"/>
+    ${systemScope.setProperty('maven.repo.local',repoLocal)}
+    ${systemScope.setProperty('maven.repo.remote',repoRemote)}
+    <ant:delete dir="${repoLocal}"/>
+    <maven:maven descriptor="src/test/touchstone-build/src/reactor-build/default/project.xml" goals="java:compile,site"/>
+    <ant:mkdir dir="${maven.build.dir}/installer"/>
+    <ant:tar tarfile="${maven.build.dir}/installer/seed-repo-maven-${pom.currentVersion}.tar.gz" compression="gzip" longfile="gnu">
+      <ant:tarfileset dir="${repoLocal}">
+        <j:forEach var="lib" items="${pom.artifacts}">
+          <j:set var="dep" value="${lib.dependency}"/>
+          <j:if test="${dep.type=='jar'}">
+            <ant:exclude name="${dep.groupId}/jars/${dep.artifactId}-${dep.version}.jar"/>
+            <ant:exclude name="${dep.groupId}/jars/${dep.artifactId}-${dep.version}.jar.md5"/>
+          </j:if>
+        </j:forEach>
+      </ant:tarfileset>
+    </ant:tar>
+    ${systemScope.setProperty('maven.repo.local','${prevRepoLocal}')}
+    ${systemScope.setProperty('maven.repo.remote','${prevRepoRemote}')}
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/plugin-profile.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/plugin-profile.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/plugin-profile.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<plugins>
+  <plugin groupId="maven" artifactId="maven-announcement-plugin" version="1.4"></plugin>
+  <plugin groupId="maven" artifactId="maven-ant-plugin" version="1.10"></plugin>
+  <plugin groupId="maven" artifactId="maven-antlr-plugin" version="1.2.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-artifact-plugin" version="1.8"></plugin>
+  <plugin groupId="maven" artifactId="maven-aspectj-plugin" version="4.0"></plugin>
+  <plugin groupId="maven" artifactId="maven-changelog-plugin" version="1.9.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-changes-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-checkstyle-plugin" version="3.0.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-clean-plugin" version="1.4"></plugin>
+  <plugin groupId="maven" artifactId="maven-clover-plugin" version="1.11"></plugin>
+  <plugin groupId="maven" artifactId="maven-console-plugin" version="1.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-cruisecontrol-plugin" version="1.8"></plugin>
+  <plugin groupId="maven" artifactId="maven-dashboard-plugin" version="1.9"></plugin>
+  <plugin groupId="maven" artifactId="maven-developer-activity-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-dist-plugin" version="1.7"></plugin>
+  <plugin groupId="maven" artifactId="maven-ear-plugin" version="1.9"></plugin>
+  <plugin groupId="maven" artifactId="maven-eclipse-plugin" version="1.11"></plugin>
+  <plugin groupId="maven" artifactId="maven-ejb-plugin" version="1.7.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-faq-plugin" version="1.6.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-file-activity-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-genapp-plugin" version="2.3"></plugin>
+  <plugin groupId="maven" artifactId="maven-gump-plugin" version="2.0.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-html2xdoc-plugin" version="1.4"></plugin>
+  <plugin groupId="maven" artifactId="maven-idea-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-jalopy-plugin" version="1.5"></plugin>
+  <plugin groupId="maven" artifactId="maven-jar-plugin" version="1.8"></plugin>
+  <plugin groupId="maven" artifactId="maven-java-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-javacc-plugin" version="1.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-javadoc-plugin" version="1.8"></plugin>
+  <plugin groupId="maven" artifactId="maven-jdepend-plugin" version="1.6.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-jdiff-plugin" version="1.5"></plugin>
+  <plugin groupId="maven" artifactId="maven-jellydoc-plugin" version="1.3.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-jira-plugin" version="1.3"></plugin>
+  <plugin groupId="maven" artifactId="maven-junit-report-plugin" version="1.5.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-jxr-plugin" version="1.5"></plugin>
+  <plugin groupId="maven" artifactId="maven-license-plugin" version="1.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-linkcheck-plugin" version="1.4"></plugin>
+  <plugin groupId="maven" artifactId="maven-multichanges-plugin" version="1.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-multiproject-plugin" version="1.5"></plugin>
+  <plugin groupId="maven" artifactId="maven-native-plugin" version="1.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-nsis-plugin" version="2.0"></plugin>
+  <plugin groupId="maven" artifactId="maven-pdf-plugin" version="2.5"></plugin>
+  <plugin groupId="maven" artifactId="maven-plugin-plugin" version="1.7"></plugin>
+  <plugin groupId="maven" artifactId="maven-pmd-plugin" version="1.9"></plugin>
+  <plugin groupId="maven" artifactId="maven-pom-plugin" version="1.5"></plugin>
+  <plugin groupId="maven" artifactId="maven-rar-plugin" version="1.1"></plugin>
+  <plugin groupId="maven" artifactId="maven-scm-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-simian-plugin" version="1.6"></plugin>
+  <plugin groupId="maven" artifactId="maven-site-plugin" version="1.7"></plugin>
+  <plugin groupId="maven" artifactId="maven-source-plugin" version="1.0"></plugin>
+  <plugin groupId="maven" artifactId="maven-tasklist-plugin" version="2.4"></plugin>
+  <plugin groupId="maven" artifactId="maven-test-plugin" version="1.8"></plugin>
+  <plugin groupId="maven" artifactId="maven-war-plugin" version="1.6.2"></plugin>
+  <plugin groupId="maven" artifactId="maven-xdoc-plugin" version="1.10"></plugin>
+</plugins>
\ No newline at end of file


Property changes on: branches/maven1/upstream/1.1~beta3/plugin-profile.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/plugins-site.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/plugins-site.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/plugins-site.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,88 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:maven="jelly:maven" xmlns:j="jelly:core" xmlns:ant="jelly:ant">
+
+  <!-- ================================================================== -->
+  <!-- G E N E R A T E  P L U G I N  D O C U M E N T A T I O N            -->
+  <!-- ================================================================== -->
+
+  <goal name="maven:plugin-docs"
+    description="Build each Maven plugin's documentation">
+
+    <maven:reactor
+      basedir="${maven.plugins.directory}"
+      includes="${maven.plugins.includes}"
+      excludes="${maven.plugins.excludes}"
+      goals="xdoc"
+      banner="Generating Docs For"
+      ignoreFailures="false"
+      />
+
+  </goal>
+
+  <!--
+    These two goals are the start of the merge of plugin docs and
+    the main maven documentation. pre-xdoc-transform will be changed
+    from a 'goal' to a 'preGoal' on 'xdoc:transform'.
+    'postSite' will be changed to a 'postGoal' on 'site'.
+
+    Plugin docs will generated and then copied into
+    target/docs/plugins/${plugin}/
+
+    A simple home page listing the plugins and linking to their
+    docs will be generated in pre xdoc:transform, and processed into
+    target/docs/plugins/index.html
+  -->
+
+  <preGoal name="xdoc:transform">
+    <attainGoal name="multiproject:create-overview-page"/>
+  </preGoal>
+
+  <preGoal name="xdoc">
+    <j:if test="${pluginSite != null}">
+
+      <maven:reactor
+        basedir="${maven.plugins.directory}"
+        includes="${maven.plugins.includes}"
+        excludes="${maven.plugins.excludes}"
+        goals="site"
+        banner="Generating site for"
+        ignoreFailures="false"
+        />
+
+      <!-- create the parent directory for the docs -->
+      <mkdir dir="${maven.docs.dest}/plugins"/>
+
+      <!-- copy them all to ${maven.docs.dest}/plugins/${plugin.id}/ -->
+      <ant:fileScanner var="pluginProjects">
+        <fileset dir="${maven.plugins.directory}">
+          <include name="*/project.xml"/>
+        </fileset>
+      </ant:fileScanner>
+      <j:forEach items="${pluginProjects.iterator()}" var="plugin">
+        <j:set var="pluginName" value="${plugin.parentFile.name}"/>
+        <mkdir dir="${maven.docs.dest}/plugins/${pluginName}/"/>
+        <copy toDir="${maven.docs.dest}/plugins/${pluginName}/">
+          <fileset dir="${maven.plugins.directory}/${pluginName}/target/docs/">
+            <include name="**"/>
+          </fileset>
+        </copy>
+      </j:forEach>
+    </j:if>
+  </preGoal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,226 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2006 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+#=====
+# Repositories settings
+#=====
+
+# TODO: remove http://people.apache.org/repo/m1-snapshot-repository/, just there for SNAPSHOTs
+maven.repo.remote = http://www.ibiblio.org/maven,http://people.apache.org/repo/m1-snapshot-repository/
+
+# Repository to deploy to
+maven.repo.list=apache.snapshots
+
+maven.repo.apache.releases=scp://${pom.distributionSite}
+maven.repo.apache.releases.directory=${pom.distributionDirectory}
+maven.repo.apache.releases.group=maven
+# These must be set elsewhere
+#maven.repo.apache.releases.username=
+#maven.repo.apache.releases.privatekey=
+#maven.repo.apache.releases.passphrase=
+
+# Repository to deploy snapshots
+maven.repo.apache.snapshots=scp://people.apache.org
+maven.repo.apache.snapshots.directory=/www/people.apache.org/repo/m1-snapshot-repository
+maven.repo.apache.snapshots.username=${maven.repo.apache.releases.username}
+maven.repo.apache.snapshots.privatekey=${maven.repo.apache.releases.privatekey}
+maven.repo.apache.snapshots.passphrase=${maven.repo.apache.releases.passphrase}
+maven.repo.apache.snapshots.group=${maven.repo.apache.releases.group}
+
+#=====
+# Compilation options
+#=====
+# We are targetting the 1.3 JVM and above
+maven.compile.target=1.4
+maven.compile.source=1.4
+maven.compile.encoding=UTF-8
+
+#=====
+# Changelog plugin properties
+#=====
+maven.changelog.svn.baseurl=http://svn.apache.org/viewcvs.cgi
+maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory
+
+#=====
+# Checkstyle plugin settings
+#=====
+maven.checkstyle.properties = ${basedir}/checkstyle.xml
+maven.checkstyle.header.file = ${basedir}/checkstyle-license.txt
+
+#=====
+# Html2xdoc plugin settings
+#=====
+maven.html2xdoc.enable=true
+
+#=====
+# Javadoc plugin settings
+#=====
+maven.javadoc.links = http://jakarta.apache.org/commons/jelly/apidocs/, \
+                    http://jakarta.apache.org/commons/betwixt/apidocs/, \
+                    http://jakarta.apache.org/commons/jelly/libs/define/apidocs/, \
+                    http://jakarta.apache.org/commons/jelly/libs/ant/apidocs/
+maven.javadoc.package=true
+maven.javadoc.customtags=todo
+todo.name=todo
+todo.description=To Do:
+todo.enabled=true
+todo.scope=all
+
+#=====
+# Jar plugin settings
+#=====
+maven.jar.manifest = manifest.mf
+
+#=====
+# Jdiff plugin settings
+#=====
+maven.jdiff.old.tag=MAVEN_1_0_2
+maven.jdiff.new.tag=CURRENT
+
+#=====
+# Jellydoc plugin settings
+#=====
+maven.jellydoc.packages = ${pom.package}.jelly.tags.*
+
+#=====
+# LinkCheck plugin settings
+#=====
+maven.linkcheck.exclude=${pom.repository.url},${maven.changelog.svn.baseurl},http://www.mavenbook.org/,http://www.clarkware.com/software/JDepend.html,http://werkz.codehaus.org,http://werkz.werken.com/
+
+#=====
+# NSIS plugin settings
+#=====
+maven.nsis.src=${basedir}/src/installer/nsis
+maven.nsis.logo=${maven.nsis.src}/maven.bmp
+maven.nsis.logo.position=left
+maven.nsis.logo.widthHeight=70
+
+#=====
+# PDF plugin settings
+#=====
+# Use the gif image for the organization's logo
+maven.pdf.companyLogo=http://www.apache.org/images/asf_logo_wide.gif
+maven.pdf.projectLogo=images/maventxt_logo_200.gif
+maven.pdf.navigationFile=pdf-navigation.xml
+maven.pdf.imageDpi=150
+
+#=====
+# PMD / CPD plugin settings
+#=====
+maven.pmd.cpd.enable = true
+
+#=====
+# SCM plugin settings
+#=====
+maven.scm.svn.tag.base=https://svn.apache.org/repos/asf/maven/maven-1/core/tags
+
+#=====
+# Simian plugin settings
+#=====
+maven.simian.linecount = 4
+maven.simian.includetests = false
+
+#=====
+# Site plugin settings
+#=====
+maven.site.stage.address=people.apache.org
+maven.site.stage.directory=/home/${maven.username}/public_html/m1-stage-site/${pom.siteDirectory.substring(22)}
+maven.site.deploy.method=rsync
+
+#=====
+# Test/JUnit plugin settings
+#=====
+# jdk / xml compatibility issues
+maven.junit.fork = true
+maven.junit.forkmode = once
+maven.junit.sysproperties=maven.home
+
+#=====
+# XDOC plugin settings
+#=====
+# Display the date on the Maven web site
+maven.xdoc.date = bottom
+maven.xdoc.date.format = dd MMMM yyyy HH:mm z
+
+# Display the maven version the web site is documenting
+maven.xdoc.version = 
+maven.xdoc.locale.default=en
+
+maven.xdoc.poweredby.image=maven-feather.png
+maven.xdoc.theme=stylus
+
+maven.xdoc.validate.exclude=${maven.xdoc.navigation.file},${maven.pdf.navigationFile},${maven.xdoc.xml.copy},changes.xml
+
+
+#=====
+# Others settings
+#=====
+maven.final.name = maven
+maven.build.dir = ${basedir}/target
+maven.gen.docs = ${maven.build.dir}/generated-xdocs
+maven.ci.nagEmailAddress=notifications at maven.apache.org
+
+#=====
+# Testing
+#=====
+
+# This is to test a feature where a value is defined in a properties file
+# and is available for use inside the POM.
+pomProperty = value
+
+#=====
+# Bootstrap
+#=====
+maven.bootstrap.plugins = clean/**,jar/**,java/**,license/**,plugin/**,test/**
+maven.bootstrap.test.plugins = true
+maven.plugins.directory = ${basedir}/../plugins
+maven.plugins.profile = plugin-profile.xml
+# Plugins to bundle in maven
+maven.plugins.includes = */project.xml
+maven.plugins.excludes = plugins-common/project.xml,plugins-parent/project.xml,plugins-site/project.xml,examples/project.xml,touchstone/**,touchstone-partner/**
+
+maven.get.jars.baseUrl = http://www.ibiblio.org/maven
+# can't go under target, currently cleans stuff that is needed
+maven.bootstrap.dir = ${basedir}/bootstrap
+
+# ------------------------------------------------------------------------------
+# bootstrap is offline or online - online by default . Pass this property
+# as -o from the command prompt if you are offline
+# Online mode:
+# maven.bootstrap.online =
+# Offline mode:
+# maven.bootstrap.online = -o
+# ------------------------------------------------------------------------------
+maven.bootstrap.online=
+
+# ------------------------------------------------------------------------------
+# The bootstrap classes consist of an Ant task front that:
+#
+# a) parses the POM using a simple subclass of DefaultHandler
+# b) downloads Maven's dependencies
+# ------------------------------------------------------------------------------
+maven.bootstrap.classes = ${maven.bootstrap.dir}/bootstrap-classes
+
+# ------------------------------------------------------------------------------
+# The phase1 classes are all the Maven classes compiled using Ant instead
+# of Maven itself.
+# ------------------------------------------------------------------------------
+maven.bootstrap.phase1.classes = ${maven.bootstrap.dir}/phase1-classes
+
+maven.bootstrap.install.dir = ${maven.bootstrap.dir}/install-phase1
+maven.bootstrap.bin.dir = ${maven.bootstrap.dir}/bin
+
+maven.lite.plugins=artifact,clean,console,deploy,dist,genapp,jar,java,license,multiproject,plugin,pom,release,repository,scm,site,test,war,xdoc,developer-activity,file-activity,javadoc,jdepend,jellydoc,junit-report,jxr,linkcheck,pmd,tasklist

Added: branches/maven1/upstream/1.1~beta3/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,818 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <id>maven</id>
+  <groupId>maven</groupId>
+  <artifactId>maven</artifactId>
+  <name>Maven</name>
+  <currentVersion>1.1-beta-3</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+    <logo>/images/apache-maven-project-2.png</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven-logo-2.gif</logo>
+  <!-- Gump integration --> 
+  <gumpRepositoryId>maven</gumpRepositoryId>
+  <description>Maven is a project management and project comprehension tool. Maven is based on the concept of a project object model: builds, documentation creation, site publication, and distribution publication are all controlled from the project object model. Maven also provides tools to create source metrics, change logs based directly on source repository, and source cross-references. You can build a Maven installation from this source tree by running ant -f build-bootstrap.xml</description>
+  <shortDescription>Java Project Management Tools</shortDescription>
+  <url>http://maven.apache.org/maven-1.x/</url>
+  <issueTrackingUrl>http://jira.codehaus.org/browse/MAVEN</issueTrackingUrl>
+  <siteAddress>people.apache.org</siteAddress>
+  <siteDirectory>/www/maven.apache.org/maven-1.x/</siteDirectory>
+  <distributionSite>people.apache.org</distributionSite>
+  <distributionDirectory>/www/people.apache.org/repo/m1-ibiblio-rsync-repository/</distributionDirectory>
+  <repository>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/maven-1/core/trunk/</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/maven-1/core/trunk/</developerConnection>
+    <url>http://svn.apache.org/viewcvs/maven/maven-1/core/trunk/</url>
+  </repository>
+  <versions>
+    <version>
+      <id>b1</id>
+      <name>1.0-b1</name>
+      <tag>MAVEN_1_0_B1</tag>
+    </version>
+    <version>
+      <id>b2</id>
+      <name>1.0-b2</name>
+      <tag>MAVEN_1_0_B2</tag>
+    </version>
+    <version>
+      <id>b3</id>
+      <name>1.0-b3</name>
+      <tag>MAVEN_1_0_B3</tag>
+    </version>
+    <version>
+      <id>b4</id>
+      <name>1.0-b4</name>
+      <tag>MAVEN_1_0_B4</tag>
+    </version>
+    <version>
+      <id>b5</id>
+      <name>1.0-beta-5</name>
+      <tag>MAVEN_1_0_B5</tag>
+    </version>
+    <version>
+      <id>b6</id>
+      <name>1.0-beta-6</name>
+      <tag>MAVEN_1_0_B6</tag>
+    </version>
+    <version>
+      <id>b7</id>
+      <name>1.0-beta-7</name>
+      <tag>MAVEN_1_0_B7</tag>
+    </version>
+    <version>
+      <id>b8</id>
+      <name>1.0-beta-8</name>
+      <tag>MAVEN_1_0_B8</tag>
+    </version>
+    <version>
+      <id>b9</id>
+      <name>1.0-beta-9</name>
+      <tag>MAVEN_1_0_B9</tag>
+    </version>
+    <version>
+      <id>b10</id>
+      <name>1.0-beta-10</name>
+      <tag>MAVEN_1_0_B10</tag>
+    </version>
+    <version>
+      <id>rc1</id>
+      <name>1.0-rc1</name>
+      <tag>MAVEN_1_0_RC1</tag>
+    </version>
+    <version>
+      <id>1.0-rc2</id>
+      <name>1.0-rc2</name>
+      <tag>MAVEN_1_0_RC2</tag>
+    </version>
+    <version>
+      <id>1.0-rc3</id>
+      <name>1.0-rc3</name>
+      <tag>MAVEN_1_0_RC3</tag>
+    </version>
+    <version>
+      <id>1.0-rc4</id>
+      <name>1.0-rc4</name>
+      <tag>MAVEN_1_0_RC4</tag>
+    </version>
+    <version>
+      <id>1.0</id>
+      <name>1.0</name>
+      <tag>MAVEN_1_0</tag>
+    </version>
+    <version>
+      <id>1.0.1</id>
+      <name>1.0.1</name>
+      <tag>MAVEN_1_0_1</tag>
+    </version>
+    <version>
+      <id>1.0.2</id>
+      <name>1.0.2</name>
+      <tag>MAVEN_1_0_2</tag>
+    </version>
+    <version>
+      <id>1.1-beta-1</id>
+      <name>1.1-beta-1</name>
+      <tag>maven-1.1-beta-1</tag>
+    </version>
+    <version>
+      <id>1.1-beta-2</id>
+      <name>1.1-beta-2</name>
+      <tag>maven-1.1-beta-2</tag>
+    </version>
+    <version>
+      <id>1.1-beta-3</id>
+      <name>1.1-beta-3</name>
+      <tag>maven-1.1-beta-3</tag>
+    </version>
+  </versions>
+  <mailingLists>
+    <mailingList>
+      <name>Maven User List</name>
+      <subscribe>users-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>users-unsubscribe at maven.apache.org</unsubscribe>
+      <post>users at maven.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/maven-users/</archive>
+      <otherArchives>
+        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>
+        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>Maven Developer List</name>
+      <subscribe>dev-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe at maven.apache.org</unsubscribe>
+      <post>dev at maven.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev/</archive>
+      <otherArchives>
+        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>
+        <otherArchive>http://www.nabble.com/Apache-Maven-Developers-List-f179.html</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>Maven Commits List</name>
+      <subscribe>commits-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>commits-unsubscribe at maven.apache.org</unsubscribe>
+      <post>commits at maven.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits/</archive>
+    </mailingList>
+    <mailingList>
+      <name>Maven Announce List</name>
+      <subscribe>announce-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>announce-unsubscribe at maven.apache.org</unsubscribe>
+      <post>announce at maven.apache.org</post>
+      <archive/>
+    </mailingList>
+    <mailingList>
+      <name>Apache Announce List</name>
+      <subscribe>announce-subscribe at apache.org</subscribe>
+      <unsubscribe>announce-unsubscribe at apache.org</unsubscribe>
+      <post>announce at apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>
+    </mailingList>
+  </mailingLists>
+  <developers>
+    <developer>
+      <name>Juancarlo Anez</name>
+      <id>juanco</id>
+      <email>juanco at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Stephane Bailliez</name>
+      <id>sbailliez</id>
+      <email>sbailliez at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Jeff Brekke</name>
+      <id>brekke</id>
+      <email>brekke at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Tom Copeland</name>
+      <id>tcopeland</id>
+      <email>tcopeland at apache.org</email>
+      <organization>InfoEther</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Eric Dobbs</name>
+      <id>dobbs</id>
+      <email>eric at dobbse.net</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>dIon Gillard</name>
+      <id>dion</id>
+      <email>dion at multitask.com.au</email>
+      <organization>Multitask Consulting</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+10</timezone>
+    </developer>
+    <developer>
+      <name>Arnaud Heritier</name>
+      <id>aheritier</id>
+      <email>aheritier at apache.org</email>
+      <organization>Octo Technology</organization>
+      <roles>
+        <role>PMC Member</role>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Pete Kazmier</name>
+      <id>kaz</id>
+      <email>pete-apache-dev at kazmier.com</email>
+      <organization/>
+      <roles>
+        <role>Documentation</role>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Peter Lynch</name>
+      <id>plynch</id>
+      <email>plynch at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Michal Maczka</name>
+      <id>michal</id>
+      <email>michal.maczka at dimatics.com</email>
+      <organization>Dimatics</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Glenn McAllister</name>
+      <id>glennm</id>
+      <email>glenn at somanetworks.com</email>
+      <organization>SOMA Networks, Inc.</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Bob McWhirter</name>
+      <id>werken</id>
+      <email>bob at werken.com</email>
+      <organization>The Werken Company</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Geir Magnusson Jr.</name>
+      <id>geirm</id>
+      <email>geirm at optonline.net</email>
+      <organization>Independent (DVSL Maven)</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Vincent Massol</name>
+      <id>vmassol</id>
+      <email>vmassol at pivolis.com</email>
+      <organization>Pivolis</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Stéphane Mor</name>
+      <id>smor</id>
+      <email>stephanemor at yahoo.fr</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Kasper Nielsen</name>
+      <id>knielsen</id>
+      <email>apache at kav.dk</email>
+      <organization/>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Brett Porter</name>
+      <id>brett</id>
+      <email>brett at apache.org</email>
+      <organization>f2 network</organization>
+      <roles>
+        <role>PMC Member</role>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+10</timezone>
+    </developer>
+    <developer>
+      <name>Daniel Rall</name>
+      <id>dlr</id>
+      <email>dlr at finemaltcoding.com</email>
+      <organization>CollabNet, Inc.</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Kurt Schrader</name>
+      <id>kschrader</id>
+      <email>kschrader at karmalab.org</email>
+      <organization>University of Michigan</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <url>http://karmalab.org/~kschrader/</url>
+    </developer>
+    <developer>
+      <name>James Strachan</name>
+      <id>jstrachan</id>
+      <email>james_strachan at yahoo.co.uk</email>
+      <organization>Spiritsoft</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>James Taylor</name>
+      <id>jtaylor</id>
+      <email>james at jamestaylor.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Emmanuel Venisse</name>
+      <id>evenisse</id>
+      <email>emmanuel at venisse.net</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Jason van Zyl</name>
+      <id>jvanzyl</id>
+      <email>jason at zenplex.com</email>
+      <organization>Zenplex</organization>
+      <roles>
+        <role>Architect</role>
+        <role>Release Manager</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Ben Walding</name>
+      <id>bwalding</id>
+      <email>ben at walding.com</email>
+      <organization>Walding Consulting Services</organization>
+      <roles>
+        <role>Java Developer</role>
+        <role>PMC Member</role>
+      </roles>
+      <!--<url>http://www.walding.com</url>--> 
+      <timezone>+10</timezone>
+    </developer>
+    <developer>
+      <name>Lukas Theussl</name>
+      <id>ltheussl</id>
+      <email>ltheussl at apache.org</email>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Stephane Nicoll</name>
+      <id>snicoll</id>
+      <email>snicoll at apache.org</email>
+      <organization/>
+      <roles>
+        <role>PMC Member</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+  </developers>
+  <contributors>
+    <contributor>
+      <name>Alexei Barantsev</name>
+      <email>barancev at ispras.ru</email>
+    </contributor>
+    <contributor>
+      <name>Martin van dem Bemt</name>
+      <email>mvdb at mvdb.com</email>
+    </contributor>
+    <contributor>
+      <name>Nathan Coast</name>
+      <email>nathan.coast at blueyonder.co.uk</email>
+    </contributor>
+    <contributor>
+      <name>Martin Cooper</name>
+      <email>martin.cooper at tumbleweed.com</email>
+    </contributor>
+    <contributor>
+      <name>Aslak Hellesøy</name>
+      <email>aslak at thoughtworks.net</email>
+    </contributor>
+    <contributor>
+      <name>John Casey</name>
+      <email>jdcasey at commonjava.org</email>
+    </contributor>
+    <contributor>
+      <name>James CE Johnson</name>
+      <email>jcej at tragus.org</email>
+    </contributor>
+    <contributor>
+      <name>Mark Langley</name>
+      <email>mlangley at casebank.com</email>
+    </contributor>
+    <contributor>
+      <name>Brian Leonard</name>
+      <email>brian at brainslug.com</email>
+    </contributor>
+    <contributor>
+      <name>Michael McCallum</name>
+      <email>gholam at apache.org</email>
+    </contributor>
+    <contributor>
+      <name>Markus M. May</name>
+      <email>mmay at javafreedom.org</email>
+    </contributor>
+    <contributor>
+      <name>Tom Palmer</name>
+      <email>tomp at uk.uu.net</email>
+    </contributor>
+    <contributor>
+      <name>Martin Skopp</name>
+      <email>skopp at riege.de</email>
+      <organization>Riege Software International</organization>
+      <timezone>+1</timezone>
+    </contributor>
+    <contributor>
+      <name>Kuisong Tong</name>
+      <email>Kuisong.Tong at vtradex.com</email>
+    </contributor>
+    <contributor>
+      <name>Andy Jefferson</name>
+      <email>andy at ajsoft.net</email>
+      <organization>AJSoft Limited</organization>
+    </contributor>
+  </contributors>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://cvs.apache.org/viewcvs.cgi/*checkout*/maven/LICENSE.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <!-- Need to mark these as compile-time/run-time --> 
+  <dependencies>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>dom4j</artifactId>
+      <version>1.7-20060614</version>
+      <url>http://www.dom4j.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>jaxen</groupId>
+      <artifactId>jaxen</artifactId>
+      <version>1.1-beta-9</version>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-nodeps</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-junit</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-launcher</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-trax</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>commons-jelly</artifactId>
+      <version>1.0.1-20060717</version>
+      <url>http://jakarta.apache.org/commons/jelly/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-ant</artifactId>
+      <version>1.1</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/ant/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-define</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/define/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-util</artifactId>
+      <version>1.1.1</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/util/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-xml</artifactId>
+      <version>1.1</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/xml/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jexl</groupId>
+      <artifactId>commons-jexl</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/jexl/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.0.4</version>
+      <url>http://jakarta.apache.org/commons/logging/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+      <version>3.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <version>1.2</version>
+      <url>http://jakarta.apache.org/commons/codec/</url>
+      <properties>
+        <comment>This library is needed by httpclient.</comment>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-cli</groupId>
+      <artifactId>commons-cli</artifactId>
+      <version>1.0-beta-2</version>
+      <url>http://jakarta.apache.org/commons/cli/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.2</version>
+      <url>http://jakarta.apache.org/commons/io/</url>
+    </dependency>
+    <dependency>
+      <groupId>forehead</groupId>
+      <artifactId>forehead</artifactId>
+      <version>1.0-beta-5</version>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.13</version>
+      <url>http://logging.apache.org/log4j/docs/</url>
+    </dependency>
+    <dependency>
+      <groupId>xml-apis</groupId>
+      <artifactId>xml-apis</artifactId>
+      <version>1.3.03</version>
+      <url>http://xml.apache.org/commons/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>xml-resolver</groupId>
+      <artifactId>xml-resolver</artifactId>
+      <version>1.1</version>
+      <url>http://xml.apache.org/commons/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>xerces</groupId>
+      <artifactId>xercesImpl</artifactId>
+      <version>2.8.0</version>
+      <url>http://xerces.apache.org/xerces2-j/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>1.0.3</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>3.0.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+      <version>1.0-beta-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http</artifactId>
+      <version>1.0-beta-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-file</artifactId>
+      <version>1.0-beta-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-ssh</artifactId>
+      <version>1.0-beta-1</version>
+    </dependency>
+    <!-- Runtime dependencies --> 
+    <dependency>
+      <groupId>commons-beanutils</groupId>
+      <artifactId>commons-beanutils</artifactId>
+      <version>1.6.1</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+      <version>3.0</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.0</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>com.jcraft</groupId>
+      <artifactId>jsch</artifactId>
+      <version>0.1.27</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+  </dependencies>
+  <build>
+    <defaultGoal>jar:jar</defaultGoal>
+    <nagEmailAddress>${maven.ci.nagEmailAddress}</nagEmailAddress>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+      <!-- TODO - fix or remove --> 
+      <excludes>
+        <exclude>**/JAXPTest.java</exclude>
+      </excludes>
+    </unitTest>
+    <resources>
+      <resource>
+        <directory>${basedir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/conf</directory>
+        <includes>
+          <include>*.xsd</include>
+          <include>*.dtd</include>
+          <include>*.mod</include>
+          <include>driver.jelly</include>
+          <include>LICENCE.txt</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/conf</directory>
+        <includes>
+          <include>*.properties</include>
+        </includes>
+        <filtering>true</filtering>
+      </resource>
+      <resource>
+        <directory>src/messages</directory>
+        <targetPath>org/apache/maven/messages</targetPath>
+        <includes>
+          <include>messages*.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+  <reports>
+    <!--
+     |
+     | These should all be completely self contained. You should be able
+     | to generate each of them individually without needing the final
+     | xdoc transformation.
+     |
+     | Each report plugin with it's POM and plugin.jelly logic should
+     | contain everything needed to produced the report.
+     |
+    --> 
+    <report>maven-jdepend-plugin</report>
+    <report>maven-changelog-plugin</report>
+    <report>maven-file-activity-plugin</report>
+    <report>maven-developer-activity-plugin</report>
+    <report>maven-javadoc-plugin</report>
+    <report>maven-jdiff-plugin</report>
+    <report>maven-jellydoc-plugin</report>
+    <report>maven-jxr-plugin</report>
+    <report>maven-junit-report-plugin</report>
+    <report>maven-license-plugin</report>
+    <report>maven-linkcheck-plugin</report>
+    <report>maven-pdf-plugin</report>
+    <report>maven-tasklist-plugin</report>
+    <report>maven-jira-plugin</report>
+    <report>maven-pmd-plugin</report>
+    <report>maven-simian-plugin</report>
+    <report>maven-checkstyle-plugin</report>
+    <report>maven-faq-plugin</report>
+  </reports>
+  <!-- For maven internal testing --> 
+  <properties>
+    <testName>testValue</testName>
+    <pomProperty>${pomProperty}</pomProperty>
+  </properties>
+</project>

Added: branches/maven1/upstream/1.1~beta3/release.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/release.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/release.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,143 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project>
+
+  <!-- Current contains release and install goop, can be further decompose. -->
+
+  <!--
+   |
+   | Some goals to help with the release of Maven itself.
+   |
+   -->
+
+  <goal name="pre-release-work">
+    <attainGoal name="maven:plugin-increment-snapshot-version"/>
+    <attainGoal name="maven:plugin-convert-snapshots"/>
+  </goal>
+
+  <goal name="maven:plugin-convert-snapshots"
+    description="Convert snapshot versions into resolved timestamped versions.">
+
+      <maven:reactor
+        basedir="${maven.plugins.directory}"
+        includes="*/project.xml"
+        goals="convert-snapshots-auto"
+        banner="Resolving snapshot versions"
+        ignoreFailures="true"
+      />
+  </goal>
+
+  <goal name="maven:plugin-validate-pom-for-release"
+    description="Validate the Plugin POMs for release.">
+
+      <maven:reactor
+        basedir="${maven.plugins.directory}"
+        includes="*/project.xml"
+        goals="validate-pom-for-release"
+        banner="Resolving snapshot versions"
+        ignoreFailures="false"
+      />
+  </goal>
+
+  <goal name="maven:plugin-increment-snapshot-version"
+    description="Graduate Plugin currentVersion element.">
+
+      <maven:reactor
+        basedir="${maven.plugins.directory}"
+        includes="*/project.xml"
+        goals="increment-snapshot-version"
+        banner="Graduating snapshot version"
+        ignoreFailures="true"
+      />
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- M A V E N  I N S T A L L E R                                       -->
+  <!-- ================================================================== -->
+
+  <property name="tag" value="${pom.artifactId}-${pom.currentVersion}"/>
+
+  <goal name="maven:installer" description="Create a Maven installer jar">
+
+    <property name="installersDir" value="installers"/>
+    <property name="installersBase" value="${installersDir}/${tag}"/>
+
+    <delete dir="${installersDir}"/>
+    <mkdir dir="${installersBase}"/>
+
+    <copy todir="${installersBase}">
+      <fileset dir="${maven.home}">
+        <include name="plugins/*.jar"/>
+        <include name="bin/*"/>
+        <include name="lib/**"/>
+        <include name="maven-project-*.xsd"/>
+      </fileset>
+    </copy>
+
+    <mkdir dir="${installersBase}/repository"/>
+
+    <tar longfile="gnu" tarfile="${tag}.tar">
+      <tarfileset dir="${installersDir}">
+        <exclude name="**/maven"/>
+      </tarfileset>
+      <tarfileset dir="${installersDir}" mode="755">
+        <include name="**/maven"/>
+      </tarfileset>
+    </tar>
+
+    <gzip
+      zipfile="${tag}.tar.gz"
+      src="${tag}.tar"
+      />
+    <copy
+      file="${maven.build.dir}/${maven.final.name}.jar"
+      todir="${maven.home}/plugins"
+      />
+
+    <delete file="${tag}.tar"/>
+
+    <!-- Create a zip file -->
+    <zip zipfile="${tag}.zip">
+      <zipfileset dir="${installersDir}"/>
+    </zip>
+
+  </goal>
+
+  <goal name="maven:installer-deploy"
+    description="Deploy an installable Maven jar to the remote repo??">
+
+    <maven:user-check user="${maven.username}"/>
+    <attainGoal name="maven:installer"/>
+
+    <tar longfile="gnu" tarfile="installers.tar">
+      <tarfileset dir="${basedir}">
+        <include name="${tag}.tar.gz"/>
+        <include name="${tag}.zip"/>
+      </tarfileset>
+    </tar>
+
+    <deploy:artifact
+      artifact="installers.tar"
+      type="distributions"
+      assureDirectoryCommand="mkdir -p"
+      siteCommand="cd @deployDirectory@;tar xUvf installers.tar;chmod -R g+u *;rm installers.tar"
+      />
+
+  </goal>
+
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+maven.log

Added: branches/maven1/upstream/1.1~beta3/src/admin/create-checksums
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/create-checksums	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/create-checksums	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,22 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+#  Copyright 2001-2004 The Apache Software Foundation.
+#  
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#  
+#       http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ----------------------------------------------------------------------------
+
+for i in `find -name '*.jar'`
+do
+  md5sum $i | sed 's/ .*$//' > $i.md5
+done
+  


Property changes on: branches/maven1/upstream/1.1~beta3/src/admin/create-checksums
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+#  Copyright 2001-2004 The Apache Software Foundation.
+#  
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#  
+#       http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ----------------------------------------------------------------------------
+
+# Copy DIST to the repository
+# $1 : artifact to copy
+# $2 : project id
+
+ARTIFACT=$1
+ID=$2
+ARTIFACT_TYPE=$3
+REPO=login.ibiblio.org
+DIR=/public/html/maven/${ID}/${ARTIFACT_TYPE}
+
+echo ${DIR}
+
+# Make sure the target directory is present.
+ssh $REPO "mkdir -p ${DIR}"
+
+# Copy the artifact to the repository.
+scp $ARTIFACT ${REPO}:${DIR}
+
+# Make sure the perms are correct. Just in case
+ssh $REPO "chmod 664 ${DIR}/${ARTIFACT}; chgrp maven ${DIR}/${ARTIFACT}; cd ${DIR}; md5sum ${ARTIFACT} | sed 's/ .*$//' > ${ARTIFACT}.md5"


Property changes on: branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact.bat
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact.bat	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-artifact.bat	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,43 @@
+ at REM ----------------------------------------------------------------------------
+ at REM Copyright 2001-2004 The Apache Software Foundation.
+ at REM 
+ at REM Licensed under the Apache License, Version 2.0 (the "License");
+ at REM you may not use this file except in compliance with the License.
+ at REM You may obtain a copy of the License at
+ at REM 
+ at REM      http://www.apache.org/licenses/LICENSE-2.0
+ at REM 
+ at REM Unless required by applicable law or agreed to in writing, software
+ at REM distributed under the License is distributed on an "AS IS" BASIS,
+ at REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ at REM See the License for the specific language governing permissions and
+ at REM limitations under the License.
+ at REM ----------------------------------------------------------------------------
+ at REM 
+
+ at echo off
+REM Copy an artifact to the repository
+REM %1 : artifact to copy
+REM %2 : project id
+REM %3 : artifact type
+REM %4 : user name on remote box
+
+SET ARTIFACT=%1
+SET ID=%2
+SET ARTIFACT_TYPE=%3
+SET USER=%4
+SET REPO=login.ibiblio.org
+SET DIR=/public/html/maven/%ID%/%ARTIFACT_TYPE%
+
+echo %DIR%
+
+REM Make sure the target directory is present.
+ssh %USER%@%REPO% "mkdir -p %DIR%"
+
+REM Copy the artifact to the repository.
+scp %ARTIFACT% %USER%@%REPO%:%DIR%
+
+REM Make sure the perms are correct. Just in case
+ssh %USER%@%REPO% "chmod 664 %DIR%/%ARTIFACT%; chgrp maven %DIR%/%ARTIFACT%; cd %DIR%; md5sum %ARTIFACT% | sed 's/ .*$//' > %ARTIFACT%.md5"
+Echo Making sure the perms are correct on the md5
+ssh %USER%@%REPO% "chmod 664 %DIR%/%ARTIFACT%.md5; chgrp maven %DIR%/%ARTIFACT%.md5"

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+#  Copyright 2001-2004 The Apache Software Foundation.
+#  
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#  
+#       http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ----------------------------------------------------------------------------
+
+# Copy DIST to the repository
+# $1 : artifact to copy
+# $2 : project id
+
+ARTIFACT=$1
+ID=$2
+ARTIFACT_TYPE=distributions
+REPO=login.ibiblio.org
+DIR=/public/html/maven/${ID}/${ARTIFACT_TYPE}
+
+echo ${DIR}
+
+# Make sure the target directory is present.
+ssh $REPO "mkdir -p ${DIR}"
+
+# Copy the artifact to the repository.
+scp $ARTIFACT ${REPO}:${DIR}
+
+# Make sure the perms are correct. Just in case
+ssh $REPO "chmod 664 ${DIR}/${ARTIFACT}; chgrp maven ${DIR}/${ARTIFACT}; cd ${DIR}; md5sum ${ARTIFACT} | sed 's/ .*$//' > ${ARTIFACT}.md5"


Property changes on: branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist.bat
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist.bat	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-dist.bat	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+ at REM ----------------------------------------------------------------------------
+ at REM Copyright 2001-2004 The Apache Software Foundation.
+ at REM 
+ at REM Licensed under the Apache License, Version 2.0 (the "License");
+ at REM you may not use this file except in compliance with the License.
+ at REM You may obtain a copy of the License at
+ at REM 
+ at REM      http://www.apache.org/licenses/LICENSE-2.0
+ at REM 
+ at REM Unless required by applicable law or agreed to in writing, software
+ at REM distributed under the License is distributed on an "AS IS" BASIS,
+ at REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ at REM See the License for the specific language governing permissions and
+ at REM limitations under the License.
+ at REM ----------------------------------------------------------------------------
+ at REM 
+
+ at Echo off
+
+Rem Copy DIST to the repository
+Rem %1 : artifact to copy
+Rem %2 : project id
+
+Set ARTIFACT=%1
+Set ID=%2
+Set User=%3
+Set ARTIFACT_TYPE=distributions
+Set REPO=login.ibiblio.org
+Set DIR=/public/html/maven/%ID%/%ARTIFACT_TYPE%
+
+echo %DIR%
+
+Rem Make sure the target directory is present.
+ssh %User%@%REPO% "mkdir -p %DIR%"
+
+Rem Copy the artifact to the repository.
+scp %ARTIFACT% %User%@%REPO%:%DIR%
+
+Rem Make sure the perms are correct. Just in case
+ssh %User%@%REPO% "chmod 664 %DIR%/%ARTIFACT%; chgrp maven %DIR%/%ARTIFACT%; cd %DIR%; md5sum %ARTIFACT% | sed 's/ .*$//' > %ARTIFACT%.md5"

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+#  Copyright 2001-2004 The Apache Software Foundation.
+#  
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#  
+#       http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ----------------------------------------------------------------------------
+
+# Deploy JAR to the repository
+# $1 : artifact to copy
+# $2 : project id
+
+ARTIFACT=$1
+ID=$2
+ARTIFACT_TYPE=jars
+REPO=login.ibiblio.org
+DIR=/public/html/maven/${ID}/${ARTIFACT_TYPE}
+
+echo ${DIR}
+
+# Make sure the target directory is present.
+ssh $REPO "mkdir -p ${DIR}"
+
+# Copy the artifact to the repository.
+scp $ARTIFACT ${REPO}:${DIR}
+
+# Make sure the perms are correct. Just in case
+ssh $REPO "chmod 664 ${DIR}/${ARTIFACT}; chgrp maven ${DIR}/${ARTIFACT}; cd ${DIR}; md5sum ${ARTIFACT} | sed 's/ .*$//' > ${ARTIFACT}.md5; chgrp maven ${ARTIFACT}.md5"


Property changes on: branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar.bat
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar.bat	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-jar.bat	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,47 @@
+ at REM ----------------------------------------------------------------------------
+ at REM Copyright 2001-2004 The Apache Software Foundation.
+ at REM 
+ at REM Licensed under the Apache License, Version 2.0 (the "License");
+ at REM you may not use this file except in compliance with the License.
+ at REM You may obtain a copy of the License at
+ at REM 
+ at REM      http://www.apache.org/licenses/LICENSE-2.0
+ at REM 
+ at REM Unless required by applicable law or agreed to in writing, software
+ at REM distributed under the License is distributed on an "AS IS" BASIS,
+ at REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ at REM See the License for the specific language governing permissions and
+ at REM limitations under the License.
+ at REM ----------------------------------------------------------------------------
+ at REM 
+
+ at Echo Off
+Rem Deploy JAR to the repository
+Rem %1 : artifact to copy, e.g. commons-jelly-tags-betwixt-1.0-beta5.jar
+Rem %2 : group id, e.g. commons-jelly
+Rem %3 : user id, e.g. diongillard
+
+Set ARTIFACT=%1
+Set GROUPID=%2
+Set User=%3
+
+Set ARTIFACT_TYPE=jars
+Set REPO=login.ibiblio.org
+Set DIR=/public/html/maven/%GROUPID%/%ARTIFACT_TYPE%
+
+echo Uploading to %DIR%
+
+Echo Making sure the target directory is present.
+ssh %USER%@%REPO% "mkdir -p %DIR%"
+Echo Ensuring directory permissions are ok.
+ssh %USER%@%REPO% "chmod 775 %DIR%;chgrp maven %DIR%"
+Echo Ensuring parent directory permissions are ok.
+ssh %USER%@%REPO% "chmod 775 %DIR%/..; chgrp maven %DIR%/.."
+
+Echo Copying the artifact to the repository.
+scp %ARTIFACT% %USER%@%REPO%:%DIR%
+
+Echo Making sure the perms are correct, and creating the .md5
+ssh %USER%@%REPO% "chmod 664 %DIR%/%ARTIFACT%; chgrp maven %DIR%/%ARTIFACT%; cd %DIR%; md5sum %ARTIFACT% | sed 's/ .*$//' > %ARTIFACT%.md5"
+Echo Making sure the perms are correct on the md5
+ssh %USER%@%REPO% "chmod 664 %DIR%/%ARTIFACT%.md5; chgrp maven %DIR%/%ARTIFACT%.md5"

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+#  Copyright 2001-2004 The Apache Software Foundation.
+#  
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#  
+#       http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ----------------------------------------------------------------------------
+
+# Deploy JAR to the repository
+# $1 : artifact to copy
+# $2 : project id
+
+ARTIFACT=$1
+ID=$2
+ARTIFACT_TYPE=jars
+REPO=login.ibiblio.org
+DIR=/public/html/maven/${ID}/${ARTIFACT_TYPE}
+
+echo ${DIR}
+
+# Make sure the target directory is present.
+ssh $REPO "mkdir -p ${DIR}"
+
+# Copy the artifact to the repository.
+scp $ARTIFACT ${REPO}:${DIR}
+
+# Make sure the perms are correct. Just in case
+ssh $REPO "chmod 664 ${DIR}/${ARTIFACT}; chgrp maven ${DIR}/${ARTIFACT}; cd ${DIR}; md5sum ${ARTIFACT} | sed 's/ .*$//' > ${ARTIFACT}.md5"
+
+# Make sure the perms are correct. Just in case
+ssh $REPO "cd ${DIR}; ln -sf ${ARTIFACT} ${ID}-SNAPSHOT.jar; md5sum ${ARTIFACT} | sed 's/ .*$//' > ${ID}-SNAPSHOT.md5"


Property changes on: branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar.bat
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar.bat	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/admin/deploy-snapshot-jar.bat	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,41 @@
+ at REM ----------------------------------------------------------------------------
+ at REM Copyright 2001-2004 The Apache Software Foundation.
+ at REM 
+ at REM Licensed under the Apache License, Version 2.0 (the "License");
+ at REM you may not use this file except in compliance with the License.
+ at REM You may obtain a copy of the License at
+ at REM 
+ at REM      http://www.apache.org/licenses/LICENSE-2.0
+ at REM 
+ at REM Unless required by applicable law or agreed to in writing, software
+ at REM distributed under the License is distributed on an "AS IS" BASIS,
+ at REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ at REM See the License for the specific language governing permissions and
+ at REM limitations under the License.
+ at REM ----------------------------------------------------------------------------
+ at REM 
+
+ at Echo off
+ at Rem Deploy JAR to the repository
+ at Rem %1 : artifact to copy, e.g. commons-jelly-tags-bewtixt-1.0-beta4.jar
+ at Rem %2 : project/group id, e.g. commons-jelly
+ at Rem %3 : artifact id, or user id if no artifact id is needed, e.g. commons-jelly-tags-betwixt
+ at Rem %4 : user id, or nothing if no artifact id is needed , e.g. diongillard
+
+Set ARTIFACT=%1
+Set GROUPID=%2
+Set ARTIFACTID=%3
+Set USER=%4
+
+If "%4" == "" Set USER=%3
+If "%4" == "" Set ARTIFACTID=%GROUPID%
+
+Set REPO=login.ibiblio.org
+Set DIR=/public/html/maven/%GROUPID%/%ARTIFACT_TYPE%
+Set SNAPSHOTFILE=%ARTIFACTID%-SNAPSHOT.jar
+
+ at REM The following only works on NT/2000 shells
+Call %~dp0\deploy-jar %ARTIFACT% %GROUPID% %USER%
+
+Echo Setting up the snapshot link
+ssh %USER%@%REPO% "cd %DIR%; ln -sf %ARTIFACT% %SNAPSHOTFILE%; ln -sf %ARTIFACT%.md5 %SNAPSHOTFILE%.md5"

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-2.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-2.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-2.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,19 @@
+The Maven team is pleased to announce the Beta 2 release!
+
+http://jakarta.apache.org/turbine/maven/
+
+Maven is a Java project management and project comprehension tool. Maven is
+based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined model
+for your project. Builds, documentation, source metrics, and source
+cross-references are all controlled by your POM. 
+
+Maven has many goals, but in a nutshell Maven aims to make the developer's
+life easier by providing a well defined project structure, well defined
+development processes to follow, and a coherent body of documentation that
+keeps your developers and clients apprised of what's happening with your
+project. Maven alleviates a lot of what most developers consider drudgery
+and lets them get on with the task at hand. This is essential in OSS
+projects where there aren't many people dedicated to the task of documenting
+and propagating the critical information about your project which is
+necessary in order to attract potential new developers and clients.

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-3.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-3.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-3.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,38 @@
+The Maven team is pleased to announce the Beta 3 release!
+
+http://jakarta.apache.org/turbine/maven/
+
+Maven is a Java project management and project comprehension tool. Maven is
+based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined model
+for your project. Builds, documentation, source metrics, and source
+cross-references are all controlled by your POM. 
+
+Maven has many goals, but in a nutshell Maven aims to make the developer's
+life easier by providing a well defined project structure, well defined
+development processes to follow, and a coherent body of documentation that
+keeps your developers and clients apprised of what's happening with your
+project. Maven alleviates a lot of what most developers consider drudgery
+and lets them get on with the task at hand. This is essential in OSS
+projects where there aren't many people dedicated to the task of documenting
+and propagating the critical information about your project which is
+necessary in order to attract potential new developers and clients.
+
+Changes in this version include:
+
+o Integration of Checkstyle
+
+o Maven installation update mechanism that allows you to easily
+  update your Maven installation.
+
+o POM update mechanism that will move your Maven projects forward easily
+  as Maven improves. The updater will transform your project descriptor,
+  properties files and the project structure itself if required.
+
+o Testing has been simplified and made safer.
+
+o An XML Schema and validation mechanism have been added.
+
+o Documentation changes include fully documented Maven properties, the
+  start of an FAQ, and several modifications to help unify the
+  documentation so its more coherent for new users.

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-4.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-4.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-4.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,49 @@
+The Maven team is pleased to announce the Beta 4 release!
+
+http://jakarta.apache.org/turbine/maven/
+
+Maven is a Java project management and project comprehension tool. Maven is
+based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined model
+for your project. Builds, documentation, source metrics, and source
+cross-references are all controlled by your POM. 
+
+Maven has many goals, but in a nutshell Maven aims to make the developer's
+life easier by providing a well defined project structure, well defined
+development processes to follow, and a coherent body of documentation that
+keeps your developers and clients apprised of what's happening with your
+project. Maven alleviates a lot of what most developers consider drudgery
+and lets them get on with the task at hand. This is essential in OSS
+projects where there aren't many people dedicated to the task of documenting
+and propagating the critical information about your project which is
+necessary in order to attract potential new developers and clients.
+
+Changes in this version include:
+
+o Configurable color scheme for the generated web site.  By default,
+  Maven uses its own color scheme for generated web sites; however,
+  users now have the option of overriding some or all of the color
+  selections.
+o Support for J2EE (tm) WAR and EAR files being generated as part of the build
+  process. 
+o WAR file validation has been added, such that a war is verified to be 
+  consistent with the web.xml it provides describing its contents
+o Extra reporting on project activity has been added. The reports include
+  activity by file and developer.
+o Nag email address and package were added to the gump descriptor
+o The LICENSE.txt file is now added to JARs, WARs and EARs built with Maven
+o JUnit tests can be configured to display their output at the console, rather 
+  than placed into a file, for easier debugging.
+o Maven will now create a separate classpath for unit tests and integration
+  unit tests
+o All properties used by maven are now prefixed with 'maven.'
+o The source code directories were restructured to allow easier development of
+  plugins
+o Work on validating Struts 1.0 war files was started
+o Eclipse plugin for Maven started
+o Maven GUI started
+o POM updated to allow multiple and various SCMs
+o POM simplified to aid in the development of discrete components
+
+Maven is going strong! 15 developers, 114 unit tests, and a staggering
+amount of documentation!

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-5.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-5.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-5.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+The Maven team is pleased to announce the Beta 5 release!
+
+http://jakarta.apache.org/turbine/maven/
+
+Maven is a Java project management and project comprehension tool. Maven
+is based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined
+model for your project. Builds, documentation, source metrics, and
+source cross-references are all controlled by your POM.
+
+Maven has many goals, but in a nutshell Maven aims to make the
+developer's life easier by providing a well defined project structure,
+well defined development processes to follow, and a coherent body of
+documentation that keeps your developers and clients apprised of what's
+happening with your project. Maven alleviates a lot of what most
+developers consider drudgery and lets them get on with the task at hand.
+This is essential in OSS projects where there aren't many people
+dedicated to the task of documenting and propagating the critical
+information about your project which is necessary in order to attract
+potential new developers and clients.
+
+Changes in this version include:
+
+o Jelly is now used for all XML scripting instead of Ant build files
+which still provides Ant semantics but provides greater flexibility in
+processing your builds.
+
+o Plugins can now be packaged in JARs and dropped into your Maven
+installation to add new functionality to your builds.
+
+o IBiblio is now being used as a primary Maven repository providing high
+availability, reliability and bandwidth.
+
+o The bootstrap process will now work correctly behind a http proxy.
+
+o Gump integration is a lot closer to being reliable using the Gump
+plug-in.
+
+o Vanilla Ant build files can be generated using the Ant plug-in.
+
+o The Reactor, which is a tool that allows you to process an arbitrary
+set of projects, is in its first working form. There is a Reactor in the
+Commons that will build all the Commons projects and generate an entire
+site for the Commons. Workflow and scheduling will be added to the
+Reactor for b6.
+
+You can find the Maven distributions here:
+
+http://www.ibiblio.org/maven/maven/distributions/
+

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-6.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-6.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-6.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,49 @@
+The Maven team is pleased to announce the Beta 6 release!
+
+http://jakarta.apache.org/turbine/maven/
+
+Maven is a Java project management and project comprehension tool. Maven
+is based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined
+model for your project. Builds, documentation, source metrics, and
+source cross-references are all controlled by your POM.
+
+Maven has many goals, but in a nutshell Maven aims to make the
+developer's life easier by providing a well defined project structure,
+well defined development processes to follow, and a coherent body of
+documentation that keeps your developers and clients apprised of what's
+happening with your project. Maven alleviates a lot of what most
+developers consider drudgery and lets them get on with the task at hand.
+This is essential in OSS projects where there aren't many people
+dedicated to the task of documenting and propagating the critical
+information about your project which is necessary in order to attract
+potential new developers and clients.
+
+This version is primarily a bugfix release. Changes in this version include:
+
+o Manifests are created properly within JARs. We had a temporary
+  glitch when moving from Ant 1.4.1 to Ant 1.5.
+  
+o Tags created with the <define:tag/> will now execute N times within
+  the same goal.
+  
+o Property files precedence has been changed so that project defaults can
+  be overriden by a project local build.properties, and those in turn
+  can be overriden by ${user.home}/build.properties.
+  
+o The <deploy:copy-deps/> tag will now take an optional excludes attribute
+  which will accept a list dependency ids where each dependency that is
+  listed will be excluded from the copy.
+
+o Execution of the maven.bat file has been corrected for Win9x systems.
+
+o Time stats shown at the end of a build are now correct.
+
+o AspjectJ plug-in has been added.
+
+o Eclipse plug-in has been added.
+
+You can find the Maven distributions here:
+
+http://www.ibiblio.org/maven/maven/distributions/
+

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-7.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-7.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-beta-7.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,44 @@
+The Maven team is pleased to announce the Beta 7 release!
+
+http://jakarta.apache.org/turbine/maven/
+
+Maven is a Java project management and project comprehension tool. Maven
+is based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined
+model for your project. Builds, documentation, source metrics, and
+source cross-references are all controlled by your POM.
+
+Maven has many goals, but in a nutshell Maven aims to make the
+developer's life easier by providing a well defined project structure,
+well defined development processes to follow, and a coherent body of
+documentation that keeps your developers and clients apprised of what's
+happening with your project. Maven alleviates a lot of what most
+developers consider drudgery and lets them get on with the task at hand.
+This is essential in OSS projects where there aren't many people
+dedicated to the task of documenting and propagating the critical
+information about your project which is necessary in order to attract
+potential new developers and clients.
+
+This version is primarily a bugfix release. Changes in this version include:
+
+o Codeswitcher plug-in has been added. This is a Java preprocessor
+  plug-in.
+ 
+o Examples plug-in has been added. This provides basic working
+  Maven example projects.
+ 
+o IDEA plug-in has been added.
+ 
+o Jalopy plug-in has been added.
+ 
+o JBuilder plug-in has been added.
+ 
+o Perforce plug-in has been added.
+ 
+o StatCVS plug-in has been added. This provides some visuals of the 
+  state of your CVS repository.
+ 
+o Word2Html plug-in has been added.
+
+You can find the Maven distributions here:
+http://www.ibiblio.org/maven/maven/distributions/

Added: branches/maven1/upstream/1.1~beta3/src/announcements/1.0-rc1.ann
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/announcements/1.0-rc1.ann	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/announcements/1.0-rc1.ann	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,33 @@
+The Maven team is pleased to announce Release Candidate 1!
+
+http://maven.apache.org/
+
+Maven is a Java project management and project comprehension tool. Maven
+is based on the concept of a project object model (POM) in that all the
+artifacts produced by Maven are a result of consulting a well defined
+model for your project. Builds, documentation, source metrics, and
+source cross-references are all controlled by your POM.
+
+Maven has many goals, but in a nutshell Maven aims to make the
+developer's life easier by providing a well defined project structure,
+well defined development processes to follow, and a coherent body of
+documentation that keeps your developers and clients apprised of what's
+happening with your project. Maven alleviates a lot of what most
+developers consider drudgery and lets them get on with the task at hand.
+This is essential in OSS projects where there aren't many people
+dedicated to the task of documenting and propagating the critical
+information about your project which is necessary in order to attract
+potential new developers and clients.
+
+This version is primarily a bugfix release.
+
+Bugs fixed
+----------
+see http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&pid=10030&fixfor=10181
+
+Bugs to be fixed for 1.0
+------------------------
+http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&pid=10030&fixfor=10149
+
+You can find the Maven distributions here:
+http://maven.apache.org/builds/release/1.0-rc1/

Added: branches/maven1/upstream/1.1~beta3/src/bin/forehead.conf
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bin/forehead.conf	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bin/forehead.conf	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
++maven.home
++java.home
++tools.jar
+
+=[root.maven] org.apache.maven.cli.App
+
+[root]
+    ${tools.jar}
+    ${maven.home}/lib/ant-*.jar
+    ${maven.home}/lib/commons-logging-*.jar
+    ${maven.home}/lib/log4j-*.jar
+    ${maven.home}/lib/endorsed/*.jar
+
+[root.maven]
+    ${maven.home}/lib/*.jar
+    ${maven.home}/lib/endorsed/*.jar
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/bin/maven
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bin/maven	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bin/maven	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,156 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+#  Copyright 2001-2004 The Apache Software Foundation.
+#  
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#  
+#       http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ----------------------------------------------------------------------------
+
+#   Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
+#   reserved.
+
+FOREHEAD_VERSION=1.0-beta-5
+
+if [ -z "$MAVEN_OPTS" ] ; then
+  MAVEN_OPTS="-Xmx256m"
+fi
+
+if [ -f /etc/mavenrc ] ; then
+  . /etc/mavenrc
+fi
+
+if [ -f "$HOME/.mavenrc" ] ; then
+  . "$HOME/.mavenrc"
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  Darwin*) darwin=true 
+           if [ -z "$JAVA_VERSION" ] ; then
+             JAVA_VERSION="CurrentJDK"
+           else
+             echo "Using Java version: $JAVA_VERSION"
+           fi
+           if [ -z "$JAVA_HOME" ] ; then
+             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home
+           fi
+           ;;
+esac
+
+# try to find MAVEN in well known locations
+[ -z "$MAVEN_HOME" -a -d /opt/maven ]		&& MAVEN_HOME=/opt/maven
+[ -z "$MAVEN_HOME" -a -d "$HOME/maven" ]	&& MAVEN_HOME="$HOME/maven"
+
+# Otherwise try to determine it from our invocation path
+if [ -z "$MAVEN_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  saveddir=`pwd`
+
+  # need this for relative symlinks
+  PRG="$0"    
+  while [ -h "$PRG" ]; do
+      ls=`ls -ld "$PRG"`
+      link=`expr "$ls" : '.*-> \(.*\)$'`
+      if expr "$link" : '/.*' > /dev/null; then
+          PRG="$link"
+      else
+          PRG="`dirname $PRG`/$link"
+      fi
+  done
+    
+  # Make it fully specified
+  cd "`dirname \"$PRG\"`/.."
+  MAVEN_HOME="`pwd -P`"
+
+  cd "$saveddir"
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$MAVEN_HOME" ] &&
+    MAVEN_HOME=`cygpath --unix "$MAVEN_HOME"`
+  [ -n "$MAVEN_HOME_LOCAL" ] &&
+    MAVEN_HOME_LOCAL=`cygpath --unix "$MAVEN_HOME_LOCAL"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD=java
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly."
+  echo "  We cannot execute $JAVACMD"
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+  echo "  If build fails because sun.* classes could not be found"
+  echo "  you will need to set the JAVA_HOME environment variable"
+  echo "  to the installation directory of java."
+fi
+
+MAVEN_ENDORSED="${JAVA_HOME}/lib/endorsed:${MAVEN_HOME}/lib/endorsed"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$MAVEN_HOME" ] &&
+    MAVEN_HOME=`cygpath --path --windows "$MAVEN_HOME"`
+  [ -n "$MAVEN_HOME_LOCAL" ] &&
+    MAVEN_HOME_LOCAL=`cygpath --path --windows "$MAVEN_HOME_LOCAL"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$HOME" ] &&
+    HOME=`cygpath --path --windows "$HOME"`
+  [ -n "$MAVEN_ENDORSED" ] &&
+    MAVEN_ENDORSED=`cygpath --path --windows "$MAVEN_ENDORSED"`
+fi
+
+# For Darwin, use classes.jar for TOOLS_JAR
+TOOLS_JAR="${JAVA_HOME}/lib/tools.jar"
+if $darwin; then
+  TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Classes/classes.jar"
+  MAVEN_ENDORSED="$MAVEN_ENDORSED:/System/Library/Java/Extensions"
+fi
+
+MAIN_CLASS=com.werken.forehead.Forehead
+if [ -n "$MAVEN_HOME_LOCAL" ]; then
+  MAVEN_OPTS="$MAVEN_OPTS -Dmaven.home.local=${MAVEN_HOME_LOCAL}" 
+fi
+  
+"$JAVACMD" \
+  $MAVEN_OPTS \
+  -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
+  -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
+  "-Djava.endorsed.dirs=${MAVEN_ENDORSED}" \
+  -classpath "${MAVEN_HOME}/lib/forehead-${FOREHEAD_VERSION}.jar" \
+  "-Dforehead.conf.file=${MAVEN_HOME}/bin/forehead.conf"  \
+  "-Dtools.jar=$TOOLS_JAR" \
+  "-Dmaven.home=${MAVEN_HOME}" \
+  $MAIN_CLASS "$@"
+


Property changes on: branches/maven1/upstream/1.1~beta3/src/bin/maven
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/bin/maven.bat
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bin/maven.bat	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bin/maven.bat	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,171 @@
+ at REM ----------------------------------------------------------------------------
+ at REM Copyright 2001-2004 The Apache Software Foundation.
+ at REM 
+ at REM Licensed under the Apache License, Version 2.0 (the "License");
+ at REM you may not use this file except in compliance with the License.
+ at REM You may obtain a copy of the License at
+ at REM 
+ at REM      http://www.apache.org/licenses/LICENSE-2.0
+ at REM 
+ at REM Unless required by applicable law or agreed to in writing, software
+ at REM distributed under the License is distributed on an "AS IS" BASIS,
+ at REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ at REM See the License for the specific language governing permissions and
+ at REM limitations under the License.
+ at REM ----------------------------------------------------------------------------
+ at REM 
+
+ at REM ----------------------------------------------------------------------------
+ at REM Maven Start Up Batch script
+ at REM
+ at REM Required ENV vars:
+ at REM JAVA_HOME - location of a JDK home dir
+ at REM MAVEN_HOME - location of maven's installed home dir
+ at REM
+ at REM Optional ENV vars
+ at REM MAVEN_HOME_LOCAL - may override default dir Maven writes work files
+ at REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+ at REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
+ at REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+ at REM     e.g. to debug Maven itself, use
+ at REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+ at REM ----------------------------------------------------------------------------
+
+ at REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+ at echo off
+ at REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+ at if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+ at REM Execute a user defined script before this one
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat"
+
+ at REM set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" @setlocal
+
+set ERROR_CODE=0
+
+ at REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo ERROR: JAVA_HOME not found in your environment.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation
+echo.
+set ERROR_CODE=1
+goto end
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto chkMHome
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory.
+echo JAVA_HOME = %JAVA_HOME%
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation
+echo.
+set ERROR_CODE=1
+goto end
+
+:chkMHome
+if not "%MAVEN_HOME%"=="" goto valMHome
+
+if "%OS%"=="Windows_NT" set MAVEN_HOME=%~dp0..
+if not "%MAVEN_HOME%"=="" goto valMHome
+
+echo.
+echo ERROR: MAVEN_HOME not found in your environment.
+echo Please set the MAVEN_HOME variable in your environment to match the
+echo location of the Maven installation
+echo.
+set ERROR_CODE=1
+goto end
+
+:valMHome
+if exist "%MAVEN_HOME%\bin\maven.bat" goto init
+
+echo.
+echo ERROR: MAVEN_HOME is set to an invalid directory.
+echo MAVEN_HOME = %MAVEN_HOME%
+echo Please set the MAVEN_HOME variable in your environment to match the
+echo location of the Maven installation
+echo.
+set ERROR_CODE=1
+goto end
+ at REM ==== END VALIDATION ====
+
+:init
+ at REM Decide how to startup depending on the version of windows
+
+ at REM -- Win98ME
+if NOT "%OS%"=="Windows_NT" goto Win9xArg
+
+ at REM -- 4NT shell
+if "%eval[2+2]" == "4" goto 4NTArgs
+
+ at REM -- Regular WinNT shell
+set MAVEN_CMD_LINE_ARGS=%*
+goto endInit
+
+ at REM The 4NT Shell from jp software
+:4NTArgs
+set MAVEN_CMD_LINE_ARGS=%$
+goto endInit
+
+:Win9xArg
+ at REM Slurp the command line arguments.  This loop allows for an unlimited number
+ at REM of agruments (up to the command line limit, anyway).
+set MAVEN_CMD_LINE_ARGS=
+:Win9xApp
+if %1a==a goto endInit
+set MAVEN_CMD_LINE_ARGS=%MAVEN_CMD_LINE_ARGS% %1
+shift
+goto Win9xApp
+
+ at REM Reaching here means variables are defined and arguments have been captured
+:endInit
+if "%MAVEN_OPTS%"=="" SET MAVEN_OPTS="-Xmx256m"
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+SET MAVEN_CLASSPATH="%MAVEN_HOME%\lib\forehead-1.0-beta-5.jar"
+SET MAVEN_ENDORSED="%JAVA_HOME%\lib\endorsed;%MAVEN_HOME%\lib\endorsed"
+SET MAVEN_MAIN_CLASS="com.werken.forehead.Forehead"
+if not "%MAVEN_HOME_LOCAL%" == "" goto StartMHL
+
+ at REM Start MAVEN without MAVEN_HOME_LOCAL override
+%MAVEN_JAVA_EXE% -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl "-Dmaven.home=%MAVEN_HOME%" "-Dtools.jar=%JAVA_HOME%\lib\tools.jar" "-Dforehead.conf.file=%MAVEN_HOME%\bin\forehead.conf" -Djava.endorsed.dirs=%MAVEN_ENDORSED% %MAVEN_OPTS% -classpath %MAVEN_CLASSPATH% %MAVEN_MAIN_CLASS% %MAVEN_CMD_LINE_ARGS%
+if errorlevel 1 goto error
+goto :end
+
+ at REM Start MAVEN with MAVEN_HOME_LOCAL override
+:StartMHL
+%MAVEN_JAVA_EXE% -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl "-Dmaven.home=%MAVEN_HOME%" "-Dmaven.home.local=%MAVEN_HOME_LOCAL%" "-Dtools.jar=%JAVA_HOME%\lib\tools.jar" "-Dforehead.conf.file=%MAVEN_HOME%\bin\forehead.conf" -Djava.endorsed.dirs=%MAVEN_ENDORSED% %MAVEN_OPTS% -classpath %MAVEN_CLASSPATH% %MAVEN_MAIN_CLASS% %MAVEN_CMD_LINE_ARGS%
+if errorlevel 1 goto error
+goto end
+
+:error
+if "%OS%"=="Windows_NT" @endlocal
+set ERROR_CODE=1
+
+:end
+if "%OS%"=="Windows_NT" goto endNT
+
+ at REM For old DOS remove the set variables from ENV - we assume they were not set
+ at REM before we started - at least we don't leave any baggage around
+set MAVEN_JAVA_EXE=
+set MAVEN_CLASSPATH=
+set MAVEN_MAIN_CLASS=
+set MAVEN_CMD_LINE_ARGS=
+goto postExec
+
+:endNT
+
+:postExec
+ at REM Execute a user defined script after this one
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+ at REM pause the batch file if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%
+

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/ArtifactDownloader.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/ArtifactDownloader.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/ArtifactDownloader.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,316 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+public class ArtifactDownloader
+{
+    public static final String SNAPSHOT_SIGNATURE = "-SNAPSHOT";
+
+    private File mavenRepoLocal;
+
+    private List remoteRepos;
+
+    private boolean useTimestamp = true;
+
+    private boolean ignoreErrors = false;
+
+    private String proxyHost;
+
+    private String proxyPort;
+
+    private String proxyUserName;
+
+    private String proxyPassword;
+
+    public ArtifactDownloader( String localRepository, List remoteRepositories )
+        throws Exception
+    {
+        setRemoteRepos( remoteRepositories );
+
+        if ( localRepository == null )
+        {
+            System.err.println( "local repository not specified" );
+
+            System.exit( 1 );
+        }
+
+        mavenRepoLocal = new File( localRepository );
+
+        if ( !mavenRepoLocal.exists() )
+        {
+            if ( !mavenRepoLocal.mkdirs() )
+            {
+                System.err.println( "Cannot create the specified local repository: " + mavenRepoLocal );
+
+                System.exit( 1 );
+            }
+        }
+
+        if ( !mavenRepoLocal.canWrite() )
+        {
+            System.err.println( "Can't write to " + mavenRepoLocal.getAbsolutePath() );
+
+            System.exit( 1 );
+        }
+
+        System.out.println( "Using the following for your local repository: " + mavenRepoLocal );
+        System.out.println( "Using the following for your remote repositories: " + remoteRepos );
+    }
+
+    public File getMavenRepoLocal()
+    {
+        return mavenRepoLocal;
+    }
+
+    private Set downloadedArtifacts = new HashSet();
+
+    public void downloadDependencies( List files )
+        throws Exception
+    {
+        for ( Iterator j = files.iterator(); j.hasNext(); )
+        {
+            String file = (String) j.next();
+
+            if ( !downloadedArtifacts.contains( file ) )
+            {
+                File destinationFile = new File( mavenRepoLocal, file );
+                // The directory structure for this project may
+                // not exists so create it if missing.
+                File directory = destinationFile.getParentFile();
+
+                if ( directory.exists() == false )
+                {
+                    directory.mkdirs();
+                }
+
+                if ( destinationFile.exists() && file.indexOf( SNAPSHOT_SIGNATURE ) < 0 )
+                {
+                    continue;
+                }
+
+                getRemoteArtifact( file, destinationFile );
+
+                if ( !destinationFile.exists() )
+                {
+                    throw new Exception( "Failed to download " + file );
+                }
+
+                downloadedArtifacts.add( file );
+            }
+        }
+    }
+
+    private void setRemoteRepos( List repositories )
+    {
+        remoteRepos = new ArrayList();
+
+        if ( repositories != null )
+        {
+            remoteRepos.addAll( repositories );
+        }
+
+        if ( repositories.isEmpty() )
+        {
+            remoteRepos.add( "http://repo1.maven.org" );
+        }
+    }
+
+    private List getRemoteRepos()
+    {
+        return remoteRepos;
+    }
+
+    private boolean getRemoteArtifact( String file, File destinationFile )
+    {
+        boolean fileFound = false;
+
+        for ( Iterator i = getRemoteRepos().iterator(); i.hasNext(); )
+        {
+            String remoteRepo = (String) i.next();
+
+            // The username and password parameters are not being
+            // used here. Those are the "" parameters you see below.
+            String url = remoteRepo + "/" + file;
+
+            if ( url.startsWith( "file" ) )
+            {
+                // THe JDK URL for file: should have one or no / instead of // for some reason
+                url = replace( url, "file://", "file:" );
+            }
+            else
+            {
+                url = replace( url, "//", "/" );
+                if ( url.startsWith( "https" ) )
+                {
+                    url = replace( url, "https:/", "https://" );
+                }
+                else
+                {
+                    url = replace( url, "http:/", "http://" );
+                }
+            }
+
+            // Attempt to retrieve the artifact and set the checksum if retrieval
+            // of the checksum file was successful.
+            try
+            {
+                log( "Downloading " + url );
+                HttpUtils.getFile( url, destinationFile, ignoreErrors, useTimestamp, proxyHost, proxyPort,
+                                   proxyUserName, proxyPassword, true );
+
+                // Artifact was found, continue checking additional remote repos (if any)
+                // in case there is a newer version (i.e. snapshots) in another repo
+                fileFound = true;
+            }
+            catch ( FileNotFoundException e )
+            {
+                log( "Artifact not found at [" + url + "]" );
+                // Ignore
+            }
+            catch ( Exception e )
+            {
+                // If there are additional remote repos, then ignore exception
+                // as artifact may be found in another remote repo. If there
+                // are no more remote repos to check and the artifact wasn't found in
+                // a previous remote repo, then artifactFound is false indicating
+                // that the artifact could not be found in any of the remote repos
+                //
+                // arguably, we need to give the user better control (another command-
+                // line switch perhaps) of what to do in this case? Maven already has
+                // a command-line switch to work in offline mode, but what about when
+                // one of two or more remote repos is unavailable? There may be multiple
+                // remote repos for redundancy, in which case you probably want the build
+                // to continue. There may however be multiple remote repos because some
+                // artifacts are on one, and some are on another. In this case, you may
+                // want the build to break.
+                //
+                // print a warning, in any case, so user catches on to mistyped
+                // hostnames, or other snafus
+                log( "Error retrieving artifact from [" + url + "]: " + e );
+            }
+        }
+
+        return fileFound;
+    }
+
+    private String replace( String text, String repl, String with )
+    {
+        StringBuffer buf = new StringBuffer( text.length() );
+        int start = 0, end = 0;
+        while ( ( end = text.indexOf( repl, start ) ) != -1 )
+        {
+            buf.append( text.substring( start, end ) ).append( with );
+            start = end + repl.length();
+        }
+        buf.append( text.substring( start ) );
+        return buf.toString();
+    }
+
+    private void log( String message )
+    {
+        System.out.println( message );
+    }
+
+    /**
+     * Returns the proxyHost.
+     *
+     * @return Returns the proxyHost.
+     */
+    protected String getProxyHost()
+    {
+        return this.proxyHost;
+    }
+
+    /**
+     * Sets the proxyHost.
+     *
+     * @param proxyHost The proxyHost to set.
+     */
+    protected void setProxyHost( String proxyHost )
+    {
+        this.proxyHost = proxyHost;
+    }
+
+    /**
+     * Returns the proxyPassword.
+     *
+     * @return Returns the proxyPassword.
+     */
+    protected String getProxyPassword()
+    {
+        return this.proxyPassword;
+    }
+
+    /**
+     * Sets the proxyPassword.
+     *
+     * @param proxyPassword The proxyPassword to set.
+     */
+    protected void setProxyPassword( String proxyPassword )
+    {
+        this.proxyPassword = proxyPassword;
+    }
+
+    /**
+     * Returns the proxyPort.
+     *
+     * @return Returns the proxyPort.
+     */
+    protected String getProxyPort()
+    {
+        return this.proxyPort;
+    }
+
+    /**
+     * Sets the proxyPort.
+     *
+     * @param proxyPort The proxyPort to set.
+     */
+    protected void setProxyPort( String proxyPort )
+    {
+        this.proxyPort = proxyPort;
+    }
+
+    /**
+     * Returns the proxyUserName.
+     *
+     * @return Returns the proxyUserName.
+     */
+    protected String getProxyUserName()
+    {
+        return this.proxyUserName;
+    }
+
+    /**
+     * Sets the proxyUserName.
+     *
+     * @param proxyUserName The proxyUserName to set.
+     */
+    protected void setProxyUserName( String proxyUserName )
+    {
+        this.proxyUserName = proxyUserName;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Base64.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Base64.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Base64.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,382 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.ByteArrayOutputStream;
+
+/**
+ * Encode/Decode Base-64.
+ * 
+ * @author John Casey
+ */
+public final class Base64
+{
+
+    // private static final Log LOG = LogFactory.getLog( Base64.class );
+
+    private static final String CRLF = System.getProperty( "line.separator" );
+
+    private static final int LINE_END = 64;
+
+    public static String encode( byte[] data )
+    {
+        return Base64.encode( data, true );
+    }
+
+    public static String encode( byte[] data, boolean useLineDelimiter )
+    {
+        if ( data == null )
+        {
+            return null;
+        }
+        else if ( data.length == 0 )
+        {
+            return "";
+        }
+
+        int padding = 3 - ( data.length % 3 );
+
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "padding = " + padding + "characters." );
+        // }
+
+        StringBuffer buffer = new StringBuffer();
+
+        for ( int i = 0; i < data.length; i += 3 )
+        {
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "iteration base offset = " + i );
+            // }
+
+            int neutral = ( data[i] < 0 ? data[i] + 256 : data[i] );
+
+            int block = ( neutral & 0xff );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "after first byte, block = " + Integer.toBinaryString( block ) );
+            // }
+
+            boolean inLastSegment = false;
+
+            block <<= 8;
+            if ( i + 1 < data.length )
+            {
+                neutral = ( data[i + 1] < 0 ? data[i + 1] + 256 : data[i + 1] );
+                block |= ( neutral & 0xff );
+            }
+            else
+            {
+                inLastSegment = true;
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "after second byte, block = " + Integer.toBinaryString( block ) + "; inLastSegment = "
+            // + inLastSegment );
+            // }
+
+            block <<= 8;
+            if ( i + 2 < data.length )
+            {
+                neutral = ( data[i + 2] < 0 ? data[i + 2] + 256 : data[i + 2] );
+                block |= ( neutral & 0xff );
+            }
+            else
+            {
+                inLastSegment = true;
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "after third byte, block = " + Integer.toBinaryString( block ) + "; inLastSegment = "
+            // + inLastSegment );
+            // }
+
+            char[] encoded = new char[4];
+            encoded[0] = toBase64Char( ( block >>> 18 ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "first character = " + encoded[0] );
+            // }
+
+            encoded[1] = toBase64Char( ( block >>> 12 ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "second character = " + encoded[1] );
+            // }
+
+            if ( inLastSegment && padding > 1 )
+            {
+                encoded[2] = '=';
+            }
+            else
+            {
+                encoded[2] = toBase64Char( ( block >>> 6 ) & 0x3f );
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "third character = " + encoded[2] );
+            // }
+
+            if ( inLastSegment && padding > 0 )
+            {
+                encoded[3] = '=';
+            }
+            else
+            {
+                encoded[3] = toBase64Char( block & 0x3f );
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "fourth character = " + encoded[3] );
+            // }
+
+            buffer.append( encoded );
+        }
+
+        if ( useLineDelimiter )
+        {
+            return canonicalize( buffer.toString() );
+        }
+        else
+        {
+            return buffer.toString();
+        }
+    }
+
+    public static byte[] decode( String src )
+    {
+        return Base64.decode( src, true );
+    }
+
+    public static byte[] decode( String src, boolean useLineDelimiter )
+    {
+        if ( src == null )
+        {
+            return null;
+        }
+        else if ( src.length() < 1 )
+        {
+            return new byte[0];
+        }
+
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "pre-canonicalization = \n" + src );
+        // }
+        String data = src;
+
+        if ( useLineDelimiter )
+        {
+            data = deCanonicalize( src );
+        }
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "post-canonicalization = \n" + data );
+        // }
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        char[] input = data.toCharArray();
+
+        for ( int i = 0; i < input.length; i += 4 )
+        {
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "iteration base offset = " + i );
+            // }
+
+            int block = ( toBase64Int( input[i] ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after first char [" + input[i] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            block <<= 6;
+            block |= ( toBase64Int( input[i + 1] ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after second char [" + input[i + 1] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            boolean inPadding = false;
+            boolean twoCharPadding = false;
+            block <<= 6;
+            if ( input[i + 2] != '=' )
+            {
+                block |= ( toBase64Int( input[i + 2] ) & 0x3f );
+            }
+            else
+            {
+                twoCharPadding = true;
+                inPadding = true;
+            }
+
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after third char [" + input[i + 2] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            block <<= 6;
+            if ( input[i + 3] != '=' )
+            {
+                block |= ( toBase64Int( input[i + 3] ) & 0x3f );
+            }
+            else
+            {
+                inPadding = true;
+            }
+
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after fourth char [" + input[i + 3] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            baos.write( ( block >>> 16 ) & 0xff );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "byte[" + ( index++ ) + "] = " + ( ( block >>> 16 ) & 0xff ) );
+            // }
+
+            if ( !inPadding || !twoCharPadding )
+            {
+                baos.write( ( block >>> 8 ) & 0xff );
+                // if ( LOG.isDebugEnabled() )
+                // {
+                // LOG.debug( "byte[" + ( index++ ) + "] = " + ( ( block >>> 8 ) & 0xff ) );
+                // }
+            }
+
+            if ( !inPadding )
+            {
+                baos.write( block & 0xff );
+                // if ( LOG.isDebugEnabled() )
+                // {
+                // LOG.debug( "byte[" + ( index++ ) + "] = " + ( block & 0xff ) );
+                // }
+            }
+        }
+
+        byte[] result = baos.toByteArray();
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "byte array is " + result.length + " bytes long." );
+        // }
+
+        return result;
+    }
+
+    private static char toBase64Char( int input )
+    {
+        if ( input > -1 && input < 26 )
+        {
+            return (char) ( 'A' + input );
+        }
+        else if ( input > 25 && input < 52 )
+        {
+            return (char) ( 'a' + input - 26 );
+        }
+        else if ( input > 51 && input < 62 )
+        {
+            return (char) ( '0' + input - 52 );
+        }
+        else if ( input == 62 )
+        {
+            return '+';
+        }
+        else if ( input == 63 )
+        {
+            return '/';
+        }
+        else
+        {
+            return '?';
+        }
+    }
+
+    private static int toBase64Int( char input )
+    {
+        if ( input >= 'A' && input <= 'Z' )
+        {
+            return input - 'A';
+        }
+        else if ( input >= 'a' && input <= 'z' )
+        {
+            return input + 26 - 'a';
+        }
+        else if ( input >= '0' && input <= '9' )
+        {
+            return input + 52 - '0';
+        }
+        else if ( input == '+' )
+        {
+            return 62;
+        }
+        else if ( input == '/' )
+        {
+            return 63;
+        }
+        else
+        {
+            return 0;
+        }
+    }
+
+    private static String deCanonicalize( String data )
+    {
+        if ( data == null )
+        {
+            return null;
+        }
+
+        StringBuffer buffer = new StringBuffer( data.length() );
+        for ( int i = 0; i < data.length(); i++ )
+        {
+            char c = data.charAt( i );
+            if ( c != '\r' && c != '\n' )
+            {
+                buffer.append( c );
+            }
+        }
+
+        return buffer.toString();
+    }
+
+    private static String canonicalize( String data )
+    {
+        StringBuffer buffer = new StringBuffer( (int) ( data.length() * 1.1 ) );
+
+        int col = 0;
+        for ( int i = 0; i < data.length(); i++ )
+        {
+            if ( col == LINE_END )
+            {
+                buffer.append( CRLF );
+                col = 0;
+            }
+
+            buffer.append( data.charAt( i ) );
+            col++;
+        }
+
+        buffer.append( CRLF );
+
+        return buffer.toString();
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapPomParser.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapPomParser.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapPomParser.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,196 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A class to parse the POM.
+ */
+public class BootstrapPomParser
+    extends DefaultHandler
+{
+    /** the project dependencies */
+    private ArrayList dependencies = new ArrayList();
+
+    /** current dependency being processed */
+    private Dependency currentDependency;
+
+    /** factory to create a sax parser */
+    private static SAXParserFactory saxFactory;
+
+    /** whether we're inside a dependency element during parsing */
+    private boolean insideDependency = false;
+
+    /** text of the element being processed */
+    private StringBuffer bodyText = new StringBuffer();
+
+    /**
+     * @return the dependencies attribute of the Bootstrap object
+     */
+    public List getDependencies()
+    {
+        return dependencies;
+    }
+
+    /**
+     * Parse a POM
+     * @param project the project file to parse
+     */
+    public void parse( File project )
+    {
+        try
+        {
+            saxFactory = SAXParserFactory.newInstance();
+            SAXParser parser = saxFactory.newSAXParser();
+            InputSource is = new InputSource( new FileInputStream( project ) );
+            parser.parse( is, this );
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Handles opening elements of the xml file.
+     * @param uri the uri being parsed
+     * @param localName element without namespace
+     * @param rawName element name
+     * @param attributes element attributes
+     */
+    public void startElement( String uri, String localName, String rawName, Attributes attributes )
+    {
+        if ( "dependency".equals( rawName ) )
+        {
+            currentDependency = new Dependency();
+            insideDependency = true;
+        }
+    }
+
+    /**
+     * some xml element text
+     * @param buffer the text found
+     * @param start the start position of text in the buffer
+     * @param length the length of the text in the buffer
+     */
+    public void characters( char[] buffer, int start, int length )
+    {
+        bodyText.append( buffer, start, length );
+    }
+
+    /**
+     * @return the current text from the characters method
+     */
+    private String getBodyText()
+    {
+        return bodyText.toString().trim();
+    }
+
+    /**
+     * Handles closing elements of the xml file.
+     * @param uri the uri being parsed
+     * @param localName element without namespace
+     * @param rawName element name
+     */
+    public void endElement( String uri, String localName, String rawName )
+    {
+        if ( "dependency".equals( rawName ) )
+        {
+            dependencies.add( currentDependency );
+            insideDependency = false;
+        }
+        else if ( "id".equals( rawName ) && insideDependency )
+        {
+            currentDependency.setId( getBodyText() );
+        }
+        else if ( "version".equals( rawName ) && insideDependency )
+        {
+            currentDependency.setVersion( getBodyText() );
+        }
+        else if ( "jar".equals( rawName ) && insideDependency )
+        {
+            currentDependency.setJar( getBodyText() );
+        }
+        else if ( "type".equals( rawName ) && insideDependency )
+        {
+            currentDependency.setType( getBodyText() );
+        }
+        else if ( "groupId".equals( rawName ) && insideDependency )
+        {
+            currentDependency.setGroupId( getBodyText() );
+        }
+        else if ( "artifactId".equals( rawName ) && insideDependency )
+        {
+            currentDependency.setArtifactId( getBodyText() );
+        }
+
+        bodyText = new StringBuffer();
+    }
+
+    /**
+     * Warning callback.
+     *
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    public void warning( SAXParseException spe )
+    {
+        printParseError( "Warning", spe );
+    }
+
+    /**
+     * Error callback.
+     *
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    public void error( SAXParseException spe )
+    {
+        printParseError( "Error", spe );
+    }
+
+    /**
+     * Fatal error callback.
+     *
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    public void fatalError( SAXParseException spe )
+    {
+        printParseError( "Fatal Error", spe );
+    }
+
+    /**
+     * Description of the Method
+     * @param type the type of error
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    private final void printParseError( String type, SAXParseException spe )
+    {
+        System.err.println( type + " [line " + spe.getLineNumber() + ", row " + spe.getColumnNumber() + "]: "
+            + spe.getMessage() );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapTask.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapTask.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/BootstrapTask.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,476 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.PatternSet;
+
+/**
+ * Get a list of resources from a website.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ */
+public class BootstrapTask
+    extends Task
+{
+    /** the parser to load the pom */
+    private BootstrapPomParser bootstrapPomParser;
+
+    /** the pom to be bootstrapped */
+    private File projectDescriptor;
+
+    /** the dependencies of the pom */
+    private List dependencies;
+
+    /** the local repo of jars */
+    private File mavenRepoLocal;
+
+    /** whether to use the file timestamp when checking freshness */
+    private boolean useTimestamp = true;
+
+    /** whether to ignore errors on downloads */
+    private boolean ignoreErrors = true;
+
+    /** the url to download from */
+    private String baseUrl;
+
+    /** whether we've got 'net access */
+    private String online;
+
+    /** the proxy to use */
+    private String proxyHost;
+
+    /** the port to use on the proxy */
+    private String proxyPort;
+
+    /** the user name to use for the proxy */
+    private String proxyUserName;
+
+    /** the password to use for the proxy */
+    private String proxyPassword;
+
+    /** the NTLM login host. */
+    private String loginHost = null;
+
+    /** the NTLM login domain. */
+    private String loginDomain = null;
+
+    /** list of files to process */
+    private List files;
+
+    /** Location to put the cope_deps scripts. */
+    private File copyScriptDir = null;
+
+    /** number of times to retry download */
+    private static final int MAX_RETRIES = 3;
+
+    /**
+     * Get the directory to put the copy script into.
+     * @return the directory
+     */
+    public File getCopyScriptDir()
+    {
+        return copyScriptDir;
+    }
+
+    /**
+     * Set the directory to put the copy script into.
+     * @param copyScriptDir the copy script directory
+     */
+    public void setCopyScriptDir( File copyScriptDir )
+    {
+        this.copyScriptDir = copyScriptDir;
+    }
+
+    /**
+     * Sets the projectDescriptor attribute of the BootstrapTask object
+     * @param projectDescriptor the file to bootstrap
+     */
+    public void setProjectDescriptor( File projectDescriptor )
+    {
+        this.projectDescriptor = projectDescriptor;
+    }
+
+    /**
+     * @return the projectDescriptor attribute
+     */
+    public File getProjectDescriptor()
+    {
+        return projectDescriptor;
+    }
+
+    /**
+     * Sets the mavenRepoLocal attribute of the BootstrapTask object
+     * @param mavenRepoLocal the repository to use
+     */
+    public void setMavenRepoLocal( File mavenRepoLocal )
+    {
+        this.mavenRepoLocal = mavenRepoLocal;
+    }
+
+    /**
+     * @return the local maven repository
+     */
+    public File getMavenRepoLocal()
+    {
+        return mavenRepoLocal;
+    }
+
+    // http
+
+    /**
+     * Sets the files attribute of the BootstrapTask object
+     * @param files a list of dependency file names
+     */
+    public void setFiles( List files )
+    {
+        this.files = files;
+    }
+
+    /**
+     * @return the files attribute
+     */
+    public List getFiles()
+    {
+        return files;
+    }
+
+    /**
+     * Sets the baseUrl attribute of the Get object
+     *
+     * @param baseUrl A URL that the files are relative to
+     */
+    public void setBaseUrl( String baseUrl )
+    {
+        this.baseUrl = baseUrl;
+    }
+
+    /**
+     * Sets the proxyHost attribute of the Get object
+     *
+     * @param proxyHost the host name of the proxy
+     */
+    public void setProxyHost( String proxyHost )
+    {
+        if ( validProperty( proxyHost ) )
+        {
+            this.proxyHost = proxyHost;
+        }
+    }
+
+    /**
+     * Sets the proxyPort attribute of the Get object
+     *
+     * @param proxyPort the port used to access the proxy, e.g. <code>8080</code>
+     */
+    public void setProxyPort( String proxyPort )
+    {
+        if ( validProperty( proxyPort ) )
+        {
+            this.proxyPort = proxyPort;
+        }
+    }
+
+    /**
+     * Sets the proxyUserName attribute of the Get object
+     *
+     * @param proxyUserName the login used to access the proxy
+     */
+    public void setProxyUserName( String proxyUserName )
+    {
+        if ( validProperty( proxyUserName ) )
+        {
+            this.proxyUserName = proxyUserName;
+        }
+    }
+
+    /**
+     * Sets the proxyPassword attribute of the Get object
+     *
+     * @param proxyPassword the password used to access the proxy, e.g. <code>8080</code>
+     */
+    public void setProxyPassword( String proxyPassword )
+    {
+        if ( validProperty( proxyPassword ) )
+        {
+            this.proxyPassword = proxyPassword;
+        }
+    }
+
+    /**
+     * Sets the loginHost attribute of the Get object
+     *
+     * @param loginHost the host used to access the NTLM proxy from
+     */
+    public void setLoginHost( String loginHost )
+    {
+        if ( validProperty( loginHost ) )
+        {
+            this.loginHost = loginHost;
+        }
+    }
+
+    /**
+     * Sets the loginDomain attribute of the Get object
+     *
+     * @param loginDomain the domain used to access the NTLM proxy on
+     */
+    public void setLoginDomain( String loginDomain )
+    {
+        if ( validProperty( loginDomain ) )
+        {
+            this.loginDomain = loginDomain;
+        }
+    }
+
+    /**
+     * Don't stop if get fails if set to "<CODE>true</CODE>".
+     *
+     * @param v if "true" then don't report download errors up to ant
+     */
+    public void setIgnoreErrors( boolean v )
+    {
+        ignoreErrors = v;
+    }
+
+    /**
+     * Use timestamps, if set to "<CODE>true</CODE>". <p>
+     *
+     * In this situation, the if-modified-since header is set so that the file
+     * is only fetched if it is newer than the local file (or there is no local
+     * file) This flag is only valid on HTTP connections, it is ignored in other
+     * cases. When the flag is set, the local copy of the downloaded file will
+     * also have its timestamp set to the remote file time. <br>
+     * Note that remote files of date 1/1/1970 (GMT) are treated as 'no
+     * timestamp', and web servers often serve files with a timestamp in the
+     * future by replacing their timestamp with that of the current time. Also,
+     * inter-computer clock differences can cause no end of grief.
+     *
+     * @param v "true" to enable file time fetching
+     */
+    public void setUseTimestamp( boolean v )
+    {
+        useTimestamp = v;
+    }
+
+    /**
+     * Does the work.
+     *
+     * @exception BuildException Thrown in unrecoverable error.
+     */
+    public void execute()
+        throws BuildException
+    {
+        if ( baseUrl == null )
+        {
+            throw new BuildException( "baseUrl attribute is required" );
+        }
+
+        if ( mavenRepoLocal == null )
+        {
+            throw new BuildException( "mavenRepoLocal attribute is required" );
+        }
+
+        if ( mavenRepoLocal.exists() && !mavenRepoLocal.canWrite() )
+        {
+            throw new BuildException( "Can't write to " + mavenRepoLocal.getAbsolutePath() );
+        }
+
+        System.out.println( "Using the following for your maven.repo.local: " + mavenRepoLocal );
+
+        bootstrapPomParser = new BootstrapPomParser();
+
+        bootstrapPomParser.parse( getProjectDescriptor() );
+
+        dependencies = bootstrapPomParser.getDependencies();
+
+        List list = new ArrayList();
+
+        for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+        {
+            Dependency d = (Dependency) i.next();
+
+            list.add( getArtifactPath( d, "/" ) );
+        }
+
+        setFiles( list );
+        // if offline is not set, download dependencies
+        if ( !"-o".equals( getOnline() ) )
+        {
+            downloadDependencies();
+        }
+
+        createClasspathReference( getProject(), "bootstrap-classpath", list, mavenRepoLocal );
+
+        createPatternSetReference( getProject(), "bootstrap-patternset", list );
+    }
+
+    /**
+     * Get the artifact path for a dependency in the repository.
+     * @param d the dependency
+     * @param pathSeparator the path separator (e.g. '/') to use in building the path
+     * @return the path to the dependency
+     */
+    private String getArtifactPath( Dependency d, String pathSeparator )
+    {
+        return d.getArtifactDirectory() + pathSeparator + "jars" + pathSeparator + d.getArtifact();
+    }
+
+    /**
+     * Does the work.
+     *
+     * @exception BuildException Thrown in unrecoverable error.
+     */
+    public void downloadDependencies()
+        throws BuildException
+    {
+        List repositoryUrls = new ArrayList();
+        StringTokenizer tok = new StringTokenizer( baseUrl, "," );
+        while ( tok.hasMoreTokens() )
+        {
+            String url = tok.nextToken().trim();
+            if ( !url.endsWith( "/" ) )
+            {
+                url = url + "/";
+            }
+            repositoryUrls.add( url );
+        }
+
+        try
+        {
+            ArtifactDownloader downloader = new ArtifactDownloader( mavenRepoLocal.getAbsolutePath(), repositoryUrls );
+            downloader.setProxyHost( proxyHost );
+            downloader.setProxyPort( proxyPort );
+            downloader.setProxyUserName( proxyUserName );
+            downloader.setProxyPassword( proxyPassword );
+            downloader.downloadDependencies( getFiles() );
+        }
+        catch ( Exception e )
+        {
+            throw new BuildException( "Failed to download dependency", e );
+        }
+    }
+
+    /**
+     * Create a classpath reference in <code>project</code>, named
+     * <code>reference</code> from the <code>list</code> of jar files, relative
+     * to <code>baseDir</code>
+     * @param project the Ant project to create the reference in
+     * @param reference the name of the reference to create
+     * @param list the list of jar files to append to the new classpath
+     * reference
+     * @param baseDir the directory the specified jars are relative to
+     */
+    public static void createClasspathReference( Project project, String reference, List list, File baseDir )
+    {
+        Path classpath = new Path( project );
+
+        for ( Iterator i = list.iterator(); i.hasNext(); )
+        {
+            String jar = (String) i.next();
+            Path p = new Path( project );
+            p.setPath( new File( baseDir, jar ).getAbsolutePath() );
+            classpath.append( p );
+        }
+
+        project.addReference( reference, classpath );
+    }
+
+    /**
+     * Create a pattern set reference in <code>project</code>, named
+     * <code>reference</code> from the <code>list</code> of includes/excludes/
+     * file names
+     * @param project the Ant project to create the reference in
+     * @param reference the name of the reference to create
+     * @param list the list of lines (Strings) specifying include=, exclude= or
+     *  a file name
+     */
+    public static void createPatternSetReference( Project project, String reference, List list )
+    {
+        StringBuffer includesSb = new StringBuffer();
+        StringBuffer excludesSb = new StringBuffer();
+        PatternSet patternSet = new PatternSet();
+
+        for ( Iterator i = list.iterator(); i.hasNext(); )
+        {
+            String line = (String) i.next();
+            line = line.trim();
+            includesSb.append( line ).append( ',' );
+        }
+
+        String includes = includesSb.toString();
+        String excludes = excludesSb.toString();
+
+        if ( includes.length() > 0 )
+        {
+            // Remove trailing comma
+            includes = includes.substring( 0, includes.length() - 1 );
+            patternSet.setIncludes( includes );
+        }
+        if ( excludes.length() > 0 )
+        {
+            // Remove trailing comma
+            excludes = includes.substring( 0, includes.length() - 1 );
+            patternSet.setExcludes( excludes );
+        }
+
+        project.addReference( reference, patternSet );
+    }
+
+    /**
+     * @param property the property to test
+     * @return true if the given property is not null and startsWith '${'
+     */
+    private boolean validProperty( String property )
+    {
+        if ( property != null && property.length() > 0 && !property.startsWith( "${" ) )
+        {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns the online.
+     * @return String
+     */
+    public String getOnline()
+    {
+        return online;
+    }
+
+    /**
+     * Sets the online.
+     * @param online The online to set
+     */
+    public void setOnline( String online )
+    {
+        this.online = online;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Dependency.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Dependency.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/Dependency.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,285 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Dependency.java 424464 2006-07-21 21:51:10Z aheritier $
+ */
+public class Dependency
+{
+    /** Dependency Id. */
+    private String id;
+
+    /** Version associated with this dependency */
+    private String version;
+
+    /** The URL to the dependency's homepage. */
+    private String url;
+
+    /** Explictly set JAR name */
+    private String jar;
+
+    /** Artifact name */
+    private String artifactId;
+
+    /** Group id */
+    private String groupId;
+
+    /** The dependency type */
+    private String type = "jar";
+
+    /**
+     * Default constructor
+     */
+    public Dependency()
+    {
+    }
+
+    /**
+     * Set the id for this dependency.
+     *
+     * @param id for this dependency
+     */
+    public void setId( String id )
+    {
+        this.id = id;
+    }
+
+    /**
+     * @return the id attribute (groupId:artifactId)
+     */
+    public String getId()
+    {
+        if ( isValid( getGroupId() ) && isValid( getArtifactId() ) )
+        {
+            // We have something like:
+            //
+            // <dependency>
+            //   <groupId>commons-jelly</groupId>
+            //   <artifactId>commons-jelly-tags-velocity</artifactId>
+            //   <version>SNAPSHOT</version>
+            //  </dependency>
+
+            return getGroupId() + ":" + getArtifactId();
+        }
+
+        return id;
+    }
+
+    /**
+     * Set the group id.
+     *
+     * @param groupId Group id for the dependency.
+     */
+    public void setGroupId( String groupId )
+    {
+        this.groupId = groupId;
+    }
+
+    /**
+     * Get the group id.
+     *
+     * @return The group id for the dependency.
+     */
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    /**
+     * Get the directory to place the artifact in. If the groupId has been
+     * set then use that, otherwise use the id.
+     *
+     * @return The artifact directory.
+     */
+    public String getArtifactDirectory()
+    {
+        if ( isValid( getGroupId() ) )
+        {
+            return getGroupId();
+        }
+
+        return getId();
+    }
+
+    /**
+     * Get the artifact id.
+     *
+     * @return The artifact id.
+     */
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    /**
+     * Set the artifact name.
+     *
+     * @param artifactId The artifact name of the dependency.
+     */
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
+
+    /**
+     * Gets the artifact name of the dependency. This is always calculated so
+     * that the version can be changed dynamically using the maven override
+     * facility.
+     *
+     * @return The artifact name.
+     */
+    public String getArtifact()
+    {
+        // If the jar name has been explicty set then use that. This
+        // is when the <jar/> element is explicity used in the POM.
+        if ( jar != null )
+        {
+            return jar;
+        }
+
+        if ( isValid( getArtifactId() ) )
+        {
+            return getArtifactId() + "-" + getVersion() + "." + getType();
+        }
+        else
+        {
+            return getId() + "-" + getVersion() + "." + getType();
+        }
+    }
+
+    /**
+     * Set the version for this dependency.
+     *
+     * @param version Version for this dependency
+     */
+    public void setVersion( String version )
+    {
+        this.version = version;
+    }
+
+    /**
+     * Get the version of this dependency.
+     *
+     * @return Version of this dependency
+     */
+    public String getVersion()
+    {
+        return version;
+    }
+
+    /**
+     * Set the name of the JAR if it cannot be synthesized from the id and
+     * version.
+     *
+     * @param jar Name of the jar
+     */
+    public void setJar( String jar )
+    {
+        // This is a check we need because of the jelly interpolation
+        // process. If we don't check an empty string will be set and
+        // screw up getArtifact() above.
+        if ( jar.trim().length() == 0 )
+        {
+            return;
+        }
+
+        this.jar = jar;
+    }
+
+    /**
+     * Get the name of the JAR. We will attempt to synthesize the name of the
+     * JAR from the id and version.
+     *
+     * @return Name of the jar
+     */
+    public String getJar()
+    {
+        return jar;
+    }
+
+    /**
+     * Set the name of url for the dependency.
+     *
+     * @param url the dependency's home page
+     */
+    public void setUrl( String url )
+    {
+        this.url = url;
+    }
+
+    /**
+     * Get the name of the url for the dependency.
+     *
+     * @return Name of the url for the dependency
+     */
+    public String getUrl()
+    {
+        return url;
+    }
+
+    /**
+     * Set the type of the dependency.
+     *
+     * @return dependency type such as "compile" or "test"
+     */
+    public String getType()
+    {
+        return type;
+    }
+
+    /**
+     * Sets the dependency type such as "compile" or "test"
+     *
+     * @param type The type of dependency.
+     */
+    public void setType( String type )
+    {
+        this.type = type;
+    }
+
+    /**
+     * Debug string.
+     *
+     * @return Debugging string.
+     */
+    public String toString()
+    {
+        return "Dep[ id:" + getId() + " pid:" + getId() + " ver:" + getVersion() + " ar:" + getArtifact() + " jar:"
+            + getJar() + " ]";
+    }
+
+    /**
+     * Simple check for a value in the POM. Due to the Jelly swizzling
+     * fields that aren't set come out as empty strings. This will not
+     * be required when the new lazy evaluation mechanism is put in place.
+     *
+     * @param value POM value to test.
+     * @return Is the value valid.
+     */
+    protected boolean isValid( String value )
+    {
+        if ( value != null && !"".equals( value.trim() ) )
+        {
+            return true;
+        }
+
+        return false;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/HttpUtils.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/HttpUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/HttpUtils.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,362 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.Authenticator;
+import java.net.HttpURLConnection;
+import java.net.PasswordAuthentication;
+import java.net.URL;
+import java.net.URLConnection;
+
+/**
+ * Http utils for retrieving files.
+ *
+ * @author costin at dnt.ro
+ * @author gg at grtmail.com (Added Java 1.1 style HTTP basic auth)
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @todo Need to add a timeout so we can flip to a backup repository.
+ * @todo Download everything in a single session.
+ * @todo Throw meaningful exception when authentication fails.
+ */
+public class HttpUtils
+{
+    /**
+     * Use a proxy to bypass the firewall with or without authentication
+     *
+     * @param proxyHost     Proxy Host (if proxy is required), or null
+     * @param proxyPort     Proxy Port (if proxy is required), or null
+     * @param proxyUserName Proxy Username (if authentification is required),
+     *                      or null
+     * @param proxyPassword Proxy Password (if authentification is required),
+     *                      or null
+     * @throws SecurityException if an operation is not authorized by the
+     *                           SecurityManager
+     */
+    public static void useProxyUser( final String proxyHost, final String proxyPort, final String proxyUserName,
+                                     final String proxyPassword )
+    {
+        if ( proxyHost != null && proxyPort != null )
+        {
+            System.getProperties().put( "proxySet", "true" );
+            System.getProperties().put( "proxyHost", proxyHost );
+            System.getProperties().put( "proxyPort", proxyPort );
+
+            if ( proxyUserName != null )
+            {
+                Authenticator.setDefault( new Authenticator()
+                {
+                    protected PasswordAuthentication getPasswordAuthentication()
+                    {
+                        return new PasswordAuthentication( proxyUserName, proxyPassword == null ? new char[0]
+                                                                                               : proxyPassword
+                                                                                                   .toCharArray() );
+                    }
+                } );
+            }
+        }
+    }
+
+    /**
+     * Retrieve a remote file.  Throws an Exception on errors unless the
+     * ifnoreErrors flag is set to True
+     *
+     * @param url             the of the file to retrieve
+     * @param destinationFile where to store it
+     * @param ignoreErrors    whether to ignore errors during I/O or throw an
+     *                        exception when they happen
+     * @param useTimestamp    whether to check the modified timestamp on the
+     *                        <code>destinationFile</code> against the remote <code>source</code>
+     * @param proxyHost       Proxy Host (if proxy is required), or null
+     * @param proxyPort       Proxy Port (if proxy is required), or null
+     * @param proxyUserName   Proxy Username (if authentification is required),
+     *                        or null.
+     * @param proxyPassword   Proxy Password (if authentification is required),
+     *                        or null.
+     * @param useChecksum     Flag to indicate the use of the checksum for the retrieved
+     *                        artifact if it is available.
+     * @throws IOException If an I/O exception occurs.
+     */
+    public static void getFile( String url, File destinationFile, boolean ignoreErrors, boolean useTimestamp,
+                                String proxyHost, String proxyPort, String proxyUserName, String proxyPassword,
+                                boolean useChecksum )
+        throws IOException
+    {
+        // Get the requested file.
+        getFile( url, destinationFile, ignoreErrors, useTimestamp, proxyHost, proxyPort, proxyUserName, proxyPassword );
+
+        // Get the checksum if requested.
+        if ( useChecksum )
+        {
+            File checksumFile = new File( destinationFile + ".md5" );
+
+            try
+            {
+                getFile( url + ".md5", checksumFile, ignoreErrors, useTimestamp, proxyHost, proxyPort, proxyUserName,
+                         proxyPassword );
+            }
+            catch ( Exception e )
+            {
+                // do nothing we will check later in the process
+                // for the checksums.
+            }
+        }
+    }
+
+    /**
+     * Retrieve a remote file.  Throws an Exception on errors unless the
+     * ifnoreErrors flag is set to True
+     *
+     * @param url             the of the file to retrieve
+     * @param destinationFile where to store it
+     * @param ignoreErrors    whether to ignore errors during I/O or throw an
+     *                        exception when they happen
+     * @param useTimestamp    whether to check the modified timestamp on the
+     *                        <code>destinationFile</code> against the remote <code>source</code>
+     * @param proxyHost       Proxy Host (if proxy is required), or null
+     * @param proxyPort       Proxy Port (if proxy is required), or null
+     * @param proxyUserName   Proxy Username (if authentification is required),
+     *                        or null
+     * @param proxyPassword   Proxy Password (if authentification is required),
+     *                        or null
+     * @throws IOException If an I/O exception occurs.
+     */
+    public static void getFile( String url, File destinationFile, boolean ignoreErrors, boolean useTimestamp,
+                                String proxyHost, String proxyPort, String proxyUserName, String proxyPassword )
+        throws IOException
+    {
+        //set the timestamp to the file date.
+        long timestamp = -1;
+        if ( useTimestamp && destinationFile.exists() )
+        {
+            timestamp = destinationFile.lastModified();
+        }
+
+        try
+        {
+            getFile( url, destinationFile, timestamp, proxyHost, proxyPort, proxyUserName, proxyPassword );
+        }
+        catch ( IOException ex )
+        {
+            if ( !ignoreErrors )
+            {
+                throw ex;
+            }
+        }
+    }
+
+    /**
+     * Retrieve a remote file.
+     *
+     * @param url             the URL of the file to retrieve
+     * @param destinationFile where to store it
+     * @param timestamp       if provided, the remote URL is only retrieved if it was
+     *                        modified more recently than timestamp. Otherwise, negative value indicates that
+     *                        the remote URL should be retrieved unconditionally.
+     * @param proxyHost       Proxy Host (if proxy is required), or null
+     * @param proxyPort       Proxy Port (if proxy is required), or null
+     * @param proxyUserName   Proxy Username (if authentification is required),
+     *                        or null
+     * @param proxyPassword   Proxy Password (if authentification is required),
+     *                        or null
+     * @throws IOException If an I/O exception occurs.
+     */
+    public static void getFile( String url, File destinationFile, long timestamp, String proxyHost, String proxyPort,
+                                String proxyUserName, String proxyPassword )
+        throws IOException
+    {
+        String[] s = parseUrl( url );
+        String username = s[0];
+        String password = s[1];
+        String parsedUrl = s[2];
+
+        URL source = new URL( parsedUrl );
+
+        //set proxy connection
+        useProxyUser( proxyHost, proxyPort, proxyUserName, proxyPassword );
+
+        //set up the URL connection
+        URLConnection connection = source.openConnection();
+
+        //modify the headers
+        if ( timestamp >= 0 )
+        {
+            connection.setIfModifiedSince( timestamp );
+        }
+        // prepare Java 1.1 style credentials
+        if ( username != null || password != null )
+        {
+            String up = username + ":" + password;
+            String encoding = Base64.encode( up.getBytes(), false );
+            connection.setRequestProperty( "Authorization", "Basic " + encoding );
+        }
+
+        //connect to the remote site (may take some time)
+        connection.connect();
+        //next test for a 304 result (HTTP only)
+        if ( connection instanceof HttpURLConnection )
+        {
+            HttpURLConnection httpConnection = (HttpURLConnection) connection;
+            // although HTTPUrlConnection javadocs says FileNotFoundException should be
+            // thrown on a 404 error, that certainly does not appear to be the case, so
+            // test for 404 ourselves, and throw FileNotFoundException as needed
+            if ( httpConnection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND )
+            {
+                throw new FileNotFoundException( url.toString() + " (HTTP Error: " + httpConnection.getResponseCode()
+                    + " " + httpConnection.getResponseMessage() + ")" );
+            }
+            if ( httpConnection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED )
+            {
+                return;
+            }
+            // test for 401 result (HTTP only)
+            if ( httpConnection.getResponseCode() == HttpURLConnection.HTTP_UNAUTHORIZED )
+            {
+                throw new IOException( "Not authorized." );
+            }
+            // test for 407 result (HTTP only)
+            if ( httpConnection.getResponseCode() == HttpURLConnection.HTTP_PROXY_AUTH )
+            {
+                throw new IOException( "Not authorized by proxy." );
+            }
+        }
+
+        // REVISIT: at this point even non HTTP connections may support the
+        // if-modified-since behaviour - we just check the date of the
+        // content and skip the write if it is not newer.
+        // Some protocols (FTP) dont include dates, of course.
+
+        InputStream is = null;
+        IOException isException = null;
+        for ( int i = 0; i < 3; i++ )
+        {
+            try
+            {
+                is = connection.getInputStream();
+                break;
+            }
+            catch ( IOException ex )
+            {
+                isException = ex;
+            }
+        }
+        if ( is == null )
+        {
+            throw isException;
+        }
+
+        if ( connection.getLastModified() <= timestamp && connection.getLastModified() != 0 )
+        {
+            return;
+        }
+
+        FileOutputStream fos = new FileOutputStream( destinationFile );
+
+        byte[] buffer = new byte[100 * 1024];
+        int length;
+
+        while ( ( length = is.read( buffer ) ) >= 0 )
+        {
+            fos.write( buffer, 0, length );
+            System.out.print( "." );
+        }
+
+        System.out.println();
+        fos.close();
+        is.close();
+
+        // if (and only if) the use file time option is set, then the
+        // saved file now has its timestamp set to that of the downloaded
+        // file
+        if ( timestamp >= 0 )
+        {
+            long remoteTimestamp = connection.getLastModified();
+            if ( remoteTimestamp != 0 )
+            {
+                touchFile( destinationFile, remoteTimestamp );
+            }
+        }
+    }
+
+    /**
+     * Parse an url which might contain a username and password. If the
+     * given url doesn't contain a username and password then return the
+     * origin url unchanged.
+     *
+     * @param url The url to parse.
+     * @return The username, password and url.
+     * @throws RuntimeException if the url is (very) invalid
+     */
+    static String[] parseUrl( String url )
+    {
+        String[] parsedUrl = new String[3];
+        parsedUrl[0] = null;
+        parsedUrl[1] = null;
+        parsedUrl[2] = url;
+
+        // We want to be able to deal with Basic Auth where the username
+        // and password are part of the URL. An example of the URL string
+        // we would like to be able to parse is like the following:
+        //
+        // http://username:password@repository.mycompany.com
+
+        int i = url.indexOf( "@" );
+        if ( i > 0 )
+        {
+            String protocol = url.substring( 0, url.indexOf( "://" ) ) + "://";
+            String s = url.substring( protocol.length(), i );
+            int j = s.indexOf( ":" );
+            parsedUrl[0] = s.substring( 0, j );
+            parsedUrl[1] = s.substring( j + 1 );
+            parsedUrl[2] = protocol + url.substring( i + 1 );
+        }
+
+        return parsedUrl;
+    }
+
+    /**
+     * set the timestamp of a named file to a specified time.
+     *
+     * @param file       the file to touch
+     * @param timemillis in milliseconds since the start of the era
+     * @return true if it succeeded. False means that this is a java1.1 system
+     *         and that file times can not be set
+     * @throws RuntimeException Thrown in unrecoverable error. Likely this
+     *                          comes from file access failures.
+     */
+    private static boolean touchFile( File file, long timemillis )
+    {
+        long modifiedTime;
+
+        if ( timemillis < 0 )
+        {
+            modifiedTime = System.currentTimeMillis();
+        }
+        else
+        {
+            modifiedTime = timemillis;
+        }
+
+        file.setLastModified( modifiedTime );
+        return true;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/bootstrap/org/apache/maven/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,27 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven</title>
+</head>
+<body>
+
+  <p>Core code used to bootstrap Maven</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/conf/defaults.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/conf/defaults.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/conf/defaults.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,88 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# D R I V E R  P R O P E R T I E S
+# -------------------------------------------------------------------
+
+maven.home.local = ${user.home}/.maven
+
+maven.property.inheritance=true
+
+maven.src.dir = ${basedir}/src
+maven.conf.dir = ${basedir}/conf
+maven.build.dir = ${basedir}/target
+maven.build.src = ${maven.build.dir}/src
+maven.build.dest = ${maven.build.dir}/classes
+
+# These should be in the java plugin
+maven.compile.debug = on
+maven.compile.optimize = off
+maven.compile.deprecation = off
+
+# ------------------------------------------------------------------
+# R E P O R T I N G   P R O P E R T I E S
+# ------------------------------------------------------------------
+maven.docs.src = ${basedir}/xdocs
+maven.docs.dest = ${maven.build.dir}/docs
+maven.docs.outputencoding = ISO-8859-1
+maven.docs.omitXmlDeclaration=false
+maven.gen.docs = ${maven.build.dir}/generated-xdocs
+
+
+# -------------------------------------------------------------------
+# M A V E N  L O C A L  R E P O 
+# -------------------------------------------------------------------
+
+maven.repo.local = ${maven.home.local}/repository
+
+# -------------------------------------------------------------------
+# M A V E N  P L U G - I N  D I R E C T O R Y
+# -------------------------------------------------------------------
+maven.plugin.dir = ${maven.home}/plugins
+maven.plugin.user.dir = ${maven.home.local}/plugins
+maven.plugin.unpacked.dir = ${maven.home.local}/cache
+
+# -------------------------------------------------------------------
+# M A V E N  R E M O T E  R E P O S
+# -------------------------------------------------------------------
+
+maven.repo.remote = http://www.ibiblio.org/maven
+# No longer default to publishing to ibiblio
+#maven.repo.central = login.ibiblio.org
+#maven.repo.central.directory = /public/html/maven
+maven.repo.remote.enabled = true
+maven.mode.online = true
+
+# -------------------------------------------------------------------
+# M A V E N  D I S T R I B U T I O N S
+# -------------------------------------------------------------------
+# DEPRECATED: remove
+maven.distBuildDirectory = ${basedir}/target
+maven.distBuildIndicator = DIST_BUILD_DIRECTORY
+maven.distDirectory = ${basedir}/dist
+
+# -------------------------------------------------------------------
+# E N V I R O N M E N T  D E P E N D E N T  T O O L S
+# -------------------------------------------------------------------
+maven.scp.executable = scp
+maven.ssh.executable = ssh
+maven.username=USERNAME_NOT_SET
+maven.remote.group=maven
+
+# DEPRECATED: remove
+maven.build = MAVEN_BUILD_NOT_SET
+

Added: branches/maven1/upstream/1.1~beta3/src/conf/driver.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/conf/driver.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/conf/driver.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<project
+  xmlns:j="jelly:core"
+  xmlns:ant="jelly:ant">
+
+    <!-- ================================================================== -->
+    <!-- D R I V E R  I N I T I A L I Z A T I O N                           -->
+    <!-- ================================================================== -->
+    <!-- All things we want to provide to all plugins, or processes we      -->
+    <!-- performed before every build are declared/defined here.            -->
+    <!-- ================================================================== -->
+
+    <j:set var="dir__" value="${pom.build.sourceDirectory}X"/>
+    <j:if test="${dir__ != 'X'}">
+      <ant:available
+        property="sourcesPresent"
+        file="${pom.build.sourceDirectory}"
+      />
+    </j:if>
+
+    <j:set var="dir__" value="${pom.build.unitTestSourceDirectory}X"/>
+    <j:if test="${dir__ != 'X'}">
+      <ant:available
+        property="unitTestSourcesPresent"
+        file="${pom.build.unitTestSourceDirectory}"
+      />
+    </j:if>
+
+    <ant:path id="maven-classpath">
+      <ant:fileset dir="${maven.home}/lib"/>
+    </ant:path>
+
+    <ant:path id="maven.compile.src.set">
+      <j:if test="${sourcesPresent == 'true'}">
+      <!--
+       | FIXME: It would be nice for other plugins to have the source available
+       |        as a fileset
+       |-->
+        <ant:pathelement location="${pom.build.sourceDirectory}"/>
+      </j:if>
+    </ant:path>
+
+    <j:if test="${unitTestSourcesPresent == 'true'}">
+      <ant:path id="maven.test.compile.src.set">
+        <ant:pathelement location="${pom.build.unitTestSourceDirectory}"/>
+      </ant:path>
+    </j:if>
+
+    <goal name="build:start">
+    </goal>
+
+    <goal name="build:end">
+    </goal>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/conf/driver.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/conf/driver.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/conf/driver.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# D R I V E R  P R O P E R T I E S
+# -------------------------------------------------------------------
+
+maven.final.name = ${pom.artifactId}-${pom.currentVersion}
+maven.final.dir = ${basedir}/${maven.final.name}
+
+
+# -------------------------------------------------------------------
+# Mark the defaults as loaded - PLEASE DON'T OVERRIDE
+# -------------------------------------------------------------------
+maven.defaults.loaded = true
+
+maven.application.version = @pom.currentVersion@

Added: branches/maven1/upstream/1.1~beta3/src/conf/links.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/conf/links.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/conf/links.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,20 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2005 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# For org.apache.maven.cli.App
+faqUrl=http://maven.apache.org/maven-1.x/faq.html
+usersMailingListUrl=http://www.mail-archive.com/users@maven.apache.org
+issueTrackingUrl=http://jira.codehaus.org/browse/MAVEN

Added: branches/maven1/upstream/1.1~beta3/src/conf/log4j.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/conf/log4j.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/conf/log4j.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,45 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# ------------------------------------------------------------------------
+# L O G 4 J  C O N F I G U R A T I O N
+# ------------------------------------------------------------------------
+# This is the log4j configuration file that is distributed with Maven.
+# ------------------------------------------------------------------------
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%m%n
+
+# ------------------------------------------------------------------------
+# R O O T  C A T E G O R Y
+# ------------------------------------------------------------------------
+log4j.rootCategory = ERROR, console
+
+# ------------------------------------------------------------------------
+# J E L L Y  T A G S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons.jelly.tags.log=INFO
+log4j.category.org.apache.commons.jelly.tags.ant=OFF
+
+# ------------------------------------------------------------------------
+# M A V E N
+# ------------------------------------------------------------------------
+log4j.category.org.apache.maven=INFO
+
+# ------------------------------------------------------------------------
+# C O M M O N S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons=WARN

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/before-install.nsh
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/installer/nsis/before-install.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/installer/nsis/before-install.nsh	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,2 @@
+     Call AssertJavaHome
+

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven-logo.bmp
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven-logo.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven-website.bmp
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven-website.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven.bmp
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/installer/nsis/maven.bmp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry-uninstall.nsh
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry-uninstall.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry-uninstall.nsh	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,4 @@
+  ; Remove $${MAVEN_HOME}
+  Push "MAVEN_HOME"
+  Call un.DeleteEnvStr
+

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry.nsh
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/installer/nsis/registry.nsh	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,10 @@
+  ; ${MAVEN_HOME}
+  Push "MAVEN_HOME"
+  Push "$INSTDIR"
+  Call WriteEnvStr
+
+  ; TODO - Add MAVEN_HOME to the path
+
+  ; TODO Prompt and write other environment variables to the Registry
+  ; WriteRegStr HKCU "Environment" "MAVEN_LOCAL_HOME" "$$INSTDIR"
+

Added: branches/maven1/upstream/1.1~beta3/src/installer/nsis/startmenu-shortcuts.nsh
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/installer/nsis/startmenu-shortcuts.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/installer/nsis/startmenu-shortcuts.nsh	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,12 @@
+; it would be nice to get all this from navigation.xml :-)
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Maven.lnk" "$INSTDIR\bin\maven.bat" "" "$INSTDIR\bin\maven.bat" 0
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Install Maven Repository.lnk" "$INSTDIR\bin\install_repo.bat" "" "$INSTDIR\install_repo.bat" 0
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Uninstall.lnk" "$INSTDIR\Uninst.exe" "" "$INSTDIR\Uninst.exe" 0
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Homepage.lnk" "http://maven.apache.org/"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\User Guide.lnk" "http://maven.apache.org/maven-1.x/reference/user-guide.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Core Plugins.lnk" "http://maven.apache.org/maven-1.x/reference/plugins/core-plugins.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Optional Plugins.lnk" "http://maven.apache.org/maven-1.x/reference/plugins/optional/optional.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Reference.lnk" "http://maven.apache.org/maven-1.x/reference/index.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Report a Bug.lnk" "http://jira.codehaus.org/secure/BrowseProject.jspa?id=10030"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Frequently Asked Questions.lnk" "http://maven.apache.org/faq.html"
+

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AbstractMavenComponent.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AbstractMavenComponent.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AbstractMavenComponent.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,89 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.project.Project;
+
+/**
+ * Base class from which all components in maven are derived.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: AbstractMavenComponent.java 426641 2006-07-28 18:36:45Z ltheussl $
+ */
+public abstract class AbstractMavenComponent
+{
+    /** Maven project. */
+    private Project project;
+
+    /** Default Constructor. */
+    public AbstractMavenComponent()
+    {
+    }
+
+    /**
+     * Create a component that uses a project
+     * @param aProject a Maven project
+     */
+    public AbstractMavenComponent( final Project aProject )
+    {
+        project = aProject;
+    }
+
+    /**
+     * set the project property
+     * @param aProject a Maven project
+     */
+    public void setProject( final Project aProject )
+    {
+        project = aProject;
+    }
+
+    /**
+     * @return the project property
+     */
+    public Project getProject()
+    {
+        return project;
+    }
+
+    /**
+     * Retrieve a user message.
+     *
+     * @param messageId Id of message type to use.
+     * @return Message for the user's locale.
+     * @see MavenUtils#getMessage
+     */
+    public String getMessage( final String messageId )
+    {
+        return MavenUtils.getMessage( messageId );
+    }
+
+    /**
+     * Retrieve a user message.
+     *
+     * @param messageId Id of message type to use.
+     * @param variable Value to substitute for ${1} in the given message.
+     * @return Message for the user's locale.
+     * @see MavenUtils#getMessage
+     */
+    public String getMessage( final String messageId, final Object variable )
+    {
+        return MavenUtils.getMessage( messageId, variable );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AntProjectBuilder.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AntProjectBuilder.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/AntProjectBuilder.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,62 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.tags.ant.AntTagLibrary;
+import org.apache.commons.jelly.tags.ant.GrantProject;
+import org.apache.commons.jelly.tags.ant.JellyPropsHandler;
+import org.apache.maven.jelly.JellyBuildListener;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Project;
+import org.apache.tools.ant.types.Path;
+
+/**
+ * A class to help create Ant projects
+ */
+public class AntProjectBuilder
+{
+    /**
+     * Initialize Ant.
+     * @param project a Maven project
+     * @param context the maven context whose properties will be available to the Ant Project
+     * @return an Ant project
+     */
+    public static GrantProject build( final Project project, final MavenJellyContext context )
+    {
+        // Create the build listener.
+        JellyBuildListener buildListener = new JellyBuildListener( context.getXMLOutput() );
+        buildListener.setDebug( context.getDebugOn().booleanValue() );
+        buildListener.setEmacsMode( context.getEmacsModeOn().booleanValue() );
+
+        // Create our ant project.
+        GrantProject antProject = new GrantProject();
+        antProject.setPropsHandler( new JellyPropsHandler( context ) );
+        antProject.init();
+        antProject.setBaseDir( project.getFile().getParentFile().getAbsoluteFile() );
+        antProject.addBuildListener( buildListener );
+
+        context.setAntProject( antProject );
+        AntTagLibrary.setProject( context, antProject );
+
+        Path p = new Path( antProject );
+        p.setPath( project.getDependencyClasspath() );
+        antProject.addReference( MavenConstants.DEPENDENCY_CLASSPATH, p );
+
+        return antProject;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/ArtifactListBuilder.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/ArtifactListBuilder.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/ArtifactListBuilder.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,90 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.project.Dependency;
+import org.apache.maven.project.Project;
+import org.apache.maven.repository.Artifact;
+import org.apache.maven.repository.DefaultArtifactFactory;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ */
+public class ArtifactListBuilder
+{
+    // --------------------------------------------------------------
+    // I M P L E M E N T A T I O N
+    // --------------------------------------------------------------
+
+    /**
+     * Create the list of artifacts for a project based on the stated dependencies
+     * taking into account any user specified overrides.
+     *
+     * @param project MavenSession project.
+     * @return the list of artifacts for a project
+     */
+    public static List build( final Project project )
+    {
+        List projectArtifacts = new ArrayList();
+        boolean mavenJarOverride = project.getContext().getMavenJarOverride().booleanValue();
+
+        for ( Iterator i = project.getDependencies().iterator(); i.hasNext(); )
+        {
+            Dependency d = (Dependency) i.next();
+            String mavenJarProperty = project.getContext()
+                .getMavenJarOverride( Project.standardToLegacyId( d.getId() ) );
+            Artifact artifact = DefaultArtifactFactory.createArtifact( d );
+
+            if ( mavenJarOverride && StringUtils.isNotEmpty( mavenJarProperty ) )
+            {
+                // The jar override option has been set and we have a property
+                // for the this dependency so override the path with the user
+                // specified value.
+                if ( Character.isDigit( mavenJarProperty.charAt( 0 ) ) || "SNAPSHOT".equals( mavenJarProperty ) )
+                {
+                    // User is requesting a specific version of a dependency
+                    // be used.
+                    d.setVersion( mavenJarProperty );
+                    artifact.setPath( project.getContext().getMavenRepoLocal() + artifact.generatePath() );
+                    artifact.setOverrideType( Artifact.OVERRIDE_VERSION );
+                }
+                else
+                {
+                    // User is requesting a specific path to a dependency
+                    // be used.
+                    artifact.setPath( new File( mavenJarProperty ).getAbsolutePath() );
+                    artifact.setOverrideType( Artifact.OVERRIDE_PATH );
+                }
+            }
+            else
+            {
+                artifact.setPath( project.getContext().getMavenRepoLocal() + artifact.generatePath() );
+            }
+
+            projectArtifacts.add( artifact );
+        }
+
+        return projectArtifacts;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/DependencyClasspathBuilder.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/DependencyClasspathBuilder.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/DependencyClasspathBuilder.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,70 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Iterator;
+
+import org.apache.maven.project.Dependency;
+import org.apache.maven.project.Project;
+import org.apache.maven.repository.Artifact;
+
+/**
+ * Take a valid MavenJellyContext which contains references to the POM, ant
+ * project, and all defined properties and create the dependency classpath based
+ * on dependencies listed in the POM. We also push the individual paths of each
+ * of the dependencies back into the POM so that they can later be referenced in
+ * maven.xml files and plugin.jelly files.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:dlr at finemaltcoding.com">Daniel Rall</a>
+ *
+ * @version $Id: DependencyClasspathBuilder.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class DependencyClasspathBuilder
+{
+    /** path separator for the classpath */
+    private static final String cps = System.getProperty( "path.separator" );
+
+    // --------------------------------------------------------------
+    // I M P L E M E N T A T I O N
+    // --------------------------------------------------------------
+
+    /**
+     * @return the dependency classpath for the given project.
+     * @param project the project to create the classpath for.
+     */
+    public static String build( Project project )
+    {
+        StringBuffer classpath = new StringBuffer();
+
+        for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
+        {
+            Artifact artifact = (Artifact) i.next();
+            Dependency d = artifact.getDependency();
+
+            // Only add jar or ejb (MAVEN-512) dependencies to the classpath
+            if ( d.isAddedToClasspath() )
+            {
+                classpath.append( artifact.getPath() ).append( cps );
+            }
+            project.setDependencyPath( d.getKey(), artifact.getPath() );
+        }
+
+        return classpath.toString();
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/GoalException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/GoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/GoalException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ * A generic exception related to Maven and goal acquisition
+ *
+ * @author <a href="mailto:bwalding at apache.org">Ben Walding</a>
+ * @version $Id: GoalException.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class GoalException
+    extends MavenException
+{
+    /** Construct with an generic message.
+     *
+     *  @param message The message.
+     */
+    public GoalException( String message )
+    {
+        super( message );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenConstants.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenConstants.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenConstants.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,178 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ * MavenSession constants.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: MavenConstants.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenConstants
+{
+    /**
+     * This is an internal version for MavenSession self updating
+     * procedures. A MavenSession installation can query a MavenSession
+     * installation distributor to see if it is up-to-date
+     * and self-update if required.
+     */
+    public static final int MAVEN_VERSION = 3;
+
+    /**
+     * This is the version of the POM that this version of
+     * MavenSession operates with. If a descrepancy is found between
+     * the version of the POM being used and the version of
+     * the POM that this version of MavenSession can deal with then
+     * the POM will be transformed into compliance.
+     */
+    public static final int POM_VERSION = 3;
+
+    /** Online tag. */
+    public static final String ONLINE = "maven.mode.online";
+
+    /** Jar Override tag. */
+    public static final String JAR_OVERRIDE = "maven.jar.override";
+
+    /** Jar Override property tag. */
+    public static final String JAR_OVERRIDE_PROPERTY = "maven.jar.";
+
+    /** Local Repository tag. */
+    public static final String REPO_LOCAL = "maven.repo.local";
+
+    /** Local Repository tag. */
+    public static final String REPO_REMOTE = "maven.repo.remote";
+
+    /** Local Repository enabled tag. */
+    public static final String REPO_REMOTE_ENABLED = "maven.repo.remote.enabled";
+
+    /** Proxy host tag. */
+    public static final String PROXY_HOST = "maven.proxy.host";
+
+    /** Proxy port tag. */
+    public static final String PROXY_PORT = "maven.proxy.port";
+
+    /** Proxy user name tag. */
+    public static final String PROXY_USERNAME = "maven.proxy.username";
+
+    /** Proxy password tag. */
+    public static final String PROXY_PASSWORD = "maven.proxy.password";
+
+    /** Proxy loginHost tag. */
+    public static final String PROXY_NTLM_HOST = "maven.proxy.ntlm.host";
+
+    /** Proxy loginDomain tag. */
+    public static final String PROXY_NTLM_DOMAIN = "maven.proxy.ntlm.domain";
+
+    /** Non-proxied hosts. */
+    public static final String PROXY_NONPROXYHOSTS = "maven.proxy.nonProxyHosts";
+
+    /** Download meter type variable. */
+    public static final String DOWNLOAD_METER = "maven.download.meter";
+
+    /** Snapshot JAR signifier tag. */
+    public static final String SNAPSHOT_SIGNIFIER = "SNAPSHOT";
+
+    /** Driver properties */
+    public static final String DRIVER_PROPERTIES = "/driver.properties";
+
+    /**  Project build file name. (maven.xml) */
+    public static final String BUILD_FILE_NAME = "maven.xml";
+
+    /** Defaults goal name property. */
+    public static final String DEFAULT_GOAL = "maven.default.goal";
+
+    /** Defaults properties */
+    public static final String DEFAULTS_PROPERTIES = "/defaults.properties";
+
+    // Context tags.
+
+    /** MavenSession home context tag **/
+    public static final String MAVEN_HOME = "maven.home";
+
+    /** MavenSession home local context tag **/
+    public static final String MAVEN_HOME_LOCAL = "maven.home.local";
+
+    /** MavenSession plugins context tag **/
+    public static final String MAVEN_PLUGINS_DIR = "maven.plugin.dir";
+
+    /** MavenSession unpacked plugins context tag **/
+    public static final String MAVEN_UNPACKED_PLUGINS_DIR = "maven.plugin.unpacked.dir";
+
+    /** MavenSession local plugins context tag **/
+    public static final String MAVEN_USER_PLUGINS_DIR = "maven.plugin.user.dir";
+
+    /** MavenSession build file url context tag **/
+    public static final String MAVEN_BUILD_FILE_URL = "maven.project.buildFile.url";
+
+    /** MavenSession ant project context tag **/
+    public static final String MAVEN_ANT_PROJECT = "maven.ant.project";
+
+    /** MavenSession POM context tag **/
+    public static final String MAVEN_POM = "pom";
+
+    /** MavenSession goals context tag **/
+    public static final String MAVEN_GOALS = "maven.goals";
+
+    /** MavenSession project verifier context tag **/
+    public static final String MAVEN_PROJECT_VERIFIER = "maven.project.verifier";
+
+    /** Werkz project context tag **/
+    public static final String WERKZ_PROJECT = "org.apache.commons.jelly.werkz.Project";
+
+    /** Reactor projects context tag **/
+    public static final String REACTOR_PROJECT = "maven.reactorProjects";
+
+    /** Plugin Manager tag. */
+    public static final String PLUGIN_MANAGER = "maven.plugin.manager";
+
+    /** Jelly XMLOutput tag. */
+    public static final String XML_OUTPUT = "maven.xmlOutput";
+
+    /** MavenSession debug flag tag. */
+    public static final String DEBUG_ON = "maven.debugOn";
+
+    /** MavenSession debug flag tag. */
+    public static final String EMACS_MODE_ON = "maven.emacsModeOn";
+
+    /**  Descriptor directory tag. (project.xml) */
+    public static final String DESCRIPTOR_DIRECTORY = "maven.descriptorDirectory";
+
+    /**  Project build file tag. (maven.xml) */
+    public static final String BUILD_FILE = "maven.projectBuildFile";
+
+    /**  Project descriptor file tag. (project.xml) */
+    public static final String DESCRIPTOR_FILE = "maven.descriptorFile";
+
+    /**  Dependency classpath tag. */
+    public static final String DEPENDENCY_CLASSPATH = "maven.dependency.classpath";
+
+    /**  Dependency classpath tag. */
+    public static final String SESSION = "maven.session";
+
+    /** Reactor/Maven subproject Build failure  tag. */
+    public static final String BUILD_FAILURE = "maven.build.failure";
+
+    /** Reactor/Maven subproject Build failure project list tag. */
+    public static final String FAILED_PROJECTS = "failedProjects";
+
+    /** Maven compile sourceroots. */
+    public static final String COMPILE_SOURCEROOTS = "compile.sourceroots";
+
+    /** Maven test compile sourceroots. */
+    public static final String TEST_COMPILE_SOURCEROOTS = "test.compile.sourceroots";
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,142 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+ * The base class for all exceptions thrown by MavenSession. Taken liberally from
+ * <a href="http://ant.apache.org/">Ant's</a> BuildException
+ *
+ * @version $Id: MavenException.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenException
+    extends Exception
+{
+
+    /** Exception that might have caused this one. */
+    private Throwable cause;
+
+    /**
+     * Creates a new instance of <code>MavenException</code> without detail
+     * message.
+     */
+    public MavenException()
+    {
+    }
+
+    /**
+     * Constructs an instance of <code>MavenException</code> with the specified
+     * detail message.
+     *
+     * @param msg the detail message.
+     */
+    public MavenException( String msg )
+    {
+        super( msg );
+    }
+
+    /**
+     * Constructs an exception with the given message and exception as
+     * a root cause.
+     *
+     * @param message A description of or information about the exception.
+     *            Should not be <code>null</code> unless a cause is specified.
+     * @param cause The exception that might have caused this one.
+     *              May be <code>null</code>.
+     */
+    public MavenException( String message, Throwable cause )
+    {
+        super( message );
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs an exception with the given exception as a root cause.
+     *
+     * @param cause The exception that might have caused this one.
+     *              Should not be <code>null</code>.
+     */
+    public MavenException( Throwable cause )
+    {
+        super( cause.toString() );
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the nested exception, if any.
+     *
+     * @return the nested exception, or <code>null</code> if no
+     *         exception is associated with this one
+     */
+    public Throwable getException()
+    {
+        return cause;
+    }
+
+    /**
+     * Prints the stack trace for this exception and any
+     * nested exception to <code>System.err</code>.
+     */
+    public void printStackTrace()
+    {
+        printStackTrace( System.err );
+    }
+
+    /**
+     * Prints the stack trace of this exception and any nested
+     * exception to the specified PrintStream.
+     *
+     * @param ps The PrintStream to print the stack trace to.
+     *           Must not be <code>null</code>.
+     */
+    public void printStackTrace( PrintStream ps )
+    {
+        synchronized ( ps )
+        {
+            super.printStackTrace( ps );
+            if ( cause != null )
+            {
+                ps.println( "--- Nested Exception ---" );
+                cause.printStackTrace( ps );
+            }
+        }
+    }
+
+    /**
+     * Prints the stack trace of this exception and any nested
+     * exception to the specified PrintWriter.
+     *
+     * @param pw The PrintWriter to print the stack trace to.
+     *           Must not be <code>null</code>.
+     */
+    public void printStackTrace( PrintWriter pw )
+    {
+        synchronized ( pw )
+        {
+            super.printStackTrace( pw );
+            if ( cause != null )
+            {
+                pw.println( "--- Nested Exception ---" );
+                cause.printStackTrace( pw );
+            }
+        }
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenSession.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenSession.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenSession.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,302 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.project.Project;
+
+/**
+ * This class should represent the single place to access everything that
+ * MavenSession provides and control any options provided by MavenSession. Currently
+ * this is not entirely the case: there are bits of logic that need to
+ * be moved out of App.java and some code that needs to be shuffled
+ * between the PluginManager and MavenSession proper.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: MavenSession.java 426641 2006-07-28 18:36:45Z ltheussl $
+ *
+ * @todo Filter the MavenSession version number into a Java constant that will change
+ *       during compilation.
+ */
+
+// This is the mediator and main point of entry for the guts of maven.
+public class MavenSession
+    extends AbstractMavenComponent
+{
+    // ------------------------------------------------------------
+    // C O N S T A N T S
+    // ------------------------------------------------------------
+
+    /** Tag for build start goal. */
+    public static final String BUILD_START_GOAL = "build:start";
+
+    /** Tag for build end goal. */
+    public static final String BUILD_END_GOAL = "build:end";
+
+    /** Initialization jellyscript name. */
+    public static final String DRIVER_SCRIPT_NAME = "driver.jelly";
+
+    // ------------------------------------------------------------
+    // C L A S S  M E M B E R S
+    // ------------------------------------------------------------
+
+    /** globals across projects */
+    private MavenJellyContext rootContext;
+
+    /** top level project file */
+    private static File rootDescriptorFile;
+
+    /** top level project */
+    private Project rootProject;
+
+    /** plugin manager across projects */
+    private PluginManager pluginManager;
+
+    /** Default Constructor. */
+    public MavenSession()
+    {
+        pluginManager = new PluginManager( this );
+        //goalNames.add( BUILD_START_GOAL );
+    }
+
+    // ------------------------------------------------------------
+    // A C C E S S O R S
+    // ------------------------------------------------------------
+
+    /**
+     * Set the context for the session
+     * @param context the context to use
+     */
+    public void setRootContext( MavenJellyContext context )
+    {
+        rootContext = context;
+    }
+
+    /**
+     * @return the root context for the session
+     */
+    public MavenJellyContext getRootContext()
+    {
+        return rootContext;
+    }
+
+    /**
+     * Set the top level project for the session
+     * @param descriptorFile the POM for the top level project
+     */
+    public static void setRootDescriptorFile( File descriptorFile )
+    {
+        rootDescriptorFile = descriptorFile;
+    }
+
+    /**
+     * @return the top level project for the session
+     */
+    public static File getRootDescriptorFile()
+    {
+        return rootDescriptorFile;
+    }
+
+    /**
+     * Set the top level project object for the session
+     * @param project the top level project
+     */
+    public void setRootProject( Project project )
+    {
+        rootProject = project;
+    }
+
+    /**
+     * @return the top level project object for the session
+     */
+    public Project getRootProject()
+    {
+        return rootProject;
+    }
+
+    /**
+     * Set the plugin manager to handle plugin loading for the session
+     * @param pluginManager a plugin manager
+     */
+    public void setPluginManager( PluginManager pluginManager )
+    {
+        this.pluginManager = pluginManager;
+    }
+
+    /**
+     * @return the plugin manager for the session
+     */
+    public PluginManager getPluginManager()
+    {
+        return pluginManager;
+    }
+
+    // ------------------------------------------------------------
+    // I M P L E M E N T A T I O N
+    // ------------------------------------------------------------
+
+    /** Perform pre-build initialization.
+     *
+     *  @throws Exception If an error occurs while performing
+     *          runtime initialization.
+     */
+    public void initialize()
+        throws Exception
+    {
+        // THIS NEEDS TO BE SET
+        getRootContext().setMavenSession( this );
+
+        initializePluginManager();
+        initializeRootProject();
+    }
+
+    /**
+     * Return all goals requested to be attained.
+     *
+     * @return All goal names.
+     */
+    public Set getAllGoalNames()
+    {
+        return getPluginManager().getGoalNames();
+    }
+
+    /**
+     * Get a given goal's description.
+     *
+     * @param goalName Goal name to get the description for.
+     * @return Goal description.
+     */
+    public String getGoalDescription( String goalName )
+    {
+        return getPluginManager().getGoalDescription( goalName );
+    }
+
+    /** Initialize all plugins.
+     *
+     *  @throws Exception If an error occurs while initializing
+     *          any plugin.
+     */
+    private void initializePluginManager()
+        throws Exception
+    {
+        getPluginManager().initialize();
+    }
+
+    /**
+     * Load the mavenSession project descriptor.
+     *
+     * @throws MavenException If there is an error while
+     *          reading the project descriptor.
+     */
+    private void initializeRootProject()
+        throws MavenException
+    {
+        File descriptorFile = getRootDescriptorFile();
+
+        if ( descriptorFile.exists() )
+        {
+            if ( descriptorFile.length() == 0 )
+            {
+                throw new MavenException( MavenUtils.getMessage( "empty.descriptor.error", descriptorFile.getName() ) );
+            }
+
+            // Now we want to use the root context as the parent context because
+            // it has all the global values needed by all projects. The root context
+            // created within MavenUtils.getProject(f) is almost identical to the root context
+            // because in both cases they are created with MavenUtils.createContext(d)
+            // but the root context has addition values set from from values based
+            // on options present on the command line.
+            setRootProject( MavenUtils.getProject( descriptorFile, getRootContext() ) );
+        }
+        else
+        {
+            // A type of null pattern. We don't really have a root project per se
+            // but want the rest of the system to believe there is for consistency
+            // in the rest of the code.
+            Project globalProject = new Project();
+            globalProject.setId( "Global Project" );
+            // even though it doesn't exist, we need something to
+            globalProject.setFile( descriptorFile );
+
+            // We need to set the project of the root context so the plugin manager
+            // has a project to run jelly scripts against.
+            getRootContext().setProject( globalProject );
+
+            globalProject.setContext( getRootContext() );
+            setRootProject( globalProject );
+        }
+    }
+
+    /**
+     *  Attain a list of goals.
+     *
+     * @param project the project being processed
+     * @param goals a list of goal names to execute
+     * @throws Exception when anything goes wrong
+     * @todo don't throw exception
+     */
+    public void attainGoals( final Project project, final List goals )
+        throws Exception
+    {
+        pluginManager.attainGoals( project, goals );
+    }
+
+    /**
+     *  Returns a plugin project for the given goal.
+     *
+     * @param goal a goal name
+     * @return Project
+     * @throws MavenException when anything goes wrong
+     */
+    public Project getPluginProjectFromGoal( String goal )
+        throws MavenException
+    {
+        return pluginManager.getPluginProjectFromGoal( goal );
+    }
+
+    /**
+     * Return the goals for the given project.
+     *
+     * @param project A project
+     * @return A set of goals
+     * @throws MavenException when anything goes wrong
+     */
+    public Set getProjectGoals( Project project )
+        throws MavenException
+    {
+        return pluginManager.getGoalNames( project );
+    }
+
+    /**
+     * Return the current list of plugins.
+     *
+     * @return Collection
+     */
+    public Collection getPluginList()
+    {
+        return pluginManager.getPluginList();
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenUtils.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/MavenUtils.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,950 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.beans.IntrospectionException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.commons.jelly.JellyContext;
+import org.apache.commons.jelly.expression.CompositeExpression;
+import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.jelly.expression.jexl.JexlExpressionFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.jelly.JellyUtils;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Project;
+import org.apache.tools.ant.DirectoryScanner;
+import org.codehaus.plexus.util.CollectionUtils;
+import org.codehaus.plexus.util.StringUtils;
+import org.xml.sax.SAXException;
+
+import com.werken.forehead.ForeheadClassLoader;
+
+/**
+ * Utilities for reading maven project descriptors, profile descriptors and
+ * workspace descriptors.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ *
+ * @todo Remove all the context creation code and make a ContextBuilder class.
+ * @todo [RC2] split getProject (project.properties + defaults) != getPluginProject (plugin.properties only)
+ */
+public class MavenUtils
+{
+    /** Log. */
+    private static final Log log = LogFactory.getLog( MavenUtils.class );
+
+    /** Map of loaded POMs. */
+    private static HashMap parentPoms = new HashMap();
+
+    /** Maven unknown error message. */
+    public static final String MAVEN_UNKNOWN_ERROR = "Unknown error reading project";
+
+    /**
+     * Create a Project object given a file descriptor.
+     *
+     * @param projectDescriptor a maven project.xml
+     * @return the Maven project object for the given project descriptor
+     * @throws MavenException when any errors occur
+     */
+    public static Project getProject( File projectDescriptor )
+        throws MavenException
+    {
+        return getProject( projectDescriptor, null );
+    }
+
+    /**
+     * Create a Project object given a file descriptor, and a parent context
+     * @param projectDescriptor The file to create the project from
+     * @param parentContext the parent Maven Jelly Context
+     * @return a new Project
+     * @throws MavenException when any error happens.
+     */
+    public static Project getProject( File projectDescriptor, MavenJellyContext parentContext )
+        throws MavenException
+    {
+        return getProject( projectDescriptor, parentContext, true );
+    }
+
+    /**
+     * Create a Project object given a file descriptor and optionally a parent Jelly
+     * context.
+     *
+     * @param projectDescriptor a maven project.xml {@link File}
+     * @param parentContext the parent context for the new project
+     * @param useParentPom whether a parent project should be respected
+     * @return the MavenSession project object for the given project descriptor
+     * @throws MavenException when any errors occur
+     */
+    public static Project getProject( File projectDescriptor, MavenJellyContext parentContext, boolean useParentPom )
+        throws MavenException
+    {
+        Project project = null;
+        try
+        {
+            project = getNonJellyProject( projectDescriptor, parentContext, useParentPom );
+            project = getJellyProject( project );
+            project.setFile( projectDescriptor );
+
+            // Fully initialize the project.
+            project.initialize();
+        }
+        catch ( IntrospectionException e )
+        {
+            throw new MavenException( "Error creating a string from the project", e );
+        }
+        catch ( IOException e )
+        {
+            throw new MavenException( "Error reading XML or initializing", e );
+        }
+        catch ( ParserConfigurationException e )
+        {
+            throw new MavenException( "Error creating a JAXP Parser", e );
+        }
+        catch ( SAXException e )
+        {
+            throw new MavenException( "Error parsing XML", e );
+        }
+        catch ( MavenException e )
+        {
+            throw new MavenException( e.getMessage(), e );
+        }
+        catch ( Exception e )
+        {
+            // FIXME
+            throw new MavenException( MAVEN_UNKNOWN_ERROR, e );
+        }
+
+        return project;
+    }
+
+    /**
+     *  Get a project, but not a Jelly-ised project. ie Don't evaluate the
+     *  variables. We are doing several things when creating a POM object, the phases
+     * are outlined here:
+     *
+     * 1) The project.xml file is read in using betwixt which creates for us a
+     *    Project object that, at this point, has not been run through Jelly i.e.
+     *    no interpolation has occured yet.
+     *
+     * 2) The context for the project is created and set. So each project manages its
+     *    own context. See the createContext() method for the details context creation
+     *    process.
+     *
+     * 3) We check to see if the &lt;extend&gt; tag is being employed. If so, the parent
+     *    project.xml file is read in. At this point we have a child and parent POM
+     *    and the values are merged where the child's values override those of the
+     *    parent.
+     * @param projectDescriptor the project file
+     * @param parentContext the parent context for the new project
+     * @param useParentPom whether a parent project should be respected
+     * @return the project
+     * @throws MavenException when there are errors reading the descriptor
+     * @throws IOException when resolving file names and paths
+     */
+    private static Project getNonJellyProject( File projectDescriptor, MavenJellyContext parentContext,
+                                               boolean useParentPom )
+        throws MavenException, IOException
+    {
+        // 1)
+        Project project = null;
+        FileReader fr = null;
+        try
+        {
+            fr = new FileReader( projectDescriptor );
+            project = new Project( fr );
+        }
+        catch ( Exception e )
+        {
+            throw new MavenException( "Error parsing project.xml '" + projectDescriptor.getAbsolutePath() + "'", e );
+        }
+        finally
+        {
+            if ( fr != null )
+            {
+                try
+                {
+                    fr.close();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "WARNING: Cannot close stream!", e );
+                }
+                fr = null;
+            }
+        }
+
+        // 2)
+        MavenJellyContext context = MavenUtils.createContextNoDefaults( projectDescriptor.getParentFile(),
+                                                                        parentContext );
+
+        // 3)
+        String pomToExtend = project.getExtend();
+
+        if ( pomToExtend != null && useParentPom )
+        {
+            // We must look in the <extend/> element for expressions that may be present as
+            //
+            // <extend>../project.xml</extend>
+            Expression e = JellyUtils.decomposeExpression( pomToExtend, context );
+            pomToExtend = e.evaluateAsString( context );
+            pomToExtend = MavenUtils.makeAbsolutePath( projectDescriptor.getParentFile(), pomToExtend );
+            project.setExtend( pomToExtend );
+
+            File parentPom = new File( pomToExtend );
+            parentPom = parentPom.getCanonicalFile();
+            if ( !parentPom.exists() )
+            {
+                throw new FileNotFoundException( "Parent POM not found: " + parentPom );
+            }
+
+            String parentPomPath = parentPom.getPath();
+            if ( parentPomPath.equals( projectDescriptor.getCanonicalPath() ) )
+            {
+                throw new MavenException( "Parent POM is equal to the current POM" );
+            }
+
+            Project parent = (Project) parentPoms.get( parentPomPath );
+            if ( parent == null )
+            {
+                parent = getNonJellyProject( parentPom, parentContext, true );
+                parent.setFile( parentPom );
+                parentPoms.put( parentPom.getCanonicalPath(), parent );
+                context.setParent( parent.getContext() );
+            }
+
+            // Map in the parent context which already has the properties loaded
+            integrateMapInContext( parent.getContext().getVariables(), context );
+
+            project.mergeParent( parent );
+        }
+
+        project.resolveIds();
+
+        applyDefaults( context );
+
+        // Set the created context, and put the project itself in the context. This
+        // is how we get the ${pom} reference in the project.xml file to work.
+        project.setContext( context );
+        context.setProject( project );
+
+        return project;
+    }
+
+    /**
+     * This is currently used for the reactor but may be generally useful.
+     *
+     * @param directory the directory to scan for maven projects
+     * @param includes the pattern that matches a project that you want included
+     * @param excludes the pattern that matches a project that you don't want included
+     * @return a {link List} of {@link Project}s
+     * @throws MavenException when anything goes wrong.
+     */
+    public static List getProjects( File directory, String includes, String excludes )
+        throws MavenException
+    {
+        return getProjects( directory, includes, excludes, null );
+    }
+
+    /**
+     * This is currently used for the reactor but may be generally useful.
+     *
+     * @param directory the directory to scan for maven projects
+     * @param includes Patterns to include.
+     * @param excludes Patterns to exclude.
+     * @param context  the parent context
+     * @return a {link List} of {@link Project}s
+     * @throws MavenException when anything goes wrong.
+     */
+    public static List getProjects( File directory, String includes, String excludes, MavenJellyContext context )
+        throws MavenException
+    {
+        String[] files = getFiles( directory, includes, excludes );
+
+        List projects = new ArrayList();
+
+        for ( int i = 0; i < files.length; i++ )
+        {
+            Project p = getProject( new File( files[i] ), context );
+            projects.add( p );
+        }
+
+        return projects;
+    }
+
+    /**
+     * Take the POM and interpolate the value of the project's context to create
+     * a new version of the POM with expanded context values.
+     *
+     * @param project the maven POM
+     * @return Jelly interpolated project.
+     * @throws Exception when there are errors reading FIXME
+     */
+    private static Project getJellyProject( Project project )
+        throws Exception
+    {
+        // Keep a copy of the original context
+        MavenJellyContext originalContext = project.getContext();
+
+        // We don't want any taglib references in the context or Jelly
+        // gets confused. All we want are the variables for interpolation. We
+        // can change this but I think we would like to avoid general Jelly
+        // idiom in the POM anyway.
+        JellyContext context = new JellyContext();
+        JellyUtils.populateVariables( context, originalContext );
+
+        // We don't want the context or the parent being written out into the XML which
+        // is the interpolated POM.
+        project.setContext( null );
+        Project parent = project.getParent();
+        project.setParent( null );
+
+        // Interpolate
+        project = getInterpolatedPOM( project, context );
+
+        // Restore parent and context
+        project.setParent( parent );
+        project.setContext( originalContext );
+        project.getContext().setProject( project );
+
+        return project;
+    }
+
+    /**
+     * Get the POM with all variables resolved.
+     * @param project the project to resolve
+     * @param context the context to retrieve variables from
+     * @return a project with no unresolved elements.
+     * @throws Exception if there is an error parsing the project FIXME
+     */
+    private static Project getInterpolatedPOM( Project project, JellyContext context )
+        throws Exception
+    {
+        String projectString = project.getProjectAsString();
+        Expression e = JellyUtils.decomposeExpression( projectString, context );
+        String newProjectString = e.evaluateAsString( context );
+        project = new Project( new StringReader( newProjectString ) );
+        return project;
+    }
+
+    /**
+     * Get a set of files from a specifed directory with a set of includes.
+     *
+     * @param directory Directory to scan.
+     * @param includes Comma separated list of includes.
+     * @return files
+     */
+    public static String[] getFiles( File directory, String includes )
+    {
+        return getFiles( directory, includes, null );
+    }
+
+    /**
+     * Get a set of files from a specifed directory with a set of includes.
+     *
+     * @param directory Directory to scan.
+     * @param includes Comma separated list of includes.
+     * @param excludes Comma separated list of excludes.
+     * @return files
+     */
+    public static String[] getFiles( File directory, String includes, String excludes )
+    {
+        String[] includePatterns = null;
+        if ( includes != null )
+        {
+            includePatterns = StringUtils.split( includes, "," );
+        }
+
+        String[] excludePatterns = null;
+        if ( excludes != null )
+        {
+            excludePatterns = StringUtils.split( excludes, "," );
+        }
+
+        DirectoryScanner directoryScanner = new DirectoryScanner();
+        directoryScanner.setBasedir( directory );
+        directoryScanner.setIncludes( includePatterns );
+        directoryScanner.setExcludes( excludePatterns );
+        directoryScanner.scan();
+        String[] files = directoryScanner.getIncludedFiles();
+
+        for ( int i = 0; i < files.length; i++ )
+        {
+            files[i] = new File( directory, files[i] ).getAbsolutePath();
+        }
+
+        return files;
+    }
+
+    /**
+     * Take a dominant and recessive Map and merge the key:value
+     * pairs where the recessive Map may add key:value pairs to the dominant
+     * Map but may not override any existing key:value pairs.
+     *
+     * If we have two Maps, a dominant and recessive, and
+     * their respective keys are as follows:
+     *
+     *  dominantMapKeys = { a, b, c, d, e, f }
+     * recessiveMapKeys = { a, b, c, x, y, z }
+     *
+     * Then the result should be the following:
+     *
+     * resultantKeys = { a, b, c, d, e, f, x, y, z }
+     *
+     * @param dominantMap Dominant Map.
+     * @param recessiveMap Recessive Map.
+     * @return The result map with combined dominant and recessive values.
+     */
+    public static Map mergeMaps( Map dominantMap, Map recessiveMap )
+    {
+        Map result = new HashMap();
+
+        if ( dominantMap == null && recessiveMap == null )
+        {
+            return null;
+        }
+
+        if ( dominantMap != null && recessiveMap == null )
+        {
+            return dominantMap;
+        }
+
+        if ( dominantMap == null )
+        {
+            return recessiveMap;
+        }
+
+        // Grab the keys from the dominant and recessive maps.
+        Set dominantMapKeys = dominantMap.keySet();
+        Set recessiveMapKeys = recessiveMap.keySet();
+
+        // Create the set of keys that will be contributed by the
+        // recessive Map by subtracting the intersection of keys
+        // from the recessive Map's keys.
+        Collection contributingRecessiveKeys = CollectionUtils.subtract( recessiveMapKeys, CollectionUtils
+            .intersection( dominantMapKeys, recessiveMapKeys ) );
+
+        result.putAll( dominantMap );
+
+        // Now take the keys we just found and extract the values from
+        // the recessiveMap and put the key:value pairs into the dominantMap.
+        for ( Iterator i = contributingRecessiveKeys.iterator(); i.hasNext(); )
+        {
+            Object key = i.next();
+            result.put( key, recessiveMap.get( key ) );
+        }
+
+        return result;
+    }
+
+    /**
+     * Take a series of <code>Map</code>s and merge
+     * them where the ordering of the array from 0..n
+     * is the dominant order.
+     *
+     * @param maps An array of Maps to merge.
+     * @return Map The result Map produced after the merging process.
+     */
+    public static Map mergeMaps( Map[] maps )
+    {
+        Map result;
+
+        if ( maps.length == 0 )
+        {
+            result = null;
+        }
+        else if ( maps.length == 1 )
+        {
+            result = maps[0];
+        }
+        else
+        {
+            result = mergeMaps( maps[0], maps[1] );
+
+            for ( int i = 2; i < maps.length; i++ )
+            {
+                result = mergeMaps( result, maps[i] );
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Load the build.properties file for a project.
+     * @param directory the directory of the project
+     * @return the properties
+     */
+    private static Properties loadProjectBuildProperties( File directory )
+    {
+        // project build properties
+        File projectBuildPropertiesFile = new File( directory, "build.properties" );
+
+        log.debug( "Using projectBuildPropertiesFile: " + projectBuildPropertiesFile.getAbsolutePath() );
+        return loadProperties( projectBuildPropertiesFile );
+    }
+
+    /**
+     * Load the project.properties file for a project.
+     * @param directory the directory of the project
+     * @return the properties
+     */
+    private static Properties loadProjectProperties( File directory )
+    {
+        // project properties
+        File projectPropertiesFile = new File( directory, "project.properties" );
+
+        log.debug( "Using projectPropertiesFile: " + projectPropertiesFile.getAbsolutePath() );
+        return loadProperties( projectPropertiesFile );
+    }
+
+    /**
+     * Create a jelly context given a descriptor directory.
+     *
+     * @param descriptorDirectory The directory from which to pull the standard maven
+     * properties files from.
+     * @return The generated maven based on the contents of the standard maven
+     * properties files.
+     */
+    public static MavenJellyContext createContext( File descriptorDirectory )
+    {
+        return createContext( descriptorDirectory, null );
+    }
+
+    /**
+     * Create a jelly context given a descriptor directory and parent
+     * jelly context.
+     *
+     * @param descriptorDirectory The directory from which to pull the standard maven
+     * properties files from.
+     * @param parentContext The parent jelly context.
+     * @todo should premerge driver, etc if they are being kept
+     * @return The generated maven based on the contents of the standard maven
+     * properties files.
+     */
+    public static MavenJellyContext createContext( File descriptorDirectory, MavenJellyContext parentContext )
+    {
+        MavenJellyContext context = createContextNoDefaults( descriptorDirectory, parentContext );
+        applyDefaults( context );
+        return context;
+    }
+
+    /**
+     * Create a jelly context given a descriptor directory and parent
+     * jelly context, but don't apply any defaults.
+     *
+     * @param descriptorDirectory The directory from which to pull the standard maven
+     * properties files from.
+     * @param parentContext The parent jelly context.
+     * @todo should premerge driver, etc if they are being kept
+     * @return The generated maven based on the contents of the standard maven
+     * properties files.
+     */
+    private static MavenJellyContext createContextNoDefaults( File descriptorDirectory, MavenJellyContext parentContext )
+    {
+        // System properties
+        Properties systemProperties = System.getProperties();
+
+        // User build properties
+        File userBuildPropertiesFile = new File( System.getProperty( "user.home" ), "build.properties" );
+
+        log.debug( "Using userBuildPropertiesFile: " + userBuildPropertiesFile.getAbsolutePath() );
+        Properties userBuildProperties = loadProperties( userBuildPropertiesFile );
+
+        Properties projectProperties = loadProjectProperties( descriptorDirectory );
+        Properties projectBuildProperties = loadProjectBuildProperties( descriptorDirectory );
+
+        Properties driverProperties = loadProperties( MavenUtils.class
+            .getResourceAsStream( MavenConstants.DRIVER_PROPERTIES ) );
+
+        Map result = MavenUtils.mergeMaps( new Map[] {
+            systemProperties,
+            userBuildProperties,
+            projectBuildProperties,
+            projectProperties,
+            driverProperties } );
+
+        MavenJellyContext context;
+
+        if ( parentContext != null )
+        {
+            context = new MavenJellyContext( parentContext );
+        }
+        else
+        {
+            context = new MavenJellyContext();
+        }
+
+        // Turn off inheritence so parent values are overriden
+        context.setInherit( false );
+
+        //integrate everything else...
+        MavenUtils.integrateMapInContext( result, context );
+
+        // Turn inheritance back on to make the parent's values visible.
+        context.setInherit( true );
+
+        // Set the basedir value in the context.
+        context.setVariable( "basedir", descriptorDirectory.getAbsolutePath() );
+
+        return context;
+    }
+
+    /**
+     * Apply default settings.
+     *
+     * @param context Jelly context to apply the defaults.
+     */
+    private static void applyDefaults( MavenJellyContext context )
+    {
+        Properties defaultProperties = loadProperties( MavenUtils.class
+            .getResourceAsStream( MavenConstants.DEFAULTS_PROPERTIES ) );
+
+        //integrate defaults...
+        MavenUtils.integrateMapInContext( defaultProperties, context );
+
+        // deliberately use the original base directory for these variables
+        context.resolveRelativePaths( new File( System.getProperty( "user.dir" ) ) );
+    }
+
+    /**
+     * Integrate a Map of key:value pairs into a <code>MavenJellyContext</code>.
+     * The values in the Map may be <code>CompositeExpression</code>s that need
+     * to be evaluated before being placed into the context.
+     *
+     * @param map Map to integrate into the provided jelly context.
+     * @param context Jelly context to integrate the map into.
+     */
+    public static void integrateMapInContext( Map map, MavenJellyContext context )
+    {
+        if ( map == null )
+        {
+            return;
+        }
+
+        JexlExpressionFactory factory = new JexlExpressionFactory();
+
+        for ( Iterator i = map.keySet().iterator(); i.hasNext(); )
+        {
+            String key = (String) i.next();
+            Object value;
+
+            // Parent contexts are already handled, so only concern ourselves with whether it exists in the current
+            // context
+            if ( context.getVariables().get( key ) == null )
+            {
+                value = map.get( key );
+
+                if ( value instanceof String )
+                {
+                    try
+                    {
+                        String literalValue = (String) value;
+                        Expression expr = CompositeExpression.parse( literalValue, factory );
+
+                        if ( expr != null )
+                        {
+                            value = expr;
+                        }
+                        else
+                        {
+                            value = literalValue;
+                        }
+                    }
+                    catch ( Exception e )
+                    {
+                        // do nothing.
+                        log.debug( "Unexpected error evaluating expression", e );
+                    }
+                }
+                context.setVariable( key, value );
+            }
+        }
+    }
+
+    /**
+     * Load properties from a <code>File</code>.
+     *
+     * @param file Propertie file to load.
+     * @return The loaded Properties.
+     */
+    private static Properties loadProperties( File file )
+    {
+        FileInputStream fis = null;
+        try
+        {
+            if ( file.exists() )
+            {
+                fis = new FileInputStream( file );
+                return loadProperties( fis );
+            }
+        }
+        catch ( Exception e )
+        {
+            // ignore
+            log.debug( "Unexpected error loading properties", e );
+        }
+        finally
+        {
+            if ( fis != null )
+            {
+                try
+                {
+                    fis.close();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "WARNING: Cannot close stream!", e );
+                }
+                fis = null;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Load properties from an <code>InputStream</code>.
+     *
+     * @param is InputStream from which load properties.
+     * @return The loaded Properties.
+     */
+    private static Properties loadProperties( InputStream is )
+    {
+        try
+        {
+            Properties properties = new Properties();
+            properties.load( is );
+
+            for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
+            {
+                String property = (String) i.next();
+                properties.setProperty( property, properties.getProperty( property ).trim() );
+            }
+
+            return properties;
+        }
+        catch ( IOException e )
+        {
+            // ignore
+            log.debug( "Unexpected exception loading properties", e );
+        }
+        finally
+        {
+            try
+            {
+                if ( is != null )
+                {
+                    is.close();
+                }
+            }
+            catch ( IOException e )
+            {
+                // ignore
+                log.debug( "Unexpected exception loading properties", e );
+            }
+        }
+
+        return null;
+    }
+
+    /** Resource bundle with user messages. */
+    private static ResourceBundle messages;
+
+    /**
+     * Load MavenSession user messages from a resource bundle given the
+     * user's locale.
+     * @todo Move locale tools into their own class.
+     */
+    private static void loadMessages()
+    {
+        try
+        {
+            // Look for the message bundle corresponding to the user's locale.
+            messages = ResourceBundle.getBundle( "org/apache/maven/messages/messages" );
+        }
+        catch ( MissingResourceException e )
+        {
+            // If we can't find the appropriate message bundle for the locale then
+            // we will fall back to English.
+            messages = ResourceBundle.getBundle( "org/apache/maven/messages/messages", Locale.ENGLISH );
+        }
+    }
+
+    /**
+     * Retrieve a user message.
+     *
+     * @param messageId Id of message type to use.
+     * @return Message for the user's locale.
+     */
+    public static String getMessage( String messageId )
+    {
+        return getMessage( messageId, null );
+    }
+
+    /**
+     * Retrieve a user message.
+     *
+     * @param messageId Id of message type to use.
+     * @param variable Value to substitute for ${1} in the given message.
+     * @return Message for the user's locale.
+     */
+    public static String getMessage( String messageId, Object variable )
+    {
+        if ( messages == null )
+        {
+            loadMessages();
+        }
+
+        if ( variable == null )
+        {
+            return messages.getString( messageId );
+        }
+        else
+        {
+            return StringUtils.replace( messages.getString( messageId ), "${1}", variable.toString() );
+        }
+    }
+
+    /**
+     * Resolve directory against a base directory if it is not already absolute.
+     * @param basedir the base directory for relative paths
+     * @param dir the directory to resolve
+     * @throws IOException if canonical path fails
+     * @return the canonical path of the directory if not absolute
+     */
+    public static String makeAbsolutePath( File basedir, String dir )
+        throws IOException
+    {
+        File f = new File( dir );
+        if ( ( f.isAbsolute() ) )
+        {
+            return f.getCanonicalPath();
+        }
+        else
+        {
+            return new File( basedir, dir ).getCanonicalPath();
+        }
+    }
+
+    /**
+     * Convert an absolute path to a relative path if it is under a given base directory.
+     * @param basedir the base directory for relative paths
+     * @param path the directory to resolve
+     * @return the relative path
+     * @throws IOException if canonical path fails
+     */
+    public static String makeRelativePath( File basedir, String path )
+        throws IOException
+    {
+        String canonicalBasedir = basedir.getCanonicalPath();
+        File pathFile = new File( path );
+        if ( !pathFile.isAbsolute() )
+        {
+            log.warn( "WARNING: path is not an absolute pathname! Returning path." );
+            return path;
+        }
+        String canonicalPath = pathFile.getCanonicalPath();
+
+        if ( canonicalPath.equals( canonicalBasedir ) )
+        {
+            return ".";
+        }
+
+        if ( canonicalPath.startsWith( canonicalBasedir ) )
+        {
+            if ( canonicalPath.charAt( canonicalBasedir.length() ) == File.separatorChar )
+            {
+                canonicalPath = canonicalPath.substring( canonicalBasedir.length() + 1 );
+            }
+            else
+            {
+                canonicalPath = canonicalPath.substring( canonicalBasedir.length() );
+            }
+        }
+        else
+        {
+            log.warn( "WARNING: path does not start with basedir! Returning path." );
+            return path;
+        }
+        return canonicalPath;
+    }
+
+    /**
+     * Get a list of goals from a CSV list.
+     * @param goalCsv the goals
+     * @return the list of goal names
+     */
+    public static List getGoalListFromCsv( String goalCsv )
+    {
+        StringTokenizer tok = new StringTokenizer( goalCsv, "," );
+        List goals = new ArrayList();
+        while ( tok.hasMoreTokens() )
+        {
+            goals.add( tok.nextToken().trim() );
+        }
+        return goals;
+    }
+
+    /**
+     * Debugging function.
+     * @param classLoader the class loader
+     */
+    public static void displayClassLoaderContents( ForeheadClassLoader classLoader )
+    {
+        log.info( "ClassLoader name: " + classLoader.getName() );
+
+        URL[] urls = classLoader.getURLs();
+
+        for ( int i = 0; i < urls.length; i++ )
+        {
+            log.info( "urls[" + i + "] = " + urls[i] );
+        }
+
+        ClassLoader parent = classLoader.getParent();
+        if ( parent != null && parent instanceof ForeheadClassLoader )
+        {
+            log.info( "Displaying Parent classloader: " );
+            displayClassLoaderContents( (ForeheadClassLoader) classLoader.getParent() );
+        }
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/UnknownGoalException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/UnknownGoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/UnknownGoalException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,49 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/** Indicates an attempt to access an unknown werkz goal.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @version $Id: UnknownGoalException.java 169211 2005-05-09 01:23:02Z brett $
+ */
+public class UnknownGoalException
+    extends GoalException
+{
+    /** Name of unknown goal. */
+    private String goalName;
+
+    /** Construct with an unknown goal name.
+     *
+     *  @param goalName The name of the unknown goal.
+     */
+    public UnknownGoalException( String goalName )
+    {
+        super( "Unknown goal \"" + goalName + "\"" );
+        this.goalName = goalName;
+    }
+
+    /** Retrieve the unknown goal name.
+     *
+     *  @return The name of the unknown goal.
+     */
+    public String getGoalName()
+    {
+        return this.goalName;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/App.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/App.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/App.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,1401 @@
+package org.apache.maven.cli;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.BreakIterator;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.jelly.JellyException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenSession;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.UnknownGoalException;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Project;
+import org.apache.maven.verifier.ChecksumVerificationException;
+import org.apache.maven.verifier.RepoConfigException;
+import org.apache.maven.verifier.UnsatisfiedDependencyException;
+import org.apache.maven.werkz.NoActionDefinitionException;
+import org.apache.maven.werkz.NoSuchGoalException;
+import org.apache.maven.werkz.UnattainableGoalException;
+
+/**
+ * The CLI wrapper for controlling MavenSession processes which are
+ * encapsulated in the MavenSession bean.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: App.java 426660 2006-07-28 20:20:44Z ltheussl $
+ *
+ * @todo Separate the computation of the available goals from the display
+ *       of the goals. The goal computation logic needs to be moved
+ *       out of this class and be placed in MavenSession.java proper.
+ * @todo All logging needs to be done via commons-logging. No
+ *       System.err.* and Jelly needs to be taught to take a
+ *       logger. In an attempt to isolate everything in MavenSession.java.
+ */
+public class App
+{
+    // ------------------------------------------------------------
+    // C O N S T A N T S
+    // ------------------------------------------------------------
+
+    /** Convenience constant for new line character. */
+    private static final String LS = System.getProperty( "line.separator", "\n" );
+
+    /** Default file name for an XML-based POM. */
+    public static final String POM_FILE_NAME = "project.xml";
+
+    /** Default wrap indent. */
+    private static final int WRAP_INDENT = 35;
+
+    /** Default console width - for formatting output. */
+    private static final int CONSOLE_WIDTH = 80;
+
+    /** return code for ok processing */
+    private static final int RC_OK = 0;
+
+    /** return code from command prompt when a bad argument is passed */
+    private static final int RC_BAD_ARG = 10;
+
+    /** return code from command prompt when initialization fails */
+    private static final int RC_INIT_ERROR = 20;
+
+    /** return code from command prompt when a goal isn't found */
+    private static final int RC_NO_GOAL = 30;
+
+    /** return code for bad repository configuration */
+    private static final int RC_BAD_REPO = 40;
+
+    /** return code for a goal with no actions */
+    private static final int RC_EMPTY_GOAL = 50;
+
+    /** return code for a goal that failed */
+    private static final int RC_GOAL_FAILED = 60;
+
+    /** return code for a goal failed from jelly exception being thrown */
+    private static final int RC_JELLY_FAILED = 70;
+
+    /** return code for a failure due to Jelly issues */
+    private static final int RC_BAD_JELLY = 80;
+
+    /** return code for a failure due to anything else */
+    private static final int RC_OTHER_FAILURE = 90;
+
+    /** return code for a failure due to failed dependency */
+    private static final int RC_FAILED_DEPENDENCY = 100;
+
+    // O P T I O N S
+
+    /** Console banner option. */
+    private static final String CONSOLE_BANNER = "b";
+
+    /** Display stack trace option. */
+    private static final String DISPLAY_STACKTRACE = "e";
+
+    /** Find POM option. */
+    private static final String FIND_POM_DESCRIPTOR = "f";
+
+    /** Display goals options. */
+    private static final String DISPLAY_GOALS = "g";
+
+    /** Display help option. */
+    private static final String DISPLAY_HELP = "h";
+
+    /** Display plugin help option. */
+    private static final String DISPLAY_PLUGIN_HELP = "P";
+
+    /** Display project help option. */
+    private static final String DISPLAY_USAGE = "u";
+
+    /** Display info option. */
+    private static final String DISPLAY_INFO = "i";
+
+    /** Display version option. */
+    private static final String DISPLAY_VERSION = "v";
+
+    /** Work offline option. */
+    private static final String WORK_OFFLINE = "o";
+
+    /** Set POM descriptor option. */
+    private static final String SET_POM_DESCRIPTOR = "p";
+
+    /** System property option. */
+    private static final String SET_SYSTEM_PROPERTY = "D";
+
+    /** Emacs output option. */
+    private static final String EMACS_OUTPUT = "E";
+
+    /** Quiet option. */
+    private static final String QUIET = "q";
+
+    /** Debug option. */
+    private static final String DEBUG = "X";
+
+    /** Working dir option. */
+    private static final String WORKING_DIR = "d";
+
+    /** Links properties */
+    private static final Properties LINKS_PROPERTIES = new Properties();
+
+    // ------------------------------------------------------------
+    // C L A S S  M E M B E R S
+    // ------------------------------------------------------------
+
+    // ------------------------------------------------------------
+    // I N S T A N C E  M E M B E R S
+    // ------------------------------------------------------------
+
+    /** CLI Parser */
+    private CommandLine commandLine;
+
+    /** Jelly's underlying writer. */
+    private Writer writer;
+
+    /** MavenSession Jelly rootContext. */
+    private MavenJellyContext rootContext;
+
+    /** the session to run builds */
+    private MavenSession mavenSession;
+
+    /** logger for output */
+    private Log log = LogFactory.getLog( App.class );
+
+    static
+    {
+        URL url = App.class.getResource( "/links.properties" );
+
+        if ( url == null )
+        {
+            throw new RuntimeException( "Configuration error: can not find the resource links.properties" );
+        }
+
+        try
+        {
+            LINKS_PROPERTIES.load( url.openStream() );
+        }
+        catch ( IOException e )
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /** Constructor. */
+    public App()
+    {
+    }
+
+    // ----------------------------------------------------------------------
+    // A C C E S S O R S
+    // ----------------------------------------------------------------------
+
+    /**
+     * Set Jelly rootContext.
+     *
+     * @param rootContext The mavenSession jelly rootContext.
+     */
+    public void setRootContext( MavenJellyContext rootContext )
+    {
+        this.rootContext = rootContext;
+    }
+
+    /**
+     * Retrieve the Jelly rootContext.
+     *
+     * @return The Jelly rootContext.
+     */
+    public MavenJellyContext getRootContext()
+    {
+        return rootContext;
+    }
+
+    /**
+     * Set the cli parser.
+     *
+     * @param commandLine The command line parser.
+     */
+    protected void setCli( CommandLine commandLine )
+    {
+        this.commandLine = commandLine;
+    }
+
+    /**
+     * Get the CLI parser.
+     *
+     * @return CommandLine The command line parser.
+     */
+    protected CommandLine getCli()
+    {
+        return this.commandLine;
+    }
+
+    // ----------------------------------------------------------------------
+    // I N S T A N C E  M E T H O D S
+    // ----------------------------------------------------------------------
+
+    /** Perform initialization.
+     *
+     * @param args The command-line arguments.
+     *
+     * @throws ParseException If there is an error parsing the
+     *          command-line.
+     * @throws IOException If there is an error while
+     *          reading the project descriptor.
+     * @throws MalformedURLException If any of the the URLs denoting
+     *          the local or remote repositories is malformed.
+     */
+    public void initialize( String[] args )
+        throws ParseException, MalformedURLException, IOException
+    {
+        setCli( CLIManager.parse( args ) );
+
+        initializeSystemProperties();
+        initializeRootContext();
+        initializeMavenSession();
+        customizeLogging();
+    }
+
+    /**
+     * Customize the log4j configuration from properties 
+     * (read in system, user or project scope).
+     */
+    private void customizeLogging()
+    {
+        Iterator iter = getRootContext().getVariableNames();
+        Properties log4jProperties = new Properties();
+        String propertyName;
+        while ( iter.hasNext() )
+        {
+            propertyName = (String) iter.next();
+            if ( propertyName.startsWith( "log4j" ) )
+            {
+                log4jProperties.put( propertyName, getRootContext().getVariable( propertyName ) );
+            }
+        }
+        PropertyConfigurator.configure( log4jProperties );
+        log4jProperties = null;
+        iter = null;
+    }
+
+    /**
+     * Get the project descriptor file.
+     *
+     * @return The project descriptor file.
+     * @throws IOException when the project.xml parent can't be resolved
+     */
+    private File getDescriptorFile()
+        throws IOException
+    {
+        File descriptorFile = null;
+        String descriptorName = null;
+
+        // Determine what the name of the XML POM descriptor is. If it is
+        // specified then we will what the user requests, otherwise we will
+        // default to using 'project.xml'.
+        if ( getCli().hasOption( SET_POM_DESCRIPTOR ) )
+        {
+            descriptorName = getCli().getOptionValue( SET_POM_DESCRIPTOR );
+        }
+        else
+        {
+            descriptorName = POM_FILE_NAME;
+        }
+
+        if ( getCli().hasOption( FIND_POM_DESCRIPTOR ) )
+        {
+            descriptorFile = find( descriptorName );
+
+            if ( descriptorFile == null )
+            {
+                descriptorFile = new File( descriptorName );
+            }
+        }
+        else
+        {
+            descriptorFile = new File( descriptorName );
+        }
+        if ( getCli().hasOption( SET_POM_DESCRIPTOR ) && !descriptorFile.exists() )
+        {
+            throw new FileNotFoundException( "Project file '" + descriptorName + "' not found" );
+        }
+
+        descriptorFile = descriptorFile.getAbsoluteFile();
+        if ( !getCli().hasOption( WORKING_DIR ) )
+        {
+            System.setProperty( "user.dir", descriptorFile.getParentFile().getCanonicalPath() );
+        }
+
+        return descriptorFile;
+    }
+
+    /**
+     *  Initialize the IO streams.
+     *
+     * @throws IOException on error creating XML output and handling System.err
+     *         and out
+     */
+    protected void initializeRootContext()
+        throws IOException
+    {
+        this.writer = new OutputStreamWriter( System.out );
+        XMLOutput output = XMLOutput.createXMLOutput( writer, false );
+
+        if ( getCli().hasOption( WORKING_DIR ) )
+        {
+            String workingDir = getCli().getOptionValue( WORKING_DIR );
+            File dir = new File( workingDir );
+            if ( !dir.isAbsolute() )
+            {
+                workingDir = dir.getAbsolutePath();
+            }
+
+            System.setProperty( "user.dir", workingDir );
+        }
+
+        // We will assume here that there might not be a project.xml file present
+        // and we will create the root context from the directory gleaned from
+        // the user.dir system property.
+        File basedir = new File( System.getProperty( "user.dir" ) );
+        MavenJellyContext c = MavenUtils.createContext( basedir );
+        setRootContext( c );
+        c.setXMLOutput( output );
+
+        // This is just a start at this mode - there'll still be some output
+        if ( getCli().hasOption( QUIET ) )
+        {
+            // A little bit of log4j specifics needed here
+            Logger.getLogger( "org.apache.maven" ).setLevel( Level.ERROR );
+        }
+
+        // -X takes precedence over -q
+        if ( getCli().hasOption( DEBUG ) )
+        {
+            getRootContext().setDebugOn( Boolean.TRUE );
+            // A little bit of log4j specifics needed here
+            Logger.getLogger( "org.apache.maven" ).setLevel( Level.DEBUG );
+        }
+        else
+        {
+            getRootContext().setDebugOn( Boolean.FALSE );
+        }
+
+        if ( getCli().hasOption( EMACS_OUTPUT ) )
+        {
+            getRootContext().setEmacsModeOn( Boolean.TRUE );
+        }
+        else
+        {
+            getRootContext().setEmacsModeOn( Boolean.FALSE );
+        }
+
+        if ( getCli().hasOption( WORK_OFFLINE ) )
+        {
+            System.setProperty( MavenConstants.ONLINE, "false" );
+        }
+    }
+
+    /**
+     * Initialize the mavenSession bean.
+     * @throws IOException when the descriptor file parent can't be resolved
+     */
+    private void initializeMavenSession()
+        throws IOException
+    {
+        // Even though the rootProject contains the rootContext we set both in
+        // the even that there is no rootProject and the user is requesting goals
+        // to be attained that do not directly relate to a project. A goaly that
+        // may, say, generate the skeletal maven application build.
+
+        mavenSession = new MavenSession();
+        mavenSession.setRootContext( getRootContext() );
+        // note: setRootDescriptor file is a static method
+        MavenSession.setRootDescriptorFile( getDescriptorFile() );
+    }
+
+    /**
+     * Setup any system properties that have been specified on
+     * the CLI.
+     */
+    public void initializeSystemProperties()
+    {
+        if ( getCli().hasOption( SET_SYSTEM_PROPERTY ) )
+        {
+            String[] defStrs = getCli().getOptionValues( SET_SYSTEM_PROPERTY );
+
+            for ( int i = 0; i < defStrs.length; ++i )
+            {
+                setCliProperty( defStrs[i] );
+            }
+        }
+    }
+
+    /**
+     * Set a property based upon a commandline <code>name=value</code> string.
+     *
+     *  @param defStr The <code>name=value</code> string.
+     */
+    private void setCliProperty( String defStr )
+    {
+        String name = null;
+        String value = null;
+        int equalLoc = defStr.indexOf( "=" );
+
+        if ( equalLoc <= 0 )
+        {
+            name = defStr.trim();
+            value = "true";
+        }
+        else
+        {
+            name = defStr.substring( 0, equalLoc ).trim();
+            value = defStr.substring( equalLoc + 1 ).trim();
+        }
+
+        if ( name.length() > 0 )
+        {
+            System.setProperty( name, value );
+        }
+    }
+
+    /**
+     * Perform main operations in a non-static method.
+     *
+     * @param args Arguments passed in from main().
+     * @param fullStart Date the mavenSession process was started.
+     */
+    public void doMain( String[] args, Date fullStart )
+    {
+        initializeMain( args );
+
+        displayHelp();
+        displayVersion();
+
+        int returnCode = RC_OK;
+
+        if ( !getCli().hasOption( CONSOLE_BANNER ) )
+        {
+            printConsoleMavenHeader();
+        }
+
+        if ( !MavenSession.getRootDescriptorFile().exists() )
+        {
+            log.warn( MavenUtils.getMessage( "build.no.pom.found" ) );
+            log.warn( "" );
+        }
+
+        boolean failed = false;
+
+        try
+        {
+            mavenSession.initialize();
+
+            displayInfo();
+            displayProjectHelp();
+            displayPluginHelp();
+
+            if ( getCli().hasOption( DISPLAY_GOALS ) )
+            {
+                displayGoals();
+                exit( returnCode );
+            }
+            else
+            {
+                mavenSession.attainGoals( mavenSession.getRootProject(), getCli().getArgList() );
+            }
+        }
+        catch ( UnsatisfiedDependencyException e )
+        {
+            failed = true;
+            log.error( e.getLocalizedMessage() );
+            returnCode = RC_FAILED_DEPENDENCY;
+        }
+        catch ( ChecksumVerificationException e )
+        {
+            failed = true;
+            log.error( e.getLocalizedMessage() );
+            returnCode = RC_FAILED_DEPENDENCY;
+        }
+        catch ( UnknownGoalException e )
+        {
+            failed = true;
+            log.error( MavenUtils.getMessage( "build.failed" ) );
+            log.error( MavenUtils.getMessage( "build.unknownGoalException", e.getGoalName() ) );
+            returnCode = RC_NO_GOAL;
+        }
+        catch ( NoSuchGoalException e )
+        {
+            failed = true;
+            log.error( MavenUtils.getMessage( "build.failed" ) );
+            log.error( e.getMessage() );
+            log.error( MavenUtils.getMessage( "build.noSuchGoalException" ) );
+            returnCode = RC_NO_GOAL;
+        }
+        catch ( RepoConfigException e )
+        {
+            failed = true;
+            log.error( e.getLocalizedMessage() );
+            returnCode = RC_BAD_REPO;
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            failed = true;
+            log.error( MavenUtils.getMessage( "build.internalError" ) );
+            log.error( MavenUtils.getMessage( "build.noActionDefinitionException", e.getGoal().getName() ) );
+            log.error( "" );
+            returnCode = RC_EMPTY_GOAL;
+
+            if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+            {
+                e.printStackTrace();
+            }
+            displayBugReportHelp();
+            return;
+        }
+        catch ( UnattainableGoalException e )
+        {
+            failed = true;
+            returnCode = handleUnattainableGoalException( e );
+        }
+        catch ( JellyException e )
+        {
+            returnCode = RC_BAD_JELLY;
+            failed = true;
+            String fileName = e.getFileName();
+            String elementName = e.getElementName();
+
+            int lineNumber = e.getLineNumber();
+            int column = e.getColumnNumber();
+
+            String msg = e.getReason();
+
+            log.error( MavenUtils.getMessage( "build.jellyException.file", fileName ) );
+            log.error( MavenUtils.getMessage( "build.jellyException.element", elementName ) );
+            log.error( MavenUtils.getMessage( "build.jellyException.line", new Integer( lineNumber ) ) );
+            log.error( MavenUtils.getMessage( "build.jellyException.column", new Integer( column ) ) );
+
+            log.error( msg );
+
+            if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+            {
+                e.printStackTrace();
+            }
+            displayBugReportHelp();
+        }
+        catch ( MavenException e )
+        {
+            returnCode = RC_OTHER_FAILURE;
+            failed = true;
+            log.error( MavenUtils.getMessage( "build.failed" ) );
+            log.error( e.getMessage() );
+            if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+            {
+                e.printStackTrace();
+            }
+            else
+            {
+                log.error( MavenUtils.getMessage( "displayBugReportHelp.line4" ) );
+            }
+            if ( MavenUtils.MAVEN_UNKNOWN_ERROR.equals( e.getMessage() ) )
+            {
+                displayBugReportHelp();
+            }
+        }
+        catch ( Throwable t )
+        {
+            returnCode = RC_OTHER_FAILURE;
+            failed = true;
+            t.printStackTrace();
+            displayBugReportHelp();
+        }
+
+        if ( !failed )
+        {
+            log.info( MavenUtils.getMessage( "build.successful" ) );
+        }
+
+        final long mb = 1024 * 1024;
+        System.gc();
+        Runtime r = Runtime.getRuntime();
+        log.debug( MavenUtils.getMessage( "build.final.memory", ( ( r.totalMemory() - r.freeMemory() ) / mb ) + "M/"
+            + ( r.totalMemory() / mb ) + "M" ) );
+
+        Date fullStop = new Date();
+        DateFormat defaultDate = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.LONG );
+
+        long fullDiff = fullStop.getTime() - fullStart.getTime();
+
+        log.info( MavenUtils.getMessage( "build.total.time", formatTime( fullDiff ) ) );
+        log.info( MavenUtils.getMessage( "build.finished.time", defaultDate.format( fullStop ) ) );
+
+        log.info( "" );
+
+        exit( returnCode );
+    }
+
+    /**
+     * Intialize main and exit if failures occur
+     * @param args command line args
+     */
+    private void initializeMain( String[] args )
+    {
+        int returnCode = RC_OK;
+
+        try
+        {
+            initialize( args );
+        }
+        catch ( ParseException e )
+        {
+            log.info( e.getLocalizedMessage() );
+            CLIManager.displayHelp();
+            returnCode = RC_BAD_ARG;
+        }
+        catch ( IOException e )
+        {
+            log.info( e.getLocalizedMessage() );
+            returnCode = RC_INIT_ERROR;
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+            returnCode = RC_INIT_ERROR;
+        }
+
+        if ( returnCode != RC_OK )
+        {
+            log.info( "" );
+            exit( returnCode );
+        }
+
+    }
+
+    /**
+     * Display the command line help if the option is present, then exit
+     */
+    private void displayHelp()
+    {
+        if ( getCli().hasOption( DISPLAY_HELP ) )
+        {
+            CLIManager.displayHelp();
+            log.info( "" );
+            exit( RC_OK );
+        }
+    }
+
+    /**
+     * Display the plugin help if the option is present, then exit.
+     * @throws MavenException when anything goes wrong
+     */
+    private void displayPluginHelp()
+        throws MavenException
+    {
+        if ( getCli().hasOption( DISPLAY_PLUGIN_HELP ) )
+        {
+            String plugin = getCli().getOptionValue( DISPLAY_PLUGIN_HELP );
+
+            displayGoals( true, plugin );
+
+            if ( plugin != null )
+            {
+                Project project = mavenSession.getPluginProjectFromGoal( plugin );
+                if ( project != null && project.getDescription() != null )
+                {
+                    log.info( wrapConsoleMessage( project.getDescription(), 0, CONSOLE_WIDTH ) );
+                }
+            }
+
+            exit( RC_OK );
+        }
+    }
+
+    /**
+     * Display information on how to file a bug report if an unknown error occurs.
+     */
+    private void displayBugReportHelp()
+    {
+        StringBuffer sb = new StringBuffer();
+        sb.append( MavenUtils.getMessage( "displayBugReportHelp.line1" ) ).append( '\n' );
+        sb.append( MavenUtils.getMessage( "displayBugReportHelp.line2" ) ).append( '\n' );
+        sb.append( MavenUtils.getMessage( "displayBugReportHelp.line3", LINKS_PROPERTIES.get( "faqUrl" ) ) )
+            .append( '\n' );
+        sb.append( MavenUtils.getMessage( "displayBugReportHelp.line4" ) ).append( '\n' );
+        sb
+            .append(
+                     MavenUtils
+                         .getMessage( "displayBugReportHelp.line5", LINKS_PROPERTIES.get( "usersMailingListUrl" ) ) )
+            .append( '\n' );
+        if ( ( mavenSession != null ) && ( mavenSession.getRootProject() != null ) )
+        {
+            sb.append(
+                       MavenUtils.getMessage( "displayBugReportHelp.line6", mavenSession.getRootProject()
+                           .getIssueTrackingUrl() ) ).append( '\n' );
+        }
+        else
+        {
+            sb
+                .append(
+                         MavenUtils
+                             .getMessage( "displayBugReportHelp.line6", LINKS_PROPERTIES.get( "issueTrackingUrl" ) ) )
+                .append( '\n' );
+        }
+        sb.append( MavenUtils.getMessage( "displayBugReportHelp.line7" ) );
+
+        log.info( "" );
+        log.info( sb.toString() );
+        log.info( "" );
+    }
+
+    /**
+     * Display the project help if the option is present, then exit.
+     * @throws MavenException when anything goes wrong
+     */
+    private void displayProjectHelp()
+        throws MavenException
+    {
+        if ( getCli().hasOption( DISPLAY_USAGE ) )
+        {
+            Set goals = mavenSession.getProjectGoals( mavenSession.getRootProject() );
+
+            String title = MavenUtils.getMessage( "displayProjectHelp.title" );
+            log.info( title );
+            log.info( format( "", title.length(), '=' ) );
+            log.info( "" );
+
+            Project rootProject = mavenSession.getRootProject();
+            if ( rootProject.getBuild() != null && rootProject.getBuild().getDefaultGoal() != null )
+            {
+                String defaultGoal = rootProject.getBuild().getDefaultGoal();
+                String msg = MavenUtils.getMessage( "displayGoals.defaultGoal" ) + defaultGoal;
+                log.info( wrapConsoleMessage( msg, WRAP_INDENT + 1, CONSOLE_WIDTH ) );
+            }
+
+            displayGoals( false, null, goals );
+
+            String msg = mavenSession.getRootProject().getDescription();
+            if ( msg != null )
+            {
+                log.info( wrapConsoleMessage( msg, 0, CONSOLE_WIDTH ) );
+            }
+
+            exit( RC_OK );
+        }
+    }
+
+    /**
+     * Display the command line info if the option is present, then exit
+     */
+    private void displayInfo()
+    {
+        if ( getCli().hasOption( DISPLAY_INFO ) )
+        {
+            CLIManager.displayInfo();
+            log.info( "" );
+            log.info( MavenUtils.getMessage( "displayInfo.info1" ) );
+            for ( Iterator i = mavenSession.getPluginList().iterator(); i.hasNext(); )
+            {
+                log.info( "  " + i.next() );
+            }
+
+            Properties buildProperties = new Properties();
+            FileInputStream fis = null;
+            try
+            {
+                fis = new FileInputStream( System.getProperty( "user.home" ) + "/build.properties" );
+                buildProperties.load( fis );
+            }
+            catch ( IOException e )
+            {
+                log.error( MavenUtils.getMessage( "displayInfo.error" ) + e.getMessage() );
+            }
+            finally
+            {
+                if ( fis != null )
+                {
+                    try
+                    {
+                        fis.close();
+                    }
+                    catch ( IOException e )
+                    {
+                        log.debug( "WARNING: Cannot close stream!", e );
+                    }
+                    fis = null;
+                }
+            }
+            log.info( MavenUtils.getMessage( "displayInfo.info2" ) + buildProperties );
+            exit( RC_OK );
+        }
+    }
+
+    /**
+     * Display the Maven version info if the option is present, then exit
+     */
+    private void displayVersion()
+    {
+        if ( getCli().hasOption( DISPLAY_VERSION ) )
+        {
+            printConsoleMavenHeader();
+            exit( RC_OK );
+        }
+    }
+
+    /** Handle an <code>UnattainableGoalException</code>.
+     *
+     *  @param e The exception.
+     *
+     *  @return The return code.
+     */
+    private int handleUnattainableGoalException( UnattainableGoalException e )
+    {
+        int returnCode = RC_GOAL_FAILED;
+
+        log.error( "" );
+        log.error( MavenUtils.getMessage( "build.failed" ) );
+
+        String msg = null;
+
+        String fileName = null;
+        String elementName = null;
+
+        int lineNumber = -1;
+        int column = -1;
+
+        Throwable rootCause = e.getRootCause();
+
+        if ( rootCause != null )
+        {
+            if ( rootCause instanceof JellyException )
+            {
+                returnCode = RC_JELLY_FAILED;
+                JellyException jellyEx = (JellyException) rootCause;
+
+                fileName = jellyEx.getFileName();
+                elementName = jellyEx.getElementName();
+
+                lineNumber = jellyEx.getLineNumber();
+                column = jellyEx.getColumnNumber();
+
+                rootCause = jellyEx.getCause();
+
+                if ( rootCause == null )
+                {
+                    msg = jellyEx.getReason();
+                }
+                else
+                {
+                    if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+                    {
+                        rootCause.printStackTrace();
+                    }
+
+                    msg = rootCause.getLocalizedMessage();
+
+                    if ( msg == null )
+                    {
+                        msg = rootCause.getClass().getName();
+                    }
+                }
+
+                log.error( MavenUtils.getMessage( "build.jellyException.file", fileName ) );
+                log.error( MavenUtils.getMessage( "build.jellyException.element", elementName ) );
+                log.error( MavenUtils.getMessage( "build.jellyException.line", new Integer( lineNumber ) ) );
+                log.error( MavenUtils.getMessage( "build.jellyException.column", new Integer( column ) ) );
+
+            }
+            else
+            {
+                if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+                {
+                    rootCause.printStackTrace();
+                }
+                msg = rootCause.getLocalizedMessage();
+
+                if ( msg == null )
+                {
+                    msg = rootCause.getClass().getName();
+                }
+            }
+        }
+        else
+        {
+            msg = e.getLocalizedMessage();
+        }
+
+        log.error( msg );
+
+        if ( getCli().hasOption( DEBUG ) )
+        {
+            e.printStackTrace();
+        }
+
+        return returnCode;
+    }
+
+    /**
+     * From the CWD search through the directory hierarchy for
+     * an XML-based POM.
+     *
+     * @param filename The filename to find.
+     * @return The found file.
+     */
+    private File find( String filename )
+    {
+        // An empty string should resolve to the current directory (user.dir)
+        return find( new File( "" ), filename );
+    }
+
+    /**
+     * From the CWD search through the directory hierarchy for
+     * an XML-based POM.
+     *
+     * @param start  The starting directory for the POM search.
+     * @param suffix The suffix for the file to be searched for.
+     * @return The found project.xml file.
+     */
+    private File find( File start, String suffix )
+    {
+        if ( start == null )
+        {
+            return null;
+        }
+
+        File dir = start.getAbsoluteFile();
+        File file = new File( dir, suffix );
+
+        return file.exists() ? file : find( dir.getParentFile(), suffix );
+    }
+
+    /**
+     * Prints the MavenSession header.
+     */
+    protected void printConsoleMavenHeader()
+    {
+        Properties p = new Properties();
+        InputStream is = getClass().getResourceAsStream( "/driver.properties" );
+        try
+        {
+            p.load( is );
+        }
+        catch ( IOException e )
+        {
+            log.error( MavenUtils.getMessage( "printConsoleMavenHeader.error" ) + e );
+        }
+        finally
+        {
+            try
+            {
+                is.close();
+            }
+            catch ( IOException e )
+            {
+                log.debug( "WARNING: Cannot close stream!", e );
+            }
+        }
+
+        log.info( " __  __" );
+        log.info( "|  \\/  |__ _Apache__ ___" );
+        log.info( "| |\\/| / _` \\ V / -_) ' \\  ~ intelligent projects ~" );
+        log.info( "|_|  |_\\__,_|\\_/\\___|_||_|  v. " + p.getProperty( "maven.application.version" ) );
+        log.info( "" );
+
+    }
+
+    /**
+     * Display helpful information regarding
+     *  all documented goals.
+     */
+    protected void displayGoals()
+    {
+        displayGoals( false, null );
+    }
+
+    /**
+     * Display helpful information regarding all documented goals.
+     * @param pluginOnly show information for the given plugin only
+     * @param plugin plugin to show info for
+     */
+    protected void displayGoals( boolean pluginOnly, String plugin )
+    {
+        String title = MavenUtils.getMessage( "displayGoals.title" );
+        if ( pluginOnly )
+        {
+            title = ( plugin == null ? MavenUtils.getMessage( "displayGoals.title.pluginOnly.null" ) : MavenUtils
+                .getMessage( "displayGoals.title.pluginOnly.notNull" )
+                + plugin );
+        }
+        log.info( title );
+        log.info( format( "", title.length(), '=' ) );
+
+        Set goals = mavenSession.getAllGoalNames();
+        displayGoals( pluginOnly, plugin, goals );
+    }
+
+    /**
+     * Display helpful information regarding all documented goals.
+     *
+     * @param pluginOnly show information for the given plugin only
+     * @param plugin plugin to show info for
+     * @param goals the set of goals
+     */
+    private void displayGoals( boolean pluginOnly, String plugin, Set goals )
+    {
+        Map map = new HashMap();
+        for ( Iterator i = goals.iterator(); i.hasNext(); )
+        {
+            String goal = (String) i.next();
+            String pluginName = "";
+            int index = goal.indexOf( ':' );
+            if ( index >= 0 )
+            {
+                pluginName = goal.substring( 0, index );
+            }
+            List l = (List) map.get( pluginName );
+            if ( l == null )
+            {
+                l = new ArrayList();
+                map.put( pluginName, l );
+            }
+            l.add( goal.substring( index + 1 ) );
+        }
+
+        List goalList = (List) map.get( "" );
+        if ( goalList != null )
+        {
+            for ( Iterator i = goalList.iterator(); i.hasNext(); )
+            {
+                String goal = (String) i.next();
+                if ( map.containsKey( goal ) )
+                {
+                    i.remove();
+                    List pluginGoals = (List) map.get( goal );
+                    if ( pluginGoals == null )
+                    {
+                        pluginGoals = new ArrayList();
+                        map.put( goal, pluginGoals );
+                    }
+                    // don't add the empty goal as we always attempt to display the default
+                }
+            }
+        }
+
+        List keys = new ArrayList( map.keySet() );
+        Collections.sort( keys );
+
+        List undocumentedGoals = new ArrayList();
+
+        for ( Iterator i = keys.iterator(); i.hasNext(); )
+        {
+            String pluginName = (String) i.next();
+            if ( pluginOnly )
+            {
+                if ( plugin == null )
+                {
+                    // only show default goal
+                    displayDefaultGoal( pluginName, mavenSession.getGoalDescription( pluginName ), false );
+                    continue;
+                }
+                else if ( !pluginName.equals( plugin ) )
+                {
+                    continue;
+                }
+            }
+
+            displayDefaultGoal( pluginName, mavenSession.getGoalDescription( pluginName ), true );
+            List l = (List) map.get( pluginName );
+            Collections.sort( l );
+            for ( Iterator j = l.iterator(); j.hasNext(); )
+            {
+                String goalName = (String) j.next();
+                String fullGoalName = pluginName.length() == 0 ? goalName : pluginName + ":" + goalName;
+                String goalDescription = mavenSession.getGoalDescription( fullGoalName );
+                if ( goalDescription != null )
+                {
+                    displayGoal( goalName, goalDescription );
+                }
+                else
+                {
+                    undocumentedGoals.add( fullGoalName );
+                }
+            }
+        }
+
+        if ( undocumentedGoals.isEmpty() == false )
+        {
+            displayGoalsWithoutDescriptions( undocumentedGoals );
+        }
+        log.info( "" );
+    }
+
+    /**
+     * Display helpful information about the given goal.
+     *
+     * @param goalName goal to show info for
+     * @param goalDescription the description of the goal
+     */
+    private void displayGoal( String goalName, String goalDescription )
+    {
+        if ( "".equals( goalName ) )
+        {
+            goalName = "( NO GOAL )";
+        }
+
+        String msgPrefix = format( "  " + goalName + "  ", WRAP_INDENT, '.' ) + " ";
+
+        log.info( msgPrefix + wrapConsoleMessage( goalDescription, WRAP_INDENT + 1, CONSOLE_WIDTH ) );
+    }
+
+    /**
+     * Display helpful information about the given default goal.
+     *
+     * @param goalName goal to show info for
+     * @param goalDescription the description of the goal
+     * @param newLine whether to append a newline
+     */
+    private void displayDefaultGoal( String goalName, String goalDescription, boolean newLine )
+    {
+        if ( "".equals( goalName ) )
+        {
+            return;
+        }
+
+        String msgPrefix = format( "[" + goalName + "]", WRAP_INDENT, ' ' ) + " ";
+        if ( goalDescription == null )
+        {
+            goalDescription = "( NO DEFAULT GOAL )";
+        }
+
+        if ( newLine )
+        {
+            msgPrefix = LS + msgPrefix;
+        }
+
+        log.info( msgPrefix + wrapConsoleMessage( goalDescription, WRAP_INDENT + 1, CONSOLE_WIDTH ) );
+    }
+
+    /** Display goals without descriptions.
+     *
+     *  @param list List of undocument goal names.
+     */
+    private void displayGoalsWithoutDescriptions( List list )
+    {
+        log.info( "" );
+        log.info( MavenUtils.getMessage( "displayGoalsWithoutDescriptions.info" ) );
+        log.info( "" );
+
+        for ( Iterator i = list.iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+
+            log.info( "  " + goalName );
+        }
+    }
+
+    /** Produce a formatted/padded string.
+     *
+     *  @param orig The string to format.
+     *  @param width The width of the resulting formatted string.
+     *  @param pad The trailing pad character.
+     *
+     *  @return The formatted string, or the original string
+     *          if the length is already &gt;= <code>width</code>.
+     */
+    protected String format( String orig, int width, char pad )
+    {
+        if ( orig.length() >= width )
+        {
+            return orig;
+        }
+
+        StringBuffer buf = new StringBuffer().append( orig );
+
+        int diff = width - orig.length();
+
+        for ( int i = 0; i < diff; ++i )
+        {
+            buf.append( pad );
+        }
+
+        return buf.toString();
+    }
+
+    /**
+     * Nicely wraps a message for console output, using a word BreakIterator
+     * instance to determine wrapping breaks.
+     *
+     * @param msg the string message for the console
+     * @param wrapIndent the number of characters to indent all lines
+     * after the first one
+     * @param lineWidth the console width that determines where to wrap
+     * @return the message wrapped for the console
+     */
+    protected String wrapConsoleMessage( String msg, int wrapIndent, int lineWidth )
+    {
+        if ( msg.indexOf( '\n' ) < 0 && msg.indexOf( '\r' ) < 0 )
+        {
+            return wrapConsoleLine( msg, wrapIndent, lineWidth );
+        }
+
+        StringBuffer buf = new StringBuffer();
+        StringTokenizer tok = new StringTokenizer( msg, "\n\r" );
+        while ( tok.hasMoreTokens() )
+        {
+            String token = tok.nextToken().trim();
+            if ( token.length() > 0 )
+            {
+                buf.append( wrapConsoleLine( token, wrapIndent, lineWidth ) );
+                buf.append( LS );
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Reformat a message to display on the console.
+     *
+     * @param msg the message to display
+     * @param wrapIndent indent
+     * @param lineWidth line width
+     * @return String
+     */
+    private String wrapConsoleLine( String msg, int wrapIndent, int lineWidth )
+    {
+        int offset = lineWidth - wrapIndent;
+        if ( msg.length() <= offset )
+        {
+            return msg;
+        }
+
+        BreakIterator bIter = BreakIterator.getWordInstance();
+        StringBuffer buf = new StringBuffer();
+        String pad = " ";
+        int currentPos = 0;
+        bIter.setText( msg );
+
+        while ( offset < bIter.getText().getEndIndex() )
+        {
+            if ( Character.isWhitespace( bIter.getText().first() ) )
+            {
+                // remove leading whitespace and continue
+                msg = msg.substring( 1 );
+                bIter.setText( msg );
+                continue;
+            }
+
+            // get the last boundary before the specified offset
+            currentPos = bIter.preceding( offset );
+            // append from the start to currentPos
+            buf.append( msg.substring( 0, currentPos ) );
+
+            // start next line
+            buf.append( LS );
+
+            //pad with spaces to create indent
+            for ( int i = 0; i != wrapIndent && i < lineWidth; i++ )
+            {
+                buf.append( pad );
+            }
+
+            // set the text of the break iterator to be the rest
+            // of the string not already appended
+            msg = msg.substring( currentPos );
+
+            //reset the text for another go
+            bIter.setText( msg );
+        }
+
+        // remove leading whitespace and continue
+        while ( Character.isWhitespace( msg.charAt( 0 ) ) )
+        {
+            msg = msg.substring( 1 );
+        }
+        buf.append( msg );
+        return buf.toString();
+    }
+
+    /**
+     * Format a time string.
+     *
+     * @param ms Duration in ms.
+     * @return  String The formatted time string.
+     */
+    protected static String formatTime( long ms )
+    {
+        long secs = ms / 1000;
+        long min = secs / 60;
+        secs = secs % 60;
+
+        if ( min > 0 )
+        {
+            return min + MavenUtils.getMessage( "formatTime.minutes" ) + secs
+                + MavenUtils.getMessage( "formatTime.seconds" );
+        }
+        else
+        {
+            return secs + MavenUtils.getMessage( "formatTime.seconds" );
+        }
+    }
+
+    /**
+     * Main CLI entry point for MavenSession.
+     *
+     * @param args CLI arguments.
+     */
+    public static void main( String[] args )
+    {
+        Date start = new Date();
+        App app = new App();
+        app.doMain( args, start );
+    }
+
+    /**
+     * To allow subclasses stop the app from exiting
+     * @param status the value to exit with
+     */
+    protected void exit( int status )
+    {
+        System.exit( status );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/CLIManager.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/CLIManager.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/CLIManager.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,194 @@
+package org.apache.maven.cli;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
+
+/**
+ * Utility for managing and parsing MavenSession's command-line.
+ *
+ * <p>
+ * <b>implementation note:</b> This is the class to modify when
+ * adding, removing or modifying MavenSession's command-line options
+ * and flags.
+ * </p>
+ *
+ * <p>
+ * This class uses the
+ * <a href="http://jakarta.apache.org/commons/cli/">commons-cli</a>
+ * library for command-line parsing.
+ * </p>
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ */
+public class CLIManager
+{
+    /**
+     * MavenSession't command-line option configuration.
+     */
+    private static Options options = null;
+
+    /** Configure the option set. */
+
+    static
+    {
+        options = new Options();
+
+        /*
+         * Although this looks broken and confusing, it is by design (commons-cli, not ours).
+         * It only presents an issue if this can be called in multiple threads in the
+         * same classloader simultaneously. Which it can't, as this is a static initializer.
+         * The new commons-cli fixes the Builder pattern to work in a better way (OptionBuilder
+         * no longer static).
+         */
+        OptionBuilder.withLongOpt( "nobanner" );
+        OptionBuilder.withDescription( "Suppress logo banner" );
+        options.addOption( OptionBuilder.create( 'b' ) );
+
+        OptionBuilder.withLongOpt( "define" );
+        OptionBuilder.hasArg();
+        OptionBuilder.withDescription( "Define a system property" );
+        options.addOption( OptionBuilder.create( 'D' ) );
+
+        OptionBuilder.withLongOpt( "dir" );
+        OptionBuilder.hasArg();
+        OptionBuilder.withDescription( "Set effective working directory (ignored with -p or -f)" );
+        options.addOption( OptionBuilder.create( 'd' ) );
+
+        OptionBuilder.withLongOpt( "exception" );
+        OptionBuilder.withDescription( "Produce exception stack traces" );
+        options.addOption( OptionBuilder.create( 'e' ) );
+
+        OptionBuilder.withLongOpt( "emacs" );
+        OptionBuilder.withDescription( "Produce logging information without adornments" );
+        options.addOption( OptionBuilder.create( 'E' ) );
+
+        OptionBuilder.withLongOpt( "find" );
+        OptionBuilder.hasArg();
+        OptionBuilder.withDescription( "Set project file and effective working directory by finding the project file" );
+        options.addOption( OptionBuilder.create( 'f' ) );
+
+        OptionBuilder.withLongOpt( "goals" );
+        OptionBuilder.withDescription( "Display available goals" );
+        options.addOption( OptionBuilder.create( 'g' ) );
+
+        OptionBuilder.withLongOpt( "usage" );
+        OptionBuilder.withDescription( "Display help on using the current project" );
+        options.addOption( OptionBuilder.create( 'u' ) );
+
+        OptionBuilder.withLongOpt( "help" );
+        OptionBuilder.withDescription( "Display help information" );
+        options.addOption( OptionBuilder.create( 'h' ) );
+
+        OptionBuilder.withLongOpt( "info" );
+        OptionBuilder.withDescription( "Display system information" );
+        options.addOption( OptionBuilder.create( 'i' ) );
+
+        OptionBuilder.withLongOpt( "offline" );
+        OptionBuilder.withDescription( "Build is happening offline" );
+        options.addOption( OptionBuilder.create( 'o' ) );
+
+        OptionBuilder.withLongOpt( "pom" );
+        OptionBuilder.hasArg();
+        OptionBuilder.withDescription( "Set project file" );
+        options.addOption( OptionBuilder.create( 'p' ) );
+
+        OptionBuilder.withLongOpt( "version" );
+        OptionBuilder.withDescription( "Display version information" );
+        options.addOption( OptionBuilder.create( 'v' ) );
+
+        OptionBuilder.withLongOpt( "quiet" );
+        OptionBuilder.withDescription( "Reduce execution output" );
+        options.addOption( OptionBuilder.create( 'q' ) );
+
+        OptionBuilder.withLongOpt( "debug" );
+        OptionBuilder.withDescription( "Produce execution debug output" );
+        options.addOption( OptionBuilder.create( 'X' ) );
+
+        OptionBuilder.withLongOpt( "plugin-help" );
+        OptionBuilder.withDescription( "Display help on using a given plugin" );
+        OptionBuilder.hasOptionalArg();
+        options.addOption( OptionBuilder.create( 'P' ) );
+    }
+
+    /**
+     * Parse a string-array of command-line arguments.
+     *
+     * <p>
+     * This will parse the arguments against the configured
+     * maven command-line options, and return a <code>CommandLine</code>
+     * object which may be queried for the presence of flags
+     * and options and their arguments, if any.
+     * </p>
+     *
+     * @param args The command-line arguments to parse.
+     * @return The parsed <code>CommandLine</code> result.
+     * @throws ParseException If an error occurs while parsing
+     * the command-line options.
+     * @see <a href="http://jakarta.apache.org/commons/cli/">CLI</a>
+     */
+    public static CommandLine parse( String[] args )
+        throws ParseException
+    {
+        CommandLineParser parser = new PosixParser();
+        return parser.parse( options, args );
+    }
+
+    /**
+     * Display usage information based upon current
+     * command-line option configuration.
+     */
+    public static void displayHelp()
+    {
+        HelpFormatter formatter = new HelpFormatter();
+
+        formatter.printHelp( "maven [options] [goal [goal2 [goal3] ...]]", "\nOptions:", options, "\n" );
+
+    }
+
+    /**
+     * Display system information. This is generally useful, maybe
+     * this could be made part of CLI? But it definitely shouldn't
+     * be stuck in MavenSession.
+     */
+    public static void displayInfo()
+    {
+        System.out.println( "----- Environment" );
+        String[] properties = new String[] {
+            "java.version",
+            "file.encoding",
+            "java.ext.dirs",
+            "java.class.path",
+            "os.name",
+            "java.vendor",
+            "sun.boot.class.path",
+            "java.runtime.name" };
+        for ( int i = 0; i < properties.length; i++ )
+        {
+            System.out.println( "  " + properties[i] + "=" + System.getProperty( properties[i] ) );
+        }
+        System.out.println( "-----" );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/cli/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.cli</title>
+</head>
+<body>
+  <p>Code used to handle running Maven from a command line interface.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyBuildListener.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyBuildListener.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyBuildListener.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,158 @@
+package org.apache.maven.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.IOException;
+import java.util.Stack;
+
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.xml.sax.SAXException;
+
+public class JellyBuildListener
+    implements BuildListener
+{
+    private XMLOutput out;
+
+    private Stack taskStack;
+
+    private boolean debug;
+
+    /** Whether or not to use emacs-style output */
+    protected boolean emacsMode = false;
+
+    public JellyBuildListener( XMLOutput out )
+    {
+        this.taskStack = new Stack();
+        this.out = out;
+        this.debug = false;
+    }
+
+    /**
+     * Sets this logger to produce emacs (and other editor) friendly output.
+     *
+     * @param emacsMode <code>true</code> if output is to be unadorned so that
+     *                  emacs and other editors can parse files names, etc.
+     */
+    public void setEmacsMode( boolean emacsMode )
+    {
+        this.emacsMode = emacsMode;
+    }
+
+    public boolean isDebug()
+    {
+        return this.debug;
+    }
+
+    /**
+     * @deprecated Use setDebug (deprecated for 1.0-RC1)
+     */
+    public void isDebug( boolean newDebug )
+    {
+        setDebug( newDebug );
+    }
+
+    public void setDebug( boolean debug )
+    {
+        this.debug = debug;
+    }
+
+    public void buildFinished( BuildEvent event )
+    {
+    }
+
+    public void buildStarted( BuildEvent event )
+    {
+    }
+
+    public void messageLogged( BuildEvent event )
+    {
+        if ( event.getPriority() > Project.MSG_INFO && !isDebug() )
+        {
+            return;
+        }
+
+        try
+        {
+            if ( emacsMode )
+            {
+                out.write( event.getMessage() + "\n" );
+                out.flush();
+                return;
+            }
+
+            if ( !this.taskStack.isEmpty() )
+            {
+                out.write( "    [" + this.taskStack.peek() + "] " );
+            }
+
+            switch ( event.getPriority() )
+            {
+                case ( Project.MSG_ERR       ):
+                    out.write( "[ERROR] " );
+                    break;
+                case ( Project.MSG_WARN       ):
+                    // out.write( "[WARN] ");
+                    break;
+                case ( Project.MSG_INFO       ):
+                    // normal, do nothing.
+                    break;
+                case ( Project.MSG_VERBOSE       ):
+                    out.write( "[VERBOSE] " );
+                    break;
+                case ( Project.MSG_DEBUG       ):
+                    out.write( "[DEBUG] " );
+                    break;
+            }
+
+            out.write( event.getMessage() + "\n" );
+            out.flush();
+        }
+        catch ( SAXException e )
+        {
+            // fall-back to stderr.
+            System.err.println( event.getMessage() );
+            System.err.flush();
+        }
+        catch ( IOException e )
+        {
+            // ignore
+        }
+
+    }
+
+    public void targetFinished( BuildEvent event )
+    {
+    }
+
+    public void targetStarted( BuildEvent event )
+    {
+    }
+
+    public void taskFinished( BuildEvent event )
+    {
+        this.taskStack.pop();
+    }
+
+    public void taskStarted( BuildEvent event )
+    {
+        this.taskStack.push( event.getTask().getTaskName() );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyUtils.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/JellyUtils.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,364 @@
+package org.apache.maven.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Iterator;
+
+import javax.xml.parsers.SAXParserFactory;
+
+import org.apache.commons.jelly.JellyContext;
+import org.apache.commons.jelly.Script;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.jelly.expression.CompositeExpression;
+import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.jelly.parser.XMLParser;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+
+/**
+ * Utilities for Jelly.
+ *
+ * @see <a href="http://jakarta.apache.org/commons/jelly/">
+ *      commons-jelly</a>
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: JellyUtils.java 426660 2006-07-28 20:20:44Z ltheussl $
+ */
+public class JellyUtils
+{
+    /**
+     * Logger
+     */
+    private static final Log log = LogFactory.getLog( JellyUtils.class );
+
+    /** Maven Expression Factory. */
+    private static MavenExpressionFactory mavenExpressionFactory = new MavenExpressionFactory();
+
+    /**
+     * Run a jelly script.
+     *
+     * @param scriptInputStream Script input stream.
+     * @param rootUrl Root explicit context of the script.
+     * @param context Jelly context.
+     * @param output Output sink.
+     * @throws Exception If an error occurs while locating, compiling or
+     *      executing the script.
+     */
+    public static void runScript( InputStream scriptInputStream, URL rootUrl, JellyContext context, XMLOutput output )
+        throws Exception
+    {
+        runScript( scriptInputStream, null, rootUrl, context, output );
+    }
+
+    /**
+     * Run a jelly script.
+     *
+     * @param scriptInputStream Script input stream.
+     * @param systemId the system identifier to help resolve relative URLs
+     * @param rootUrl Root explicit context of the script.
+     * @param context Jelly context.
+     * @param output Output sink.
+     * @throws Exception If an error occurs while locating, compiling or
+     *      executing the script.
+     */
+    public static void runScript( InputStream scriptInputStream, String systemId, URL rootUrl, JellyContext context,
+                                  XMLOutput output )
+        throws Exception
+    {
+        URL oldRoot = context.getRootURL();
+        URL oldCurrent = context.getCurrentURL();
+
+        if ( rootUrl != null )
+        {
+            context.setRootURL( rootUrl );
+            context.setCurrentURL( rootUrl );
+        }
+
+        Script script = compileScript( scriptInputStream, systemId, context );
+        script.run( context, output );
+
+        context.setRootURL( oldRoot );
+        context.setCurrentURL( oldCurrent );
+    }
+
+    /**
+     * Run a jelly script.
+     *
+     * @param scriptFile Location of the script to run.
+     * @param rootUrl Root explicit context of the script.
+     * @param context Jelly context.
+     * @param output Output sink.
+     * @throws Exception If an error occurs while locating, compiling or
+     *      executing the script.
+     */
+    public static void runScript( File scriptFile, URL rootUrl, JellyContext context, XMLOutput output )
+        throws Exception
+    {
+        if ( !scriptFile.canRead() || scriptFile.length() < 1 )
+        {
+            return;
+        }
+        FileInputStream fis = null;
+        try
+        {
+            fis = new FileInputStream( scriptFile );
+            runScript( fis, scriptFile.toURL().toString(), rootUrl, context, output );
+        }
+        finally
+        {
+            if ( fis != null )
+            {
+                try
+                {
+                    fis.close();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "WARNING: Cannot close stream!", e );
+                }
+                fis = null;
+            }
+
+        }
+    }
+
+    /**
+     * Compile a jelly script.
+     *
+     * @param scriptFile Location of the script to run.
+     * @param context Jelly context.
+     * @throws Exception If an error occurs while locating or compiling the
+     *      script.
+     * @return The compiled script.
+     */
+    public static Script compileScript( File scriptFile, JellyContext context )
+        throws Exception
+    {
+        FileInputStream fis = null;
+        Script result = null;
+        try
+        {
+            fis = new FileInputStream( scriptFile );
+            result = compileScript( fis, scriptFile.toURL().toString(), context );
+        }
+        finally
+        {
+            if ( fis != null )
+            {
+                try
+                {
+                    fis.close();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "WARNING: Cannot close stream!", e );
+                }
+                fis = null;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Compile a jelly script.
+     *
+     * @param scriptInputStream Script input stream.
+     * @param context Jelly context.
+     * @throws Exception If an error occurs while locating or compiling the
+     *      script.
+     * @return The compiled script.
+     */
+    public static Script compileScript( InputStream scriptInputStream, JellyContext context )
+        throws Exception
+    {
+        return compileScript( scriptInputStream, null, context, null );
+    }
+
+    /**
+     * Compile a jelly script.
+     *
+     * @param scriptInputStream Script input stream.
+     * @param systemId the system identifier to help resolve relative URLs
+     * @param context Jelly context.
+     * @throws Exception If an error occurs while locating or compiling the
+     *      script.
+     * @return The compiled script.
+     */
+    public static Script compileScript( InputStream scriptInputStream, String systemId, JellyContext context )
+        throws Exception
+    {
+        return compileScript( scriptInputStream, systemId, context, null );
+    }
+
+    /**
+     * Compile a jelly script.
+     *
+     * @param scriptInputStream Script input stream.
+     * @param systemId the system identifier to help resolve relative URLs
+     * @param context Jelly context.
+     * @param encoding To use when reading XML.
+     * @throws Exception If an error occurs while locating or compiling the
+     *      script.
+     * @return The compiled script.
+     * @todo throw something else
+     */
+    public static Script compileScript( InputStream scriptInputStream, String systemId, JellyContext context,
+                                        String encoding )
+        throws Exception
+    {
+        // FIXME: This should all be done by Jelly.
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+        factory.setNamespaceAware( true );
+        XMLReader reader = factory.newSAXParser().getXMLReader();
+        XMLParser parser = new XMLParser( reader );
+        parser.setContext( context );
+        parser.setClassLoader( context.getClassLoader() );
+
+        Script script = null;
+
+        InputSource source = null;
+        if ( encoding != null )
+        {
+            InputStreamReader isr = null;
+            try
+            {
+                isr = new InputStreamReader( scriptInputStream, encoding );
+                source = new InputSource( isr );
+
+            }
+            finally
+            {
+                if ( isr != null )
+                {
+                    try
+                    {
+                        isr.close();
+                    }
+                    catch ( IOException e )
+                    {
+                        log.debug( "WARNING: Cannot close stream!", e );
+                    }
+                    isr = null;
+                }
+            }
+
+        }
+        else
+        {
+            source = new InputSource( scriptInputStream );
+        }
+
+        if ( systemId != null )
+        {
+            source.setSystemId( systemId );
+        }
+        if ( log.isDebugEnabled() )
+            log.debug( "the system identifier to help resolve relative URLs : " + systemId );
+        script = parser.parse( source );
+
+        script = script.compile();
+
+        return script;
+    }
+
+    /**
+     * Recursively evaluate a string representation of a jelly expression.
+     *
+     * @param text String representation of the a Jelly expression.
+     * @param context The Jelly context to compute the expression against.
+     *
+     * @return The recursively evaluated Jelly expression.
+     */
+    public static Expression decomposeExpression( String text, JellyContext context )
+    {
+        Expression expression = null;
+
+        try
+        {
+            expression = CompositeExpression.parse( text, mavenExpressionFactory );
+
+            String expressionText = expression.evaluateAsString( context );
+
+            if ( CompositeExpression.parse( expressionText, mavenExpressionFactory ) instanceof CompositeExpression )
+            {
+                expression = decomposeExpression( expressionText, context );
+            }
+        }
+        catch ( Exception e )
+        {
+            // do nothing.
+        }
+
+        return expression;
+    }
+
+    /**
+     * Debugging function to show the differences between two Jelly contexts.
+     * @param ctx1 first context
+     * @param ctx2 second context
+     */
+    public static void compareContexts( MavenJellyContext ctx1, MavenJellyContext ctx2 )
+    {
+        System.out.println( "======== compare contexts ========" );
+        for ( Iterator i = ctx1.getVariableNames(); i.hasNext(); )
+        {
+            String name = (String) i.next();
+            if ( ctx2.getVariable( name ) == null )
+            {
+                System.out.println( name + " not in ctx2" );
+            }
+            else
+            {
+                if ( !ctx2.getVariable( name ).equals( ctx1.getVariable( name ) ) )
+                {
+                    System.out.println( name + " doesn't match: '" + ctx1.getVariable( name ) + "' vs '"
+                        + ctx2.getVariable( name ) + "'" );
+                }
+            }
+        }
+        System.out.println( "======== comparison  done ========" );
+    }
+
+    /**
+     * Populate a context with variables, including parent variables if inheritance is enabled.
+     *
+     * @param destContext the destination context
+     * @param sourceContext the source context
+     */
+    public static void populateVariables( JellyContext destContext, JellyContext sourceContext )
+    {
+        if ( sourceContext != null )
+        {
+            if ( !"false".equals( sourceContext.getVariable( "maven.property.inheritance" ) )
+                && ( !"false".equals( destContext.getVariable( "maven.property.inheritance" ) ) ) )
+            {
+                populateVariables( destContext, sourceContext.isInherit() ? sourceContext.getParent() : null );
+            }
+            destContext.getVariables().putAll( sourceContext.getVariables() );
+        }
+        destContext.setVariable( "context", destContext );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenExpressionFactory.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenExpressionFactory.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenExpressionFactory.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,154 @@
+package org.apache.maven.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyContext;
+import org.apache.commons.jelly.JellyException;
+import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.jelly.expression.ExpressionFactory;
+import org.apache.commons.jelly.expression.ExpressionSupport;
+import org.apache.commons.jelly.expression.jexl.JexlExpression;
+
+/**
+ * Represents a factory of <a href="http://jakarta.apache.org/commons/jexl/">
+ * Jexl</a> expression which fully supports the Expression Language in JSTL and
+ * JSP. In addition this ExpressionFactory can also support Ant style variable
+ * names, where '.' is used inside variable names.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 423634 $
+ */
+
+public class MavenExpressionFactory
+    implements ExpressionFactory
+{
+    // ----------------------------------------------------------------------
+    //     Instance members
+    // ----------------------------------------------------------------------
+
+    /**
+     * whether we should allow Ant-style expresssions, using dots as part of
+     * variable name
+     */
+    private boolean supportAntVariables = true;
+
+    /** @see ExpressionFactory
+     */
+    public Expression createExpression( final String text )
+        throws JellyException
+    {
+        Expression expression = null;
+        try
+        {
+            expression = new JexlExpression( org.apache.commons.jexl.ExpressionFactory.createExpression( text ) );
+        }
+        catch ( Exception anException )
+        {
+            throw new JellyException( "error evaluating expression", anException );
+        }
+
+        final Expression jexlExpression = expression;
+
+        if ( isSupportAntVariables() && isValidAntVariableName( text ) )
+        {
+            ExpressionSupport expr = new ExpressionSupport()
+            {
+                public Object evaluate( JellyContext context )
+                {
+                    Object answer = jexlExpression.evaluate( context );
+
+                    if ( answer == null )
+                    {
+                        answer = context.getVariable( text );
+
+                        if ( answer instanceof String )
+                        {
+                            return JellyUtils.decomposeExpression( (String) answer, context );
+                        }
+                    }
+
+                    return answer;
+                }
+
+                public String getExpressionText()
+                {
+                    return text;
+                }
+
+                public String toString()
+                {
+                    return super.toString() + "[expression:" + text + "]";
+                }
+            };
+
+            return expr;
+        }
+
+        return jexlExpression;
+    }
+
+    // Properties
+    //-------------------------------------------------------------------------
+
+    /**
+     * @return whether we should allow Ant-style expresssions, using dots as
+     *      part of variable name
+     */
+    public boolean isSupportAntVariables()
+    {
+        return supportAntVariables;
+    }
+
+    /**
+     * Sets whether we should allow Ant-style expresssions, using dots as part
+     * of variable name
+     *
+     * @param supportAntVariables <code>true</code> to indicate that ant variable
+     *        should be supported, otherwise <code>false</code>.
+     */
+    public void setSupportAntVariables( boolean supportAntVariables )
+    {
+        this.supportAntVariables = supportAntVariables;
+    }
+
+    // Implementation methods
+    //-------------------------------------------------------------------------
+
+    /** Determine if a variable name is a valid ant variable name.
+     *
+     * @param text The text to test.
+     *
+     * @return true if the given string is a valid Ant variable name, typically
+     *      thats alphanumeric text with '.' etc.
+     */
+    protected boolean isValidAntVariableName( String text )
+    {
+        char[] chars = text.toCharArray();
+        for ( int i = 0, size = chars.length; i < size; i++ )
+        {
+            char ch = chars[i];
+            // could maybe be a bit more restrictive...
+            if ( Character.isWhitespace( ch ) || ch == '[' )
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenJellyContext.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenJellyContext.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/MavenJellyContext.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,727 @@
+package org.apache.maven.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.jelly.JellyContext;
+import org.apache.commons.jelly.TagLibrary;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenSession;
+import org.apache.maven.jelly.tags.jeez.MavenJeezTagLibrary;
+import org.apache.maven.project.Project;
+import org.apache.maven.werkz.WerkzProject;
+import org.codehaus.plexus.util.StringUtils;
+
+/** Specialized version of a <code>JellyContext</code>.
+ *
+ * <p>
+ * This class simply provides hooks for accessing the jelly
+ * run-time execution.  Typical idiom simply includes adding
+ * poor-man's-aspects (PMAs) to a <code>JellyContext</code>
+ * an explicitly invoking the super-class implementation
+ * of a given method.
+ * </p>
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: MavenJellyContext.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenJellyContext
+    extends JellyContext
+{
+    /** log for output */
+    private Log log = LogFactory.getLog( MavenJellyContext.class );
+
+    // ----------------------------------------------------------------------
+    // C O N S T R U C T O R S
+    // ----------------------------------------------------------------------
+
+    /** Construct.
+     */
+    public MavenJellyContext()
+    {
+        super();
+        initializeContext();
+    }
+
+    /** Construct.
+     *
+     *  @param rootContext The root context.
+     */
+    public MavenJellyContext( URL rootContext )
+    {
+        super( rootContext );
+        initializeContext();
+    }
+
+    /** Construct.
+     *
+     * @param parent Parent MavenJellyContext
+     */
+    public MavenJellyContext( MavenJellyContext parent )
+    {
+        super( parent );
+        initializeContext();
+    }
+
+    /**
+     * Create a context with this as the parent
+     * @return a new context
+     */
+    protected JellyContext createChildContext()
+    {
+        return new MavenJellyContext( this );
+    }
+
+    // ----------------------------------------------------------------------
+    // I N S T A N C E  M E T H O D S
+    // ----------------------------------------------------------------------
+
+    /**
+     * Initialize the context with any tag libs or other values we need.
+     */
+    private void initializeContext()
+    {
+        MavenJeezTagLibrary jeezTagLib = new MavenJeezTagLibrary();
+
+        registerTagLibrary( "jelly:mavenant", jeezTagLib );
+        registerTagLibrary( "", jeezTagLib );
+
+        // Avoid circular dependency
+        if ( !isTagLibraryRegistered( "jelly:maven" ) )
+        {
+            registerTagLibrary( "jelly:maven", "org.apache.maven.jelly.tags.maven.MavenTagLibrary" );
+        }
+    }
+
+    /** Register a new tag library.
+     *
+     *  <p>
+     *  This implementation calls the superclass
+     *  implementation after determining that there
+     *  is no other tag-lib registered for the
+     *  given <code>uri</code>.
+     *  </p>
+     *
+     *  @param uri Namespace URI to index the taglib.
+     *  @param taglib The tag-lib to register.
+     */
+    public void registerTagLibrary( String uri, TagLibrary taglib )
+    {
+        if ( !isTagLibraryRegistered( uri ) )
+        {
+            super.registerTagLibrary( uri, taglib );
+        }
+    }
+
+    /**
+     * Register a new tag library.
+     *
+     *  <p>
+     *  This implementation calls the superclass
+     *  implementation after determining that there
+     *  is no other tag-lib registered for the
+     *  given <code>namespaceURI</code>.
+     *  </p>
+     *
+     *  @param namespaceURI Namespace URI to index the taglib.
+     *  @param className The class name of the tag-lib to register.
+     */
+    public void registerTagLibrary( String namespaceURI, String className )
+    {
+        if ( !isTagLibraryRegistered( namespaceURI ) )
+        {
+            super.registerTagLibrary( namespaceURI, className );
+        }
+    }
+
+    /**
+     * Retrieve a registered <code>TagLibrary</code> by namespace URI.
+     *
+     * @param uri The namespace URI of the tag-library.
+     *
+     * @return The matching tag-library, or <code>null</code> if none matches.
+     */
+    public TagLibrary getTagLibrary( String uri )
+    {
+        return super.getTagLibrary( uri );
+    }
+
+    /** Retrieve a variable.
+     *
+     *  @param name The name of the variable.
+     *
+     *  @return The value of the variable, if set, otherwise
+     *  <code>null</code>.
+     */
+    public Object getVariable( String name )
+    {
+        Object value;
+
+        // We need to avoid calling getVariable() on a parent context so
+        // that expressions are evaluated lazily
+        if ( isInherit() )
+        {
+            value = super.findVariable( name );
+        }
+        else
+        {
+            value = super.getVariable( name );
+        }
+
+        if ( value instanceof Expression )
+        {
+            // TODO: need to handle instances of infinitely recursion when an expression contains itself
+            Expression expression = (Expression) value;
+            value = expression.evaluate( this );
+        }
+
+        return value;
+    }
+
+    /**
+     * Convert a <code>String</code> property to a
+     * <code>Boolean</code> based on its contents.  It would be nice
+     * if Jelly would deal with this automatically.
+     *
+     *  @param key The property key to lookup and convert.
+     *
+     *  @return The boolean value of the property if convertiable,
+     *          otherwise <code>Boolean.FALSE</code>.
+     */
+    public Boolean getBoolean( String key )
+    {
+        // After changing the processing everything is now a Boolean already
+        // but I want to keep the type check for the time being.
+
+        Object value = getVariable( key );
+
+        if ( value instanceof Boolean )
+        {
+            return (Boolean) value;
+        }
+
+        String stringValue = (String) value;
+
+        if ( "true".equalsIgnoreCase( stringValue ) || "on".equalsIgnoreCase( stringValue ) || "1".equals( value ) )
+        {
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // ----------------------------------------------------------------------
+    // A C C E S S O R S
+    // ----------------------------------------------------------------------
+
+    /**
+     * Set the mavenSession attribute.
+     *
+     * @param mavenSession the session for the context
+     */
+    public void setMavenSession( MavenSession mavenSession )
+    {
+        setVariable( MavenConstants.SESSION, mavenSession );
+    }
+
+    /**
+     * Get the mavenSession attribute.
+     *
+     * @return The
+     */
+    public MavenSession getMavenSession()
+    {
+        return (MavenSession) getVariable( MavenConstants.SESSION );
+    }
+
+    public void setMavenRepoRemotes( List mavenRepoRemote )
+    {
+        setVariable( MavenConstants.REPO_REMOTE, convertListToCsvString( mavenRepoRemote ) );
+    }
+
+    /**
+     * Get the mavenRepoRemote attribute.
+     *
+     * @return The list of remote repositories.
+     */
+    public List getMavenRepoRemote()
+    {
+        // We might have CSV list of remote repositories.
+        return convertCsvStringToList( (String) getVariable( MavenConstants.REPO_REMOTE ) );
+    }
+
+    /**
+     * Convert a CSV list of values into a List.
+     *
+     * @param csvString CVS list of values.
+     * @return The List of value.
+     */
+    private List convertCsvStringToList( String csvString )
+    {
+        ArrayList list = new ArrayList();
+        String[] s = StringUtils.split( csvString, "," );
+
+        for ( int i = 0; i < s.length; i++ )
+        {
+            list.add( s[i] );
+        }
+
+        return list;
+    }
+
+    /**
+     * Convert a List into a CSV list of values.
+     *
+     * @param list list of values.
+     * @return The CVS string
+     */
+    private String convertListToCsvString( List list )
+    {
+        StringBuffer buf = new StringBuffer();
+
+        for ( int i = 0; i < list.size(); i++ )
+        {
+            if ( i > 0 )
+            {
+                buf.append( "," );
+            }
+            buf.append( list.get( i ) );
+        }
+
+        return buf.toString();
+    }
+
+    /**
+     * Set the location of the local maven repository.
+     *
+     * @param mavenRepoLocal The local repository.
+     */
+    public void setMavenRepoLocal( String mavenRepoLocal )
+    {
+        setVariable( MavenConstants.REPO_LOCAL, mavenRepoLocal );
+    }
+
+    /**
+     * Get the location of the local maven repository.
+     *
+     * @return The local repository.
+     */
+    public String getMavenRepoLocal()
+    {
+        return (String) getVariable( MavenConstants.REPO_LOCAL );
+    }
+
+    /**
+     * Set the jelly output sink.
+     *
+     * @param xmlOutput The jelly output sink.
+     */
+    public void setXMLOutput( XMLOutput xmlOutput )
+    {
+        setVariable( MavenConstants.XML_OUTPUT, xmlOutput );
+    }
+
+    /**
+     * Get the jelly output sink.
+     *
+     * @return The jelly output sink.
+     */
+    public XMLOutput getXMLOutput()
+    {
+        return (XMLOutput) getVariable( MavenConstants.XML_OUTPUT );
+    }
+
+    /**
+     * Set the online flag.
+     *
+     * @param online The online flag.
+     */
+    public void setOnline( Boolean online )
+    {
+        setVariable( MavenConstants.ONLINE, online );
+    }
+
+    /**
+     * Get the online flag.
+     *
+     * @return The online flag.
+     */
+    public Boolean getOnline()
+    {
+        return getBoolean( MavenConstants.ONLINE );
+    }
+
+    /**
+     * Set the maven project.
+     *
+     * @param project The maven project.
+     */
+    public void setProject( Project project )
+    {
+        setVariable( MavenConstants.MAVEN_POM, project );
+    }
+
+    /**
+     * Get the maven project.
+     *
+     * @return The maven project.
+     */
+    public Project getProject()
+    {
+        return (Project) getVariable( MavenConstants.MAVEN_POM );
+    }
+
+    /**
+     * Set the proxy host.
+     *
+     * @param proxyHost The proxy host.
+     */
+    public void setProxyHost( String proxyHost )
+    {
+        setVariable( MavenConstants.PROXY_HOST, proxyHost );
+    }
+
+    /**
+     * Get the proxy host.
+     *
+     * @return The proxy host.
+     */
+    public String getProxyHost()
+    {
+        return (String) getVariable( MavenConstants.PROXY_HOST );
+    }
+
+    /**
+     * Set the proxy port.
+     *
+     * @param proxyPort The proxy port.
+     */
+    public void setProxyPort( String proxyPort )
+    {
+        setVariable( MavenConstants.PROXY_PORT, proxyPort );
+    }
+
+    /**
+     * Get the proxy port.
+     *
+     * @return The proxy port.
+     */
+    public String getProxyPort()
+    {
+        return (String) getVariable( MavenConstants.PROXY_PORT );
+    }
+
+    /**
+     *  Set the proxy user name.
+     *
+     * @param proxyUserName The user name setting for the proxy.
+     */
+    public void setProxyUserName( String proxyUserName )
+    {
+        setVariable( MavenConstants.PROXY_USERNAME, proxyUserName );
+    }
+
+    /**
+     * Get the proxy user name.
+     *
+     * @return The proxy user name.
+     */
+    public String getProxyUserName()
+    {
+        return (String) getVariable( MavenConstants.PROXY_USERNAME );
+    }
+
+    /**
+     * Set the proxy password.
+     *
+     * @param proxyPassword The proxy password.
+     */
+    public void setProxyPassword( String proxyPassword )
+    {
+        setVariable( MavenConstants.PROXY_PASSWORD, proxyPassword );
+    }
+
+    /**
+     * Get the proxy password.
+     *
+     * @return The ant project.
+     */
+    public String getProxyPassword()
+    {
+        return (String) getVariable( MavenConstants.PROXY_PASSWORD );
+    }
+
+    //!! Align these these two sets of methods to use getBoolean
+
+    /**
+     * Set the debug flag.
+     *
+     * @param debug The debug flag.
+     */
+    public void setDebugOn( Boolean debug )
+    {
+        setVariable( MavenConstants.DEBUG_ON, debug );
+    }
+
+    /**
+     * Get the debug flag.
+     *
+     * @return The debug flag.
+     */
+    public Boolean getDebugOn()
+    {
+        Boolean b = (Boolean) getVariable( MavenConstants.DEBUG_ON );
+
+        if ( b == null )
+        {
+            return Boolean.FALSE;
+        }
+
+        return b;
+    }
+
+    /**
+     * Set the emacs mode flag.
+     *
+     * @param emacsModeOn The emacs mode flag.
+     */
+    public void setEmacsModeOn( Boolean emacsModeOn )
+    {
+        setVariable( MavenConstants.EMACS_MODE_ON, emacsModeOn );
+    }
+
+    /**
+     * Get the emacs mode flag.
+     *
+     * @return The emacs mode flag.
+     */
+    public Boolean getEmacsModeOn()
+    {
+        Boolean b = (Boolean) getVariable( MavenConstants.EMACS_MODE_ON );
+
+        if ( b == null )
+        {
+            return Boolean.FALSE;
+        }
+
+        return b;
+    }
+
+    /**
+     * Set flag indicating if the remote repository is enabled for use.
+     *
+     * @param remoteRepositoryEnabled Remote repository usage flag.
+     */
+    public void setRemoteRepositoryEnabled( Boolean remoteRepositoryEnabled )
+    {
+        setVariable( MavenConstants.REPO_REMOTE_ENABLED, remoteRepositoryEnabled );
+    }
+
+    /**
+     * Set flag indicating if the remote repository is enabled for use.
+     *
+     * @return Remote repository usage flag.
+     */
+    public Boolean getRemoteRepositoryEnabled()
+    {
+        return getBoolean( MavenConstants.REPO_REMOTE_ENABLED );
+    }
+
+    /**
+     * Set the flag indicating the use of the JAR overriding facility.
+     *
+     * @param mavenJarOverride MavenSession jar override flag.
+     */
+    public void setMavenJarOverride( Boolean mavenJarOverride )
+    {
+        setVariable( MavenConstants.JAR_OVERRIDE, mavenJarOverride );
+    }
+
+    /**
+     * Get the flag indicating the use of the JAR overriding facility.
+     *
+     * @return MavenSession jar override flag.
+     */
+    public Boolean getMavenJarOverride()
+    {
+        return getBoolean( MavenConstants.JAR_OVERRIDE );
+    }
+
+    /**
+     * Get the maven jar override value for a particular dependency.
+     *
+     * @param id Id of the project to override.
+     * @return MavenSession jar override value for a particular dependency.
+     */
+    public String getMavenJarOverride( String id )
+    {
+        return (String) getVariable( MavenConstants.JAR_OVERRIDE_PROPERTY + id );
+    }
+
+    /**
+     * Get MavenSession home.
+     *
+     * @return MavenSession home.
+     */
+    public String getMavenHome()
+    {
+        return (String) getVariable( MavenConstants.MAVEN_HOME );
+    }
+
+    /**
+     * retrieve the werkz project object
+     * @param werkzProject {@link org.apache.maven.werkz.WerkzProject Werkz Project}
+     */
+    public void setWerkzProject( WerkzProject werkzProject )
+    {
+        setVariable( MavenConstants.WERKZ_PROJECT, werkzProject );
+    }
+
+    /**
+     * retrieve the werkz project object
+     * @return the {@link org.apache.maven.werkz.WerkzProject Werkz Project}
+     */
+    public WerkzProject getWerkzProject()
+    {
+        return (WerkzProject) getVariable( MavenConstants.WERKZ_PROJECT );
+    }
+
+    /**
+     * Set the ant project.
+     *
+     * @param antProject The proxy password.
+     */
+    public void setAntProject( org.apache.tools.ant.Project antProject )
+    {
+        setVariable( MavenConstants.MAVEN_ANT_PROJECT, antProject );
+    }
+
+    /**
+     * Get the ant project.
+     *
+     * @return The ant project.
+     */
+    public org.apache.tools.ant.Project getAntProject()
+    {
+        return (org.apache.tools.ant.Project) getVariable( MavenConstants.MAVEN_ANT_PROJECT );
+    }
+
+    /**
+     * Display all maven variables
+     */
+    public void display()
+    {
+        for ( Iterator i = getVariableNames(); i.hasNext(); )
+        {
+            String key = (String) i.next();
+
+            if ( key.startsWith( "maven" ) )
+            {
+                log.info( key + ": " + getVariable( key ) );
+            }
+        }
+    }
+
+    /**
+     * Get local maven home.
+     *
+     * @return location of Maven local home installation.
+     */
+    public String getMavenHomeLocal()
+    {
+        return (String) getVariable( MavenConstants.MAVEN_HOME_LOCAL );
+    }
+
+    /**
+     * Get plugins location.
+     *
+     * @return plugins location.
+     */
+    public String getPluginsDir()
+    {
+        return (String) getVariable( MavenConstants.MAVEN_PLUGINS_DIR );
+    }
+
+    /**
+     * Get user plugins location.
+     *
+     * @return user plugins location.
+     */
+    public String getUserPluginsDir()
+    {
+        return (String) getVariable( MavenConstants.MAVEN_USER_PLUGINS_DIR );
+    }
+
+    /**
+     * Get unpacked plugins location.
+     *
+     * @return unpacked plugins location.
+     */
+    public String getUnpackedPluginsDir()
+    {
+        return (String) getVariable( MavenConstants.MAVEN_UNPACKED_PLUGINS_DIR );
+    }
+
+    /**
+     * @see JellyContext#setParent(JellyContext)
+     */
+    public void setParent( JellyContext context )
+    {
+        super.setParent( context );
+    }
+
+    public void resolveRelativePaths( File basedir )
+    {
+        resolveRelativePath( basedir, MavenConstants.REPO_LOCAL );
+        resolveRelativePath( basedir, MavenConstants.MAVEN_USER_PLUGINS_DIR );
+        resolveRelativePath( basedir, MavenConstants.MAVEN_UNPACKED_PLUGINS_DIR );
+        resolveRelativePath( basedir, MavenConstants.MAVEN_PLUGINS_DIR );
+        resolveRelativePath( basedir, MavenConstants.MAVEN_HOME_LOCAL );
+        resolveRelativePath( basedir, MavenConstants.MAVEN_HOME );
+    }
+
+    private void resolveRelativePath( File basedir, String var )
+    {
+        String value = (String) getVariable( var );
+        File f = new File( value );
+
+        if ( f.getParentFile() != null && !f.getParentFile().exists() )
+        {
+            f.getParentFile().mkdirs();
+        }
+
+        // Need to check for / at the start to convince windows that it is absolute
+        if ( !f.isAbsolute() && !value.startsWith( "/" ) && !value.startsWith( "\\" ) )
+        {
+            f = new File( basedir, f.getPath() );
+            log.debug( "Resolving " + var + " to " + f );
+            setVariable( var, f.getAbsolutePath() );
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.jelly</title>
+</head>
+<body>
+  <p>Jelly utilities.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagLibrary.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,41 @@
+package org.apache.maven.jelly.tags;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.tags.core.CoreTagLibrary;
+import org.apache.maven.jelly.tags.maven.MavenTagLibrary;
+
+/**
+ * MavenSession tag library for use in Jelly scripts.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: BaseTagLibrary.java 178075 2005-05-24 04:52:39Z brett $
+ */
+public class BaseTagLibrary
+    extends CoreTagLibrary
+{
+    /**
+     * Create an instance of the {@link MavenTagLibrary}, registering related
+     * tag libraries
+     */
+    public BaseTagLibrary()
+    {
+        super();
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagLibrary.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagSupport.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagSupport.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagSupport.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,63 @@
+package org.apache.maven.jelly.tags;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.TagSupport;
+import org.apache.maven.jelly.MavenJellyContext;
+
+/**
+ * A class for Maven Jelly tags
+ */
+public abstract class BaseTagSupport
+    extends TagSupport
+{
+    /**
+     * Create an instance
+     */
+    public BaseTagSupport()
+    {
+        super();
+    }
+
+    /**
+     * @return the maven context (used to retrieve variables)
+     */
+    public MavenJellyContext getMavenContext()
+    {
+        return (MavenJellyContext) getContext();
+    }
+
+    /**
+     * Check a given 'attribute' has a value and throw the corresponding
+     * exception if it doesn't
+     *
+     * @param attribute the attribute to check
+     * @param message the message to pass in with the exception
+     * @throws MissingAttributeException when the attribute is null
+     */
+    protected void checkAttribute( Object attribute, String message )
+        throws MissingAttributeException
+    {
+        if ( attribute == null )
+        {
+            throw new MissingAttributeException( message );
+        }
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/BaseTagSupport.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,109 @@
+package org.apache.maven.jelly.tags.jeez;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyException;
+import org.apache.commons.jelly.Tag;
+import org.apache.commons.jelly.TagLibrary;
+import org.apache.commons.jelly.impl.DynamicTagLibrary;
+import org.apache.commons.jelly.impl.TagFactory;
+import org.apache.commons.jelly.impl.TagScript;
+import org.apache.commons.jelly.tags.ant.AntTagLibrary;
+import org.apache.maven.werkz.jelly.WerkzTagLibrary;
+import org.xml.sax.Attributes;
+
+/** Convenience taglib that puts jelly:core, jelly:werkz and jelly:ant
+ *  into a single namespace.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @version $Revision: 423634 $
+ */
+public class JeezTagLibrary
+    extends DynamicTagLibrary
+{
+    /** jelly:werkz taglib. */
+    private TagLibrary werkzTagLib = new WerkzTagLibrary();
+
+    /** jelly:ant taglib. */
+    private AntTagLibrary antTagLib = new AntTagLibrary();
+
+    /**
+     * Create a script from the element and the attributes.
+     * This method will check for 'tagdef' and 'target' tags, and try to create
+     * an instance of these tags first.
+     *
+     * Failing that it tries to create a werkz tag script followed by an ant
+     * 'custom tag script' (i.e. one for filescanner or setProperty).
+     *
+     * If all else fails, it creates a TagScript from a factory that creates a script
+     * from either a Jeez tag, or an Ant tag
+     * @see org.apache.commons.jelly.TagLibrary#createTagScript(java.lang.String, org.xml.sax.Attributes)
+     */
+    public TagScript createTagScript( final String name, Attributes attrs )
+        throws JellyException
+    {
+
+        if ( name.equals( "tagdef" ) )
+        {
+            return new TagScript( new TagFactory()
+            {
+                public Tag createTag( String name, Attributes attributes )
+                {
+                    return new TagDefTag( JeezTagLibrary.this );
+                }
+            } );
+        }
+        if ( name.equals( "target" ) )
+        {
+            return new TagScript( new TagFactory()
+            {
+                public Tag createTag( String name, Attributes attributes )
+                {
+                    return new TargetTag();
+                }
+            } );
+        }
+
+        TagScript script = werkzTagLib.createTagScript( name, attrs );
+        if ( script == null )
+        {
+            script = antTagLib.createCustomTagScript( name, attrs );
+            if ( script == null )
+            {
+                return new TagScript( new TagFactory()
+                {
+                    public Tag createTag( String name, Attributes attributes )
+                        throws JellyException
+                    {
+                        // lets try create a dynamic tag first
+                        Tag tag = JeezTagLibrary.this.createTag( name, attributes );
+                        if ( tag != null )
+                        {
+                            return tag;
+                        }
+                        else
+                        {
+                            return antTagLib.createTag( name, attributes );
+                        }
+                    }
+                } );
+            }
+        }
+        return script;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,66 @@
+package org.apache.maven.jelly.tags.jeez;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyException;
+import org.apache.commons.jelly.impl.TagScript;
+import org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag;
+import org.apache.maven.jelly.tags.werkz.MavenGoalTag;
+import org.xml.sax.Attributes;
+
+/** Replacement for Jelly's <code>JeezTagLibrary</code>.
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ *
+ *  @version $Id: MavenJeezTagLibrary.java 424460 2006-07-21 21:37:20Z aheritier $
+ */
+public class MavenJeezTagLibrary
+    extends JeezTagLibrary
+{
+    // ------------------------------------------------------------
+    //     org.apache.commons.jelly.tags.jeez.JeezTagLibrary
+    // ------------------------------------------------------------
+
+    /** Create a <code>TagScript</code> based upon an element's
+     *  name and attributes.
+     *
+     *  @param name The name.
+     *  @param attrs The attributes.
+     *  @return Generated <code>TagScript</code> from an elements
+     *   name and attributes.
+     *
+     *  @throws JellyException If an error occurs while attempting to
+     *          create the script.
+     */
+
+    public TagScript createTagScript( String name, Attributes attrs )
+        throws JellyException
+    {
+        if ( "goal".equals( name ) )
+        {
+            return TagScript.newInstance( MavenGoalTag.class );
+        }
+        else if ( "attainGoal".equals( name ) )
+        {
+            return TagScript.newInstance( MavenAttainGoalTag.class );
+        }
+
+        // Otherwise, act like nothing is different.
+        return super.createTagScript( name, attrs );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,54 @@
+package org.apache.maven.jelly.tags.jeez;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.impl.DynamicTagLibrary;
+import org.apache.commons.jelly.tags.define.TagTag;
+
+/**
+ * This tag defines a dynamic tag in Jelly script. When the tag is invoked
+ * any attributes will be passed in as variables and the definition of the
+ * tag can use &lt;define:invokeBody&gt to invoke its body.
+ * <p>
+ * This tag is similar to the &lt;define:tag&gt; tag in the define
+ * tag library.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 423634 $
+ */
+public class TagDefTag
+    extends TagTag
+{
+
+    private DynamicTagLibrary tagLibrary;
+
+    public TagDefTag( DynamicTagLibrary tagLibrary )
+    {
+        this.tagLibrary = tagLibrary;
+    }
+
+    /**
+     * @return the current JeezTagLibrary instance
+     */
+    protected DynamicTagLibrary getTagLibrary()
+        throws JellyTagException
+    {
+        return tagLibrary;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+package org.apache.maven.jelly.tags.jeez;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.werkz.jelly.GoalTag;
+
+/** Wraps a Werkz <code>&lt;goal&gt;</code> to appear as an
+ *  ant <code>&lt;target&gt;</code>.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @version $Revision: 423634 $
+ */
+public class TargetTag
+    extends GoalTag
+{
+
+    public TargetTag()
+    {
+    }
+
+    public void setDepends( String depends )
+    {
+        setPrereqs( depends );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/jeez/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,29 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+</head>
+<body>
+
+  <p>This tag library groups together the ant and werkz tag libraries into one namespace.
+  	This allows Maven scripts to set this as the default namespace to avoid folks having to use
+  	namespace prefixes for common stuff.
+  </p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/AddPathTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/AddPathTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/AddPathTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,119 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.jelly.tags.ant.AntTagLibrary;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Path;
+
+/**
+ * This class takes a given path using an <code>id</code> and appends another
+ * path (using <code>refid</code>) to it.
+ *
+ * @author Bob McWhirter
+ * @version $Id: AddPathTag.java 426251 2006-07-27 21:23:33Z ltheussl $
+ */
+public class AddPathTag
+    extends BaseTagSupport
+{
+    /** the id of the path to be appended to. */
+    private String id;
+
+    /** the path to append */
+    private String refid;
+
+    /**
+     * Perform the tag processing. Look up the path by {@link #getId id} and append
+     * the {@link #getRefid other path} to it.
+     *
+     * @param output used to write output
+     * @throws JellyTagException when anything goes wrong.
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        Project project = AntTagLibrary.getProject( getContext() );
+
+        if ( project == null )
+        {
+            throw new JellyTagException( "cannot find ant project" );
+        }
+
+        checkAttribute( getId(), "id" );
+        checkAttribute( getRefid(), "refid" );
+
+        Path path = (Path) project.getReferences().get( getId() );
+        if ( path == null )
+        {
+            throw new JellyTagException( "cannot find the path to add to specified by 'id': " + getId() );
+        }
+        Path addPath = (Path) project.getReferences().get( getRefid() );
+        if ( addPath == null )
+        {
+            throw new JellyTagException( "cannot find the path to add specified by 'refid': " + getRefid() );
+        }
+        path.append( addPath );
+    }
+
+    /**
+     * Setter for the id property
+     *
+     * @param pathId the reference id of the path in the ant project that will be
+     * appended to
+     */
+    public void setId( String pathId )
+    {
+        id = pathId;
+    }
+
+    /**
+     * Getter for the id property
+     *
+     * @return the reference id of the path in the ant project that will be
+     * appended to
+     */
+    public String getId()
+    {
+        return id;
+    }
+
+    /**
+     * Setter for the refid property
+     *
+     * @param pathToAppendId the reference id of the path in the ant project that will
+     * be appended
+     */
+    public void setRefid( String pathToAppendId )
+    {
+        refid = pathToAppendId;
+    }
+
+    /**
+     * Getter for the refid property
+     *
+     * @return the reference id of the path in the ant project that will be
+     * appended
+     */
+    public String getRefid()
+    {
+        return refid;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ConcatTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ConcatTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ConcatTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,110 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+
+/**
+ * Concat a set of files together into a single file.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: ConcatTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class ConcatTag
+    extends MavenTag
+{
+    /** Output file. */
+    private File outputFile;
+
+    /** List of file to concatenate together. */
+    private ArrayList files = new ArrayList();
+
+    /** Set output file. */
+    public void setOutputFile( File outputFile )
+    {
+        this.outputFile = outputFile;
+    }
+
+    /** Add a file to the list of files of be concatenated. */
+    public void addFile( File file )
+    {
+        files.add( file );
+    }
+
+    /**
+     * Perform functionality provided by the tag.
+     *
+     * @throws JellyTagException If there is an error while concatenating the file.
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        try
+        {
+            // Make sure we have an output file.
+            checkAttribute( outputFile, "outputFile" );
+
+            // Collect all the input files by invoking the body.
+            invokeBody( output );
+
+            // If the directory where the output file is going to land
+            // doesn't exists then create it.
+            File outputFileDirectory = outputFile.getParentFile();
+
+            if ( !outputFileDirectory.exists() )
+            {
+                outputFileDirectory.mkdirs();
+            }
+
+            FileOutputStream fos = new FileOutputStream( outputFile );
+
+            // We should now have all the files we want to concat so
+            // lets do it.
+            for ( Iterator i = files.iterator(); i.hasNext(); )
+            {
+                File f = (File) i.next();
+                FileInputStream in = new FileInputStream( f );
+
+                int count;
+                byte[] b = new byte[512];
+                while ( ( count = in.read( b ) ) > 0 ) // blocking read
+                {
+                    fos.write( b, 0, count );
+                }
+
+                in.close();
+            }
+
+            fos.flush();
+            fos.close();
+        }
+        catch ( IOException e )
+        {
+            throw new JellyTagException( e );
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ConcatTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/CopyResources.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/CopyResources.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/CopyResources.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,168 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.project.Resource;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.PatternSet;
+
+/**
+ * A tag to copy resources to a given directory
+ *
+ * @version $Revision: 424660 $
+ */
+public class CopyResources
+    extends BaseTagSupport
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( CopyResources.class );
+
+    /** the resources to copy */
+    private List resources;
+
+    /** the directory to copy to */
+    private String todir;
+
+    /**
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        if ( resources == null || todir == null )
+        {
+            log.warn( "resources or todir was null" );
+            return;
+        }
+        //      <j:forEach var="resource" items="${resources}">
+        //        <j:set var="resourceDirectoryPresent" value="false"/>
+        //
+        //        <util:available file="${resource.directory}">
+        //          <j:set var="resourceDirectoryPresent" value="true"/>
+        //        </util:available>
+        //
+        //        <j:if test="${resourceDirectoryPresent == 'true'}">
+        //          <j:choose>
+        //            <j:when test="${resource.targetPath ==''}">
+        //              <j:set var="targetDirectory" value="${todir}"/>
+        //            </j:when>
+        //            <j:otherwise>
+        //              <j:set var="targetDirectory" value="${todir}/${resource.targetPath}"/>
+        //            </j:otherwise>
+        //          </j:choose>
+        //          <copy todir="${targetDirectory}" filtering="${resource.filtering}"
+        //              overwrite="${resource.filtering}">
+        //            <fileset dir="${resource.directory}">
+        //              <j:if test="${resources.includes.isEmpty()}">
+        //                <include name="**/**"/>
+        //              </j:if>
+        //              <j:forEach var="include" items="${resource.includes}">
+        //                <include name="${include}"/>
+        //              </j:forEach>
+        //              <j:forEach var="exclude" items="${resource.excludes}">
+        //                <exclude name="${exclude}"/>
+        //              </j:forEach>
+        //            </fileset>
+        //          </copy>
+        //        </j:if>
+        //      </j:forEach>
+
+        for ( Iterator iter = resources.iterator(); iter.hasNext(); )
+        {
+            Resource resource = (Resource) iter.next();
+            String directoryName = resource.getDirectory();
+            if ( directoryName == null )
+            {
+                continue;
+            }
+            File directory = new File( directoryName );
+            if ( directory.exists() && directory.isDirectory() && directory.canRead() )
+            {
+                StringBuffer targetDirectoryBuffer = new StringBuffer( todir );
+                String targetPath = resource.getTargetPath();
+                if ( targetPath != null && !"".equals( targetPath.trim() ) )
+                {
+                    targetDirectoryBuffer.append( '/' ).append( targetPath );
+                }
+                File targetDirectory = new File( targetDirectoryBuffer.toString() );
+                // copy to targetDirectory....
+                org.apache.tools.ant.taskdefs.Copy copyTask = new org.apache.tools.ant.taskdefs.Copy();
+                copyTask.setProject( getMavenContext().getAntProject() );
+                copyTask.setTodir( targetDirectory );
+                copyTask.setPreserveLastModified( true );
+                copyTask.setFiltering( resource.isFiltering() );
+                copyTask.setOverwrite( resource.isFiltering() );
+                FileSet fileSet = new FileSet();
+                fileSet.setDir( directory );
+                if ( resource.getIncludes().isEmpty() )
+                {
+                    PatternSet.NameEntry entry = fileSet.createInclude();
+                    entry.setName( "**/**" );
+                }
+                // add includes
+                for ( Iterator incIter = resource.getIncludes().iterator(); incIter.hasNext(); )
+                {
+                    String include = (String) incIter.next();
+                    PatternSet.NameEntry entry = fileSet.createInclude();
+                    entry.setName( include );
+                }
+                // add excludes
+                for ( Iterator incIter = resource.getExcludes().iterator(); incIter.hasNext(); )
+                {
+                    String exclude = (String) incIter.next();
+                    PatternSet.NameEntry entry = fileSet.createExclude();
+                    entry.setName( exclude );
+                }
+                copyTask.addFileset( fileSet );
+                copyTask.execute();
+            }
+            else
+            {
+                log.debug( "todir is either not a directory, not writable or not there" );
+            }
+        }
+
+    }
+
+    /**
+     * @param list the resources to copy
+     */
+    public void setResources( List list )
+    {
+        resources = list;
+    }
+
+    /**
+     * @param string the directory to copy them to
+     */
+    public void setTodir( String string )
+    {
+        todir = string;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolver.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolver.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolver.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,132 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.project.Project;
+
+/**
+ * @author <a href="mailto:bwalding at apache.org">Ben Walding</a>
+ * @version $Id: DependencyResolver.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class DependencyResolver
+    implements DependencyResolverInterface
+{
+
+    private final DependencyResolverInterface impl;
+
+    /**
+     * Creates the dependency resolver. The implementation is chosen by the
+     * System property "maven.core.dependencyresolver".  By default it is
+     * the WerkzDependencyResolver. Ultimately I see this proxy being removed.
+     *
+     * @see java.lang.Object#Object()
+     */
+    public DependencyResolver()
+    {
+        String prop = "maven.core.dependencyresolver";
+        String type = System.getProperty( prop );
+        try
+        {
+
+            if ( type == null )
+            {
+                impl = new WerkzDependencyResolver();
+            }
+            else
+            {
+                impl = (DependencyResolverInterface) Class.forName( type ).newInstance();
+            }
+        }
+        catch ( Exception e )
+        {
+            throw new RuntimeException( "Unable to create " + type );
+        }
+    }
+
+    /**
+     * Creates the dependency resolver with a specific implementation
+     *
+     * @param impl
+     */
+    public DependencyResolver( DependencyResolverInterface impl )
+    {
+        this.impl = impl;
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#clear()
+     */
+    public void clear()
+    {
+        impl.clear();
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#setProjects(java.util.List)
+     */
+    public void setProjects( List projects )
+    {
+        impl.setProjects( projects );
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project)
+     */
+    public List getSortedDependencies( Project project )
+        throws DependencyResolverException
+    {
+        return impl.getSortedDependencies( project );
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project, boolean)
+     */
+    public List getSortedDependencies( Project project, boolean sourceBuild )
+        throws DependencyResolverException
+    {
+        return impl.getSortedDependencies( project, sourceBuild );
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(boolean)
+     */
+    public List getSortedDependencies( boolean sourceBuild )
+        throws DependencyResolverException
+    {
+        return impl.getSortedDependencies( sourceBuild );
+    }
+
+    public static Project getProject( List projects, String id )
+    {
+        Iterator iter = projects.iterator();
+        while ( iter.hasNext() )
+        {
+            Project project = (Project) iter.next();
+            if ( project.getId().equals( id ) )
+            {
+                return project;
+            }
+        }
+        return null;
+
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,22 @@
+package org.apache.maven.jelly.tags.maven;
+
+/*
+ * DependencyResolverException.java
+ */
+
+import org.apache.maven.MavenException;
+
+/**
+ * TODO: describe
+ *
+ * @author Brett Porter
+ * @version $Id: DependencyResolverException.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class DependencyResolverException
+    extends MavenException
+{
+    public DependencyResolverException( String s, Throwable throwable )
+    {
+        super( s, throwable );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverInterface.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverInterface.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/DependencyResolverInterface.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,72 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.List;
+
+import org.apache.maven.project.Project;
+
+/**
+ * @author <a href="mailto:bwalding at apache.org">Ben Walding</a>
+ * @version $Id: DependencyResolverInterface.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public interface DependencyResolverInterface
+{
+    /**
+     * Clear the project list and set the graph built flag to false.
+     */
+    void clear();
+
+    /**
+     * Set a list of projects to process.
+     *
+     * @param projects List of projects.
+     */
+    void setProjects( List projects );
+
+    /**
+     * Get the list of projects in dependency sorted order.
+     *
+     * @param project The project to use as the head of the graph.
+     * @return The list of projects.
+     * @throws DependencyResolverException If an error occurs while processing the graph.
+     */
+    List getSortedDependencies( Project project )
+        throws DependencyResolverException;
+
+    /**
+     * Get the list of projects in dependency sorted order.
+     *
+     * @param project     The project to use as the head of the graph.
+     * @param sourceBuild Indicate we are performing a source build.
+     * @return The list of projects.
+     * @throws DependencyResolverException If an error occurs while processing the graph.
+     */
+    List getSortedDependencies( Project project, boolean sourceBuild )
+        throws DependencyResolverException;
+
+    /**
+     * Get the list of projects in dependency sorted order.
+     *
+     * @param sourceBuild Flag to indicate we are performing a source build.
+     * @return The list of projects.
+     * @throws DependencyResolverException If an error occurs while processing the graph.
+     */
+    List getSortedDependencies( boolean sourceBuild )
+        throws DependencyResolverException;
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/GetTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/GetTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/GetTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,128 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.plugin.UnknownPluginException;
+import org.apache.maven.project.Project;
+
+/**
+ * A tag to retrieve values from plugins
+ */
+public class GetTag
+    extends BaseTagSupport
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( GetTag.class );
+
+    /** the variable to set*/
+    private String var;
+
+    /** the plugin to get the variable from*/
+    private String plugin;
+
+    /** the name of the plugin property to retrieve */
+    private String property;
+
+    /**
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        checkAttribute( var, "var" );
+        checkAttribute( plugin, "plugin" );
+        checkAttribute( property, "property" );
+        Project project = getMavenContext().getProject();
+        try
+        {
+            MavenJellyContext context = project.getPluginContext( plugin );
+            if ( context != null )
+            {
+                Object value = context.getVariable( property );
+                getContext().setVariable( var, value );
+            }
+            else
+            {
+                log.error( "context for plugin '" + plugin + "' in project '" + project + "' is null" );
+            }
+        }
+        catch ( UnknownPluginException e )
+        {
+            log.error( "Plugin '" + plugin + "' in project '" + project + "' is not available" );
+        }
+        catch ( Exception e )
+        {
+            throw new JellyTagException( "Error loading plugin", e );
+        }
+    }
+
+    /**
+     * @return the plugin to retrieve the property from.
+     */
+    public String getPlugin()
+    {
+        return plugin;
+    }
+
+    /**
+     * @return the name of the property being retrieved
+     */
+    public String getProperty()
+    {
+        return property;
+    }
+
+    /**
+     * @return the variable name to set
+     */
+    public String getVar()
+    {
+        return var;
+    }
+
+    /**
+     * @param pluginId the id of the plugin to retrieve the property from
+     */
+    public void setPlugin( String pluginId )
+    {
+        plugin = pluginId;
+    }
+
+    /**
+     * @param propertyName the name of the property being retrieved
+     */
+    public void setProperty( String propertyName )
+    {
+        property = propertyName;
+    }
+
+    /**
+     * @param variable the variable name to set
+     */
+    public void setVar( String variable )
+    {
+        this.var = variable;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/GetTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InputTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InputTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InputTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,60 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+
+/**
+ * Concat a set of files together into a single file.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: InputTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class InputTag
+    extends MavenTag
+{
+    /** Output file. */
+    private File file;
+
+    /** Set output file. */
+    public void setFile( File file )
+    {
+        this.file = file;
+    }
+
+    /**
+     * Perform functionality provided by the tag.
+     *
+     * @throws JellyTagException If there is an error while concatenating the file.
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        ConcatTag tag = (ConcatTag) findAncestorWithClass( ConcatTag.class );
+
+        if ( tag == null )
+        {
+            throw new JellyTagException( "no current concatenation" );
+        }
+
+        tag.addFile( file );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InputTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InstallPluginTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InstallPluginTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InstallPluginTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,69 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.plugin.PluginManager;
+
+/**
+ * A Maven Jelly tag that will install a given plugin JAR using the plugin manager.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: InstallPluginTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class InstallPluginTag
+    extends BaseTagSupport
+{
+    private File file;
+
+    private boolean cache = false;
+
+    public void setCache( boolean cache )
+    {
+        this.cache = cache;
+    }
+
+    public void setFile( File file )
+    {
+        this.file = file;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( file, "file" );
+
+        PluginManager manager = getMavenContext().getMavenSession().getPluginManager();
+        try
+        {
+            manager.installPlugin( file, null, cache );
+        }
+        catch ( Exception e )
+        {
+            throw new JellyTagException( "error installing plugin", e );
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/InstallPluginTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeAbsolutePathTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeAbsolutePathTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeAbsolutePathTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,93 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * Jelly tag to convert a relative path into an absolute path by prepending the basedir if it
+ * is relative.
+ *
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ */
+public class MakeAbsolutePathTag
+    extends BaseTagSupport
+{
+    /** The base dir. */
+    private File basedir;
+
+    /** The path to convert. */
+    private String path;
+
+    /** The jelly variable to store the result into. */
+    private String var;
+
+    /**
+     * Set the base directory.
+     * @param basedir the base directory.
+     */
+    public void setBasedir( File basedir )
+    {
+        this.basedir = basedir;
+    }
+
+    /**
+     * Set the path.
+     * @param path the path.
+     */
+    public void setPath( String path )
+    {
+        this.path = path;
+    }
+
+    /**
+     * Set the result variable.
+     * @param var the result variable name.
+     */
+    public void setVar( String var )
+    {
+        this.var = var;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( basedir, "basedir" );
+        checkAttribute( path, "path" );
+        checkAttribute( var, "var" );
+
+        try
+        {
+            getContext().setVariable( var, MavenUtils.makeAbsolutePath( basedir, path ) );
+        }
+        catch ( IOException e )
+        {
+            throw new JellyTagException( "Unable to resolve directory", e );
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeAbsolutePathTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeRelativePathTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeRelativePathTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeRelativePathTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,121 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.util.StringTokenizer;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * Jelly tag to convert an absolute path into a relative path by removing the basedir.
+ *
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ */
+public class MakeRelativePathTag
+    extends BaseTagSupport
+{
+    /** The base dir. */
+    private File basedir;
+
+    /** The path to convert. */
+    private String path;
+
+    /** Force a certain path separator. */
+    private String separator = null;
+
+    /** The jelly variable to store the result into. */
+    private String var;
+
+    /**
+     * Set the base directory.
+     * @param basedir the base directory.
+     */
+    public void setBasedir( File basedir )
+    {
+        this.basedir = basedir;
+    }
+
+    /**
+     * Set the path. This has to be absolute under basedir.
+     * @param path the path.
+     */
+    public void setPath( String path )
+    {
+        this.path = path;
+    }
+
+    /**
+     * Set the path separator to use.
+     * @param separator the separator.
+     */
+    public void setSeparator( String separator )
+    {
+        this.separator = separator;
+    }
+
+    /**
+     * Set the result variable. Returns path if path is not absolute under basedir.
+     * @param var the result variable name.
+     */
+    public void setVar( String var )
+    {
+        this.var = var;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( basedir, "basedir" );
+        checkAttribute( path, "path" );
+        checkAttribute( var, "var" );
+
+        try
+        {
+            String canonicalPath = MavenUtils.makeRelativePath( basedir, path );
+            if ( separator != null )
+            {
+                StringBuffer buf = new StringBuffer();
+                StringTokenizer tok = new StringTokenizer( canonicalPath, "/\\" );
+                while ( tok.hasMoreTokens() )
+                {
+                    buf.append( tok.nextToken() );
+                    if ( tok.hasMoreTokens() )
+                    {
+                        buf.append( separator );
+                    }
+                }
+                canonicalPath = buf.toString();
+            }
+            getContext().setVariable( var, canonicalPath );
+        }
+        catch ( IOException e )
+        {
+            throw new JellyTagException( "Unable to resolve directory", e );
+        }
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MakeRelativePathTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,180 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.project.Project;
+
+/**
+ * A way of running maven as a Jelly tag
+ *
+ * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: MavenTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ *
+ * @todo get rid of 'throws Exception'
+ */
+public class MavenTag
+    extends BaseTagSupport
+{
+    /** maven project descriptor */
+    private File descriptor;
+
+    /** goals to verify */
+    private String goals;
+
+    /** whether to ignore exceptions */
+    private boolean ignoreFailures;
+
+    /**
+     * Process the tag. Set up a new maven instance with the same maven home
+     * as the one under <code>maven.obj</code> in the context, add the provided
+     * goals and verify.
+     *
+     * @param output for providing xml output
+     * @throws JellyTagException if anything goes wrong.
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( getDescriptor(), "descriptor" );
+
+        Project project = null;
+        try
+        {
+            project = MavenUtils.getProject( getDescriptor(), getMavenContext().getMavenSession().getRootContext() );
+            project.verifyDependencies();
+            getMavenContext().getMavenSession().getPluginManager().processDependencies( project );
+
+            // Set the project goals if they have been specified.
+            List goalList = new ArrayList();
+            if ( getGoals() != null )
+            {
+                goalList.addAll( MavenUtils.getGoalListFromCsv( getGoals() ) );
+            }
+
+            getMavenContext().getMavenSession().attainGoals( project, goalList );
+        }
+        catch ( Exception e )
+        {
+            if ( isIgnoreFailures() )
+            {
+                getMavenContext().setVariable( MavenConstants.BUILD_FAILURE, "true" );
+                if ( project != null )
+                {
+                    Collection c = (Collection) getContext().getVariable( MavenConstants.FAILED_PROJECTS );
+                    if ( c == null )
+                    {
+                        c = new ArrayList();
+                    }
+                    c.add( project );
+                    getContext().setVariable( MavenConstants.FAILED_PROJECTS, c );
+                }
+                return;
+            }
+
+            throw new JellyTagException( e );
+        }
+    }
+
+    // ------------------------------------------------------------
+    // A C C E S S O R S
+    // ------------------------------------------------------------
+
+    /**
+     * Setter for the descriptor property
+     *
+     * @param descriptor the maven project descriptor to be read
+     */
+    public void setDescriptor( File descriptor )
+    {
+        this.descriptor = descriptor;
+    }
+
+    /**
+     * Getter for the descriptor property
+     *
+     * @return the maven project descriptor to be read
+     */
+    public File getDescriptor()
+    {
+        return this.descriptor;
+    }
+
+    /**
+     * Setter for the basedir property
+     *
+     * @param basedir the base directory for execution of the project
+     * @deprecated You only need to specify the project descriptor.
+     */
+    public void setBasedir( File basedir )
+    {
+        System.out.println( "\nDEPRECATION WARNING: you no longer need to specify the basedir attribute.\n" );
+    }
+
+    /**
+     * Setter for the goals property
+     *
+     * @param goals a comma separated list of goal names to attain
+     */
+    public void setGoals( String goals )
+    {
+        this.goals = goals;
+    }
+
+    /**
+     * Getter for the goals property
+     *
+     * @return a comma separated list of goal names to attain
+     */
+    public String getGoals()
+    {
+        return this.goals;
+    }
+
+    /**
+     * Set the ignore failures flag.
+     *
+     * @param ignoreFailures The ignore failures flag.
+     */
+    public void setIgnoreFailures( boolean ignoreFailures )
+    {
+        this.ignoreFailures = ignoreFailures;
+    }
+
+    /**
+     * Get the ignore failures flag.
+     *
+     * @return boolean The ignores failure flag.
+     */
+    public boolean isIgnoreFailures()
+    {
+        return ignoreFailures;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTagLibrary.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,63 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.jelly.tags.BaseTagLibrary;
+
+/**
+ * MavenSession tag library for use in Jelly scripts.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @version $Id: MavenTagLibrary.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenTagLibrary
+    extends BaseTagLibrary
+{
+    /**
+     * Create an instance of the {@link MavenTagLibrary}, registering related
+     * tag libraries
+     */
+    public MavenTagLibrary()
+    {
+        registerTag( "snapshot", SnapshotSignature.class );
+        registerTag( "addPath", AddPathTag.class );
+        registerTag( "maven", MavenTag.class );
+        registerTag( "pom", PomTag.class );
+        registerTag( "reactor", ReactorTag.class );
+        registerTag( "concat", ConcatTag.class );
+        registerTag( "input", InputTag.class );
+        registerTag( "makeAbsolutePath", MakeAbsolutePathTag.class );
+        registerTag( "makeRelativePath", MakeRelativePathTag.class );
+        registerTag( "userCheck", UserCheck.class );
+        registerTag( "paramCheck", ParamCheck.class );
+        registerTag( "pluginVar", PluginVarTag.class );
+        registerTag( "get", GetTag.class );
+        registerTag( "set", SetTag.class );
+        registerTag( "copyResources", CopyResources.class );
+        registerTag( "rootRelativePath", RootRelativePathTag.class );
+        registerTag( "property", PropertyTag.class );
+        registerTag( "installPlugin", InstallPluginTag.class );
+        registerTag( "uninstallPlugin", UninstallPluginTag.class );
+        // Remove the following deprecated forms
+        registerTag( "user-check", UserCheck.class );
+        registerTag( "param-check", ParamCheck.class );
+        registerTag( "copy-resources", CopyResources.class );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/MavenTagLibrary.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ParamCheck.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ParamCheck.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ParamCheck.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,99 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * A tag to check parameters are being passed correctly
+ */
+public class ParamCheck
+    extends BaseTagSupport
+{
+    /** the value to check */
+    private String value;
+
+    /** the message to display when value is empty */
+    private String message;
+
+    /** whether to fail or not */
+    private boolean fail;
+
+    /* (non-Javadoc)
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        if ( value == null || "".equals( value.trim() ) )
+        {
+            if ( fail )
+            {
+                throw new JellyTagException( getMessage() );
+            }
+            else
+            {
+                System.out.println( getMessage() );
+            }
+        }
+    }
+
+    /**
+     * @param failOrNot whether this tag should throw an exception if the value is empty
+     */
+    public void setFail( boolean failOrNot )
+    {
+        fail = failOrNot;
+    }
+
+    /**
+     * @return the message field if not null, or the body of the tag if it is
+     */
+    public String getMessage()
+        throws JellyTagException
+    {
+        if ( message == null )
+        {
+            return getBodyText();
+        }
+        else
+        {
+            return message;
+        }
+
+    }
+
+    /**
+     * @param string the message to display when the value is empty
+     */
+    public void setMessage( String string )
+    {
+        message = string;
+    }
+
+    /**
+     * @param string the value to check
+     */
+    public void setValue( String string )
+    {
+        value = string;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ParamCheck.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,136 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.plugin.UnknownPluginException;
+import org.apache.maven.project.Project;
+
+/**
+ * A tag to retrieve values from plugins
+ * @deprecated replaced by the GetTag tag
+ */
+public class PluginVarTag
+    extends BaseTagSupport
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( PluginVarTag.class );
+
+    /** the variable to set*/
+    private String var;
+
+    /** the plugin to get the variable from*/
+    private String plugin;
+
+    /** the name of the plugin property to retrieve */
+    private String property;
+
+    /**
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     * @deprecated replaced by the GetTag tag
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        checkAttribute( var, "var" );
+        checkAttribute( plugin, "plugin" );
+        checkAttribute( property, "property" );
+        Project project = getMavenContext().getProject();
+        try
+        {
+            MavenJellyContext context = project.getPluginContext( plugin );
+            if ( context != null )
+            {
+                Object value = context.getVariable( property );
+                getContext().setVariable( var, value );
+            }
+            else
+            {
+                log.error( "context for plugin '" + plugin + "' in project '" + project + "' is null" );
+            }
+        }
+        catch ( UnknownPluginException e )
+        {
+            log.error( "Plugin '" + plugin + "' in project '" + project + "' is not available" );
+        }
+        catch ( Exception e )
+        {
+            throw new JellyTagException( "Error loading plugin", e );
+        }
+    }
+
+    /**
+     * @return the plugin to retrieve the property from.
+     * @deprecated replaced by the GetTag tag
+     */
+    public String getPlugin()
+    {
+        return plugin;
+    }
+
+    /**
+     * @return the name of the property being retrieved
+     * @deprecated replaced by the GetTag tag
+     */
+    public String getProperty()
+    {
+        return property;
+    }
+
+    /**
+     * @return the variable name to set
+     * @deprecated replaced by the GetTag tag
+     */
+    public String getVar()
+    {
+        return var;
+    }
+
+    /**
+     * @param pluginId the id of the plugin to retrieve the property from
+     * @deprecated replaced by the GetTag tag
+     */
+    public void setPlugin( String pluginId )
+    {
+        plugin = pluginId;
+    }
+
+    /**
+     * @param propertyName the name of the property being retrieved
+     * @deprecated replaced by the GetTag tag
+     */
+    public void setProperty( String propertyName )
+    {
+        property = propertyName;
+    }
+
+    /**
+     * @param variable the variable name to set
+     * @deprecated replaced by the GetTag tag
+     */
+    public void setVar( String variable )
+    {
+        this.var = variable;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PluginVarTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PomTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PomTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PomTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,101 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * MavenSession Jelly tag that creates a POM instance.
+ * By default, the inheritance in the POM isn't used.
+ * You must use the attribute useInheritance to activate it.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: PomTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class PomTag
+    extends BaseTagSupport
+{
+    /** MavenSession project descriptor. */
+    private File projectDescriptor;
+
+    /** Name of var to give the project object. */
+    private String var;
+
+    /** Define if the pom must use the inheritance. */
+    private boolean useInheritance;
+
+    /**
+     * Set MavenSession project descriptor.
+     *
+     * @param projectDescriptor the file name of the maven project descriptor
+     */
+    public void setProjectDescriptor( File projectDescriptor )
+    {
+        this.projectDescriptor = projectDescriptor;
+    }
+
+    /**
+     * Set var name for the POM.
+     *
+     * @param var Variable name for the pom.
+     */
+    public void setVar( String var )
+    {
+        this.var = var;
+    }
+
+    /**
+     * Define if the pom must use the inheritance. 
+     * Setted to false by default to keep a backward compatibility.
+     * @param useInheritance true if the pom object must use the inheritance.
+     */
+    public void setUseInheritance( boolean useInheritance )
+    {
+        this.useInheritance = useInheritance;
+    }
+
+    /**
+     * Perform functionality provided by the tag
+     * @param output the place to write output
+     * @throws JellyTagException when the projectDescriptor attribute is missing, or
+     *      another error occurs
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        // Check to make sure that we have a valid POM
+        // before processing.
+        checkAttribute( projectDescriptor, "projectDescriptor" );
+        checkAttribute( var, "var" );
+
+        try
+        {
+            context.setVariable( var, MavenUtils.getProject( projectDescriptor, getMavenContext(), useInheritance ) );
+        }
+        catch ( Exception e )
+        {
+            throw new JellyTagException( "error getting project", e );
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PomTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PropertyTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PropertyTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/PropertyTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,84 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * A Maven Jelly tag that attempts to retrieve a property from the MavenJellyContext
+ * context and uses the provided default value in the event there is no valid value
+ * retrieved using the key name provided. You may also optionally provide the name
+ * you would like to give the resultant property in the MavenJellyContext.
+ *
+ * @author <a href="mailto:jason at maven.org">Jason van Zyl</a>
+ *
+ */
+public class PropertyTag
+    extends BaseTagSupport
+{
+    private String name;
+
+    private String defaultValue;
+
+    private String var;
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public void setDefaultValue( String defaultValue )
+    {
+        this.defaultValue = defaultValue;
+    }
+
+    public void setVar( String var )
+    {
+        this.var = var;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( name, "name" );
+
+        checkAttribute( defaultValue, "defaultValue" );
+
+        String property = (String) getContext().getVariable( name );
+
+        if ( property == null )
+        {
+            property = defaultValue;
+        }
+
+        if ( var != null )
+        {
+            getContext().setVariable( var, property );
+        }
+        else
+        {
+            getContext().setVariable( name, property );
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ReactorTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ReactorTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/ReactorTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,504 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.project.Project;
+
+/**
+ * Reactor tag that processes a set of project descriptors taking into
+ * consideration the inter-project dependencies.
+ * <p/>
+ * Used for building a set of projects in the correct order to satisfy any
+ * dependencies among the projects being processed.
+ *
+ * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:evenisse at ifrance.com">Emmanuel Venisse</a>
+ * @version $Id: ReactorTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ * @todo We use the basedir for the glob, but we need to set the descriptor.
+ * @todo better use of inheritance from MavenTag
+ */
+public class ReactorTag
+    extends MavenTag
+{
+    private static final Log log = LogFactory.getLog( ReactorTag.class );
+
+    /**
+     * The glob used to select projects within the base directory.
+     */
+    private String glob;
+
+    /**
+     * Projects to include.
+     */
+    private String includes;
+
+    /**
+     * Projects to exclude.
+     */
+    private String excludes;
+
+    /**
+     * Banner to display when each project is processed.
+     */
+    private String banner;
+
+    /**
+     * project base directory
+     */
+    private File basedir;
+
+    /**
+     * The name of the context variable to store the project collection in.
+     */
+    private String collectionVar = "reactorProjects";
+
+    /**
+     * Whether to actually execute the default or specified goals, or
+     * simply collect the projects in order.
+     */
+    private boolean collectOnly = false;
+
+    /**
+     * Whether to sort the projects by dependencies.
+     */
+    private boolean sort = true;
+
+    /**
+     * Post processing flag. If this is set then we will hold on to the
+     * processed projects, otherwise they will be dumped.
+     */
+    private boolean postProcessing = false;
+
+    /**
+     * Storage for projects that failed in the build.
+     */
+    private Collection failedProjects = new ArrayList();
+
+    /**
+     * List of Project objects to use instead of glob or includes.
+     */
+    private List projectList = null;
+
+    // ----------------------------------------------------------------------
+    // A C C E S S O R S
+    // ----------------------------------------------------------------------
+
+    /**
+     * Set the project list.
+     *
+     * @param projectList the project list
+     */
+    public void setProjectList( List projectList )
+    {
+        this.projectList = projectList;
+    }
+
+    /**
+     * Get the project list.
+     *
+     * @return the project list
+     */
+    public List getProjectList()
+    {
+        return projectList;
+    }
+
+    /**
+     * Setter for the basedir property
+     * XXX if the method it overrides is deprecated, is this also deprecated?
+     *
+     * @param basedir the base directory for execution of the project
+     */
+    public void setBasedir( File basedir )
+    {
+        this.basedir = basedir;
+    }
+
+    /**
+     * Getter for the basedir property
+     *
+     * @return the base directory for execution of the project
+     */
+    public File getBasedir()
+    {
+        return this.basedir;
+    }
+
+    public void setSort( boolean sort )
+    {
+        this.sort = sort;
+    }
+
+    /**
+     * Set the collectOnly attribute. This controls whether reactor
+     * will actually execute any goals on the projects, or simply
+     * collect the sorted set of projects included in this reactor
+     * invocation.
+     *
+     * @param collectOnly if true, don't execute project goals; simply
+     *                    gather the sorted project collection and store. Otherwise,
+     *                    operate as before (execute either specified goals or default goal
+     *                    for each project).
+     */
+    public void setCollectOnly( boolean collectOnly )
+    {
+        this.collectOnly = collectOnly;
+    }
+
+    /**
+     * Set the collectionVar attribute. This controls the context
+     * variable which will contain the sorted set of projects included
+     * in this reactor invocation.
+     *
+     * @param collectionVar The context variable for the project collection
+     *                      discovered here.
+     */
+    public void setCollectionVar( String collectionVar )
+    {
+        this.collectionVar = collectionVar;
+    }
+
+    /**
+     * Set the postProcessing attribute.
+     *
+     * @param postProcessing
+     */
+    public void setPostProcessing( boolean postProcessing )
+    {
+        this.postProcessing = postProcessing;
+    }
+
+    /**
+     * Get the postProcessing attribute.
+     *
+     * @return The
+     */
+    public boolean getPostProcessing()
+    {
+        return postProcessing;
+    }
+
+    /**
+     * Set the glob used to find projects.
+     *
+     * @param glob The glob used to find projects.
+     * @deprecated Use includes/excludes instead.
+     */
+    public void setGlob( String glob )
+    {
+        log.warn( "\nDEPRECATION WARNING: use the 'includes' attribute instead of the 'glob' attribute.\n" );
+        this.glob = glob;
+    }
+
+    /**
+     * Get the glob used to find projects.
+     *
+     * @return String The glob.
+     */
+    public String getGlob()
+    {
+        return glob;
+    }
+
+    /**
+     * Set the includes used to find projects.
+     *
+     * @param includes The includes used to find projects.
+     */
+    public void setIncludes( String includes )
+    {
+        this.includes = includes;
+    }
+
+    /**
+     * Get the includes used to find projects.
+     *
+     * @return String The includes.
+     */
+    public String getIncludes()
+    {
+        return includes;
+    }
+
+    /**
+     * Set the excludes used to find projects.
+     *
+     * @param excludes The excludes used to find projects.
+     */
+    public void setExcludes( String excludes )
+    {
+        this.excludes = excludes;
+    }
+
+    /**
+     * Get the excludes used to find projects.
+     *
+     * @return String The excludes.
+     */
+    public String getExcludes()
+    {
+        return excludes;
+    }
+
+    /**
+     * Set the banner to be displayed for each project while
+     * it is being processed.
+     *
+     * @param banner The banner to use for each processed project.
+     */
+    public void setBanner( String banner )
+    {
+        this.banner = banner;
+    }
+
+    /**
+     * Get the banner to be displayed for project while it
+     * is being processed.
+     *
+     * @return String The banner.
+     */
+    public String getBanner()
+    {
+        if ( banner == null )
+        {
+            banner = "Processing";
+        }
+
+        return banner;
+    }
+
+    /**
+     * Execute the body of the reactor tag.
+     *
+     * @param output The output sink.
+     * @throws JellyTagException If an error occurs while processing the tag.
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( getBasedir(), "basedir" );
+
+        if ( getGlob() == null && getIncludes() == null && projectList == null )
+        {
+            throw new MissingAttributeException( "glob|includes|projectList" );
+        }
+
+        log.info( "Starting the reactor..." );
+
+        List sortedProjects = null;
+        try
+        {
+            sortedProjects = getSortedProjects();
+        }
+        catch ( Exception e )
+        {
+            throw new JellyTagException( "Error getting projects", e );
+        }
+
+        log.info( "Our processing order:" );
+
+        for ( Iterator i = sortedProjects.iterator(); i.hasNext(); )
+        {
+            Project p = (Project) i.next();
+            log.info( p.getName() );
+        }
+
+        ArrayList reactorProjects = new ArrayList();
+
+        Runtime r = Runtime.getRuntime();
+        for ( Iterator i = sortedProjects.iterator(); i.hasNext(); )
+        {
+            // The basedir needs to be set for the project
+            // We just need the descriptor.
+
+            Project project = (Project) i.next();
+            beforeProject( project );
+
+            final long mb = 1024 * 1024;
+            log.info( "+----------------------------------------" );
+            log.info( "| " + getBanner() + " " + project.getName() );
+            log.info( "| Memory: " + ( ( r.totalMemory() - r.freeMemory() ) / mb ) + "M/" + ( r.totalMemory() / mb )
+                + "M" );
+            log.info( "+----------------------------------------" );
+
+            // We only try to attain goals if they have been set. The reactor
+            // might be in use to collect project information for the purpose
+            // of, say, generating a sites from a set of components.
+            List goalList = null;
+            if ( getGoals() != null )
+            {
+                goalList = MavenUtils.getGoalListFromCsv( getGoals() );
+            }
+
+            beforeLaunchGoals( project );
+
+            try
+            {
+                if ( !collectOnly )
+                {
+                    getMavenContext().getMavenSession().attainGoals( project, goalList );
+                }
+            }
+            catch ( Exception e )
+            {
+                onException( project, e );
+                // TODO: there is a risk that continuing may leave the project in an inconsistent state.
+                //  -- attainGoals needs to split fatal from non-fatal exceptions and we only ignore non-fatal
+                if ( !isIgnoreFailures() )
+                {
+                    throw new JellyTagException( "Reactor subproject failure occurred", e );
+                }
+            }
+
+            afterLaunchGoals( project );
+            afterProject( project );
+
+            if ( getPostProcessing() || collectOnly )
+            {
+                reactorProjects.add( project );
+            }
+        }
+
+        getContext().setVariable( collectionVar, reactorProjects );
+        Collection c = (Collection) getContext().getVariable( MavenConstants.FAILED_PROJECTS );
+        if ( c == null )
+        {
+            c = new ArrayList( failedProjects );
+        }
+        else
+        {
+            c.addAll( failedProjects );
+        }
+        getContext().setVariable( MavenConstants.FAILED_PROJECTS, c );
+    }
+
+    /**
+     * Get a list of projects to process, sorted by dependency processing order.
+     * Maintained as a separate method so that the original projects and dependency resolver memory is freed.
+     *
+     * @return the project list
+     */
+    private List getSortedProjects()
+        throws MavenException
+    {
+        if ( projectList != null )
+        {
+            log.debug( "using existing list of projects: " + projectList );
+            return projectList;
+        }
+
+        String projectIncludes;
+        if ( getGlob() != null )
+        {
+            projectIncludes = getGlob();
+        }
+        else
+        {
+            projectIncludes = getIncludes();
+        }
+
+        List projects = MavenUtils.getProjects( getBasedir(), projectIncludes, getExcludes(), getMavenContext()
+            .getMavenSession().getRootContext() );
+
+        if ( sort )
+        {
+            DependencyResolver dr = new DependencyResolver();
+            dr.setProjects( projects );
+
+            return dr.getSortedDependencies( false );
+        }
+        else
+        {
+            return projects;
+        }
+    }
+
+    /**
+     * This method is running before launching a project.
+     *
+     * @param project the currentProject
+     */
+    public void beforeProject( Project project )
+    {
+    }
+
+    /**
+     * This method is running before launching project goals.
+     *
+     * @param project the currentProject
+     */
+    public void beforeLaunchGoals( Project project )
+    {
+    }
+
+    /**
+     * This method is running after launching project goals.
+     *
+     * @param project the currentProject
+     */
+    public void afterLaunchGoals( Project project )
+    {
+    }
+
+    /**
+     * This method is running after launching a project.
+     *
+     * @param project the currentProject
+     */
+    public void afterProject( Project project )
+    {
+    }
+
+    /**
+     * This method is running when an exception occurs whatever
+     * the ignoreFailures value.
+     *
+     * @param project the currentProject
+     * @param e       the exception
+     */
+    public void onException( Project project, Exception e )
+    {
+        getContext().setVariable( MavenConstants.BUILD_FAILURE, "true" );
+        failedProjects.add( project );
+    }
+
+    /**
+     * This method is running when an exception occurs in
+     * dependency resolution.
+     *
+     * @param e the exception
+     */
+    public void onDependencyResolutionException( Exception e )
+    {
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/RootRelativePathTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/RootRelativePathTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/RootRelativePathTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,131 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.util.StringTokenizer;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.Tag;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * Converts an absolute path into a path relative to a root dir. For
+ * example, if the root dir is "c:/apps/myproject" and the absolute
+ * path is "c:/apps/myproject/path/subproject2" then the computed
+ * relative path is "../..".
+ *
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @version $Id: RootRelativePathTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class RootRelativePathTag
+    extends BaseTagSupport
+{
+    /** The root dir. */
+    private File rootdir;
+
+    /** The path to convert. */
+    private String path;
+
+    /** The jelly variable to store the result into. */
+    private String var;
+
+    /**
+     * Set the root directory.
+     * @param rootdir the root directory
+     */
+    public void setRootdir( File rootdir )
+    {
+        this.rootdir = rootdir;
+    }
+
+    /**
+     * Set the path.
+     * @param path the path.
+     */
+    public void setPath( String path )
+    {
+        this.path = path;
+    }
+
+    /**
+     * Set the result variable.
+     * @param var the result variable name.
+     */
+    public void setVar( String var )
+    {
+        this.var = var;
+    }
+
+    /**
+     * @see Tag#doTag(XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( rootdir, "rootdir" );
+        checkAttribute( path, "path" );
+        checkAttribute( var, "var" );
+
+        String result;
+        try
+        {
+            result = computePath();
+        }
+        catch ( IOException e )
+        {
+            throw new JellyTagException( "Unable to create relative path", e );
+        }
+        getContext().setVariable( var, result );
+    }
+
+    /**
+     * @return the compute relative path to the root dir
+     * @throws IOException on error
+     */
+    public String computePath()
+        throws IOException
+    {
+        String canonicalRootdir = rootdir.getCanonicalPath();
+        String canonicalPath = new File( path ).getCanonicalPath();
+        if ( canonicalPath.equals( canonicalRootdir ) )
+        {
+            return ".";
+        }
+        else if ( canonicalPath.startsWith( canonicalRootdir ) )
+        {
+            canonicalPath = canonicalPath.substring( canonicalRootdir.length() );
+        }
+        else
+        {
+            throw new IOException( "Path [" + canonicalPath + "] is not a subset of [" + canonicalRootdir + "]" );
+        }
+
+        StringBuffer result = new StringBuffer( "." );
+        StringTokenizer tokens = new StringTokenizer( canonicalPath, "/\\" );
+        while ( tokens.hasMoreTokens() )
+        {
+            tokens.nextToken();
+            result.append( "/.." );
+        }
+        return result.toString();
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/RootRelativePathTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SetTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SetTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SetTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,127 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.plugin.UnknownPluginException;
+import org.apache.maven.project.Project;
+
+/**
+ * A tag to set plugin values
+ */
+public class SetTag
+    extends BaseTagSupport
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( SetTag.class );
+
+    /** the value to set */
+    private Object value;
+
+    /** the plugin in which the variable will be set */
+    private String plugin;
+
+    /** the name of the plugin property to retrieve */
+    private String property;
+
+    /**
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        checkAttribute( value, "value" );
+        checkAttribute( plugin, "plugin" );
+        checkAttribute( property, "property" );
+        Project project = getMavenContext().getProject();
+        try
+        {
+            MavenJellyContext context = project.getPluginContext( plugin );
+            if ( context != null )
+            {
+                context.setVariable( property, value );
+            }
+            else
+            {
+                log.error( "context for plugin '" + plugin + "' in project '" + project + "' is null" );
+            }
+        }
+        catch ( UnknownPluginException e )
+        {
+            log.error( "Plugin '" + plugin + "' in project '" + project + "' is not available" );
+        }
+        catch ( Exception e )
+        {
+            throw new JellyTagException( "Error loading plugin", e );
+        }
+    }
+
+    /**
+     * @return the plugin to retrieve the property from.
+     */
+    public String getPlugin()
+    {
+        return plugin;
+    }
+
+    /**
+     * @return the name of the property being retrieved
+     */
+    public String getProperty()
+    {
+        return property;
+    }
+
+    /**
+     * @return the value to set
+     */
+    public Object getValue()
+    {
+        return value;
+    }
+
+    /**
+     * @param pluginId the id of the plugin in which the property will be set
+     */
+    public void setPlugin( String pluginId )
+    {
+        plugin = pluginId;
+    }
+
+    /**
+     * @param propertyName the name of the property being set
+     */
+    public void setProperty( String propertyName )
+    {
+        property = propertyName;
+    }
+
+    /**
+     * @param value the value to set
+     */
+    public void setValue( Object value )
+    {
+        this.value = value;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SetTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SnapshotSignature.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SnapshotSignature.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SnapshotSignature.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,85 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.project.Project;
+
+/** Create snapshot signature for non-release JARs and distributions.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: SnapshotSignature.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class SnapshotSignature
+    extends BaseTagSupport
+{
+    /** Maven project */
+    private Project project;
+
+    /**
+     * Set the maven project object.
+     *
+     * @param project MavenSession project.
+     */
+    public void setProject( Project project )
+    {
+        this.project = project;
+    }
+
+    /**
+     * Get the maven project object.
+     *
+     * @return MavenSession project.
+     */
+    public Project getProject()
+    {
+        return project;
+    }
+
+    /**
+     * Process the tag. Create a variable in the current context of the format
+     * <code>${pom.artifactId}-yyyyMMdd.HHmmss</code>
+     *
+     * @param output used to send XML output to Jelly
+     * @throws MissingAttributeException if the project property is not set
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException
+    {
+        checkAttribute( project, "project" );
+
+        Date now = new Date();
+        SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
+        formatter.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
+        String snapshotVersion = formatter.format( now );
+        String snapshotSignature = getProject().getArtifactId() + "-" + snapshotVersion;
+
+        context.setVariable( "snapshotSignature", snapshotSignature );
+
+        // We want to straight version so that we can deploy a marker
+        // that will allow projects to flip between the 'SNAPSHOT'
+        // identifier and a real snapshot version identifier.
+        context.setVariable( "snapshotVersion", snapshotVersion );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/SnapshotSignature.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UninstallPluginTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UninstallPluginTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UninstallPluginTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,62 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.IOException;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+import org.apache.maven.plugin.PluginManager;
+
+/**
+ * A Maven Jelly tag that will uninstall a given plugin JAR using the plugin manager.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: UninstallPluginTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class UninstallPluginTag
+    extends BaseTagSupport
+{
+    private String artifactId;
+
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( artifactId, "artifactId" );
+
+        PluginManager manager = getMavenContext().getMavenSession().getPluginManager();
+        try
+        {
+            manager.uninstallPlugin( artifactId );
+        }
+        catch ( IOException e )
+        {
+            throw new JellyTagException( "error uninstalling plugin", e );
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UninstallPluginTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UserCheck.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UserCheck.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UserCheck.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,67 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.jelly.tags.BaseTagSupport;
+
+/**
+ * A tag to check if a user name is set.
+ */
+public class UserCheck
+    extends BaseTagSupport
+{
+    /** the value that means no value has been set */
+    private static final String NO_VALUE = "USERNAME_NOT_SET";
+
+    /** Error message */
+    private static final String ERROR = "+------------------------------------------------------------------\n"
+        + "| ERROR!\n" + "| \n" + "| You must specify a maven username in order to deploy the site!\n"
+        + "| You can either set this property in your ~/build.properties\n" + "| or specify one on the command line:\n"
+        + "|\n" + "| maven -Dmaven.username=${user.name} [goal]"
+        + "+------------------------------------------------------------------";
+
+    /** the user to check has a value */
+    private String user;
+
+    /**
+     * @see org.apache.commons.jelly.Tag#doTag(XMLOutput)
+     */
+    public void doTag( XMLOutput output )
+        throws MissingAttributeException, JellyTagException
+    {
+        checkAttribute( user, "user" );
+
+        user = user.trim();
+        if ( "".equals( user ) || UserCheck.NO_VALUE.equals( user ) )
+        {
+            throw new JellyTagException( UserCheck.ERROR );
+        }
+    }
+
+    /**
+     * @param aString the value for the user property
+     */
+    public void setUser( String aString )
+    {
+        user = aString;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/UserCheck.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/WerkzDependencyResolver.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/WerkzDependencyResolver.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/WerkzDependencyResolver.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,343 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.project.Dependency;
+import org.apache.maven.project.Project;
+import org.apache.maven.werkz.Action;
+import org.apache.maven.werkz.CyclicGoalChainException;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.NoActionDefinitionException;
+import org.apache.maven.werkz.Session;
+import org.apache.maven.werkz.UnattainableGoalException;
+import org.apache.maven.werkz.WerkzProject;
+
+/**
+ * THIS CLASS IS NOT THREADSAFE.
+ *
+ * @author <a href="mailto:bwalding at apache.org">Ben Walding</a>
+ * @version $Id: WerkzDependencyResolver.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class WerkzDependencyResolver
+    implements DependencyResolverInterface
+{
+    private List projects = new ArrayList();
+
+    private final List sortedGoals = new ArrayList();
+
+    private Goal doItAll = null;
+
+    private WerkzProject wproject = null;
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#clear()
+     */
+    public void clear()
+    {
+        projects.clear();
+        doItAll = null;
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#setProjects(java.util.List)
+     */
+    public void setProjects( List projects )
+    {
+        this.projects = projects;
+    }
+
+    /**
+     * Retrieves the existing goal for a project (based on Id).
+     * If no goal exists, an exception is thrown.
+     *
+     * @param project the project to retrieve a goal from
+     * @return ProjectGoal
+     */
+    protected ProjectGoal getExistingGoal( Project project )
+    {
+        ProjectGoal goal = (ProjectGoal) wproject.getGoal( project.getId() );
+
+        if ( goal == null )
+        {
+            throw new NullPointerException( "No goal exists : " + project.getId() );
+        }
+        else
+        {
+            return goal;
+        }
+    }
+
+    /**
+     * Retrieves the existing goal for a project (based on Id).
+     * If no goal exists, one is created for this given project.
+     *
+     * @param project
+     * @param sourceBuild
+     * @return ProjectGoal
+     */
+    protected ProjectGoal getOrCreateGoal( Project project, boolean sourceBuild )
+    {
+        ProjectGoal goal = (ProjectGoal) wproject.getGoal( project.getId() );
+        if ( goal == null )
+        {
+            goal = new ProjectGoal( project, sourceBuild );
+            goal.setAction( new ListAddAction( goal, sortedGoals ) );
+            wproject.addGoal( goal );
+        }
+        return goal;
+    }
+
+    /**
+     * Builds the projects / dependencies into an internal acyclic directed graph
+     */
+    public void buildGraph()
+        throws CyclicGoalChainException
+    {
+        if ( doItAll != null )
+        {
+            return;
+        }
+
+        try
+        {
+            wproject = new WerkzProject();
+
+            doItAll = new Goal( "DO_IT_ALL" );
+            doItAll.setAction( new DummyAction() );
+
+            //Initialise all the true goals of the system
+            Iterator iter = projects.iterator();
+            while ( iter.hasNext() )
+            {
+                Project project = (Project) iter.next();
+                Goal projectGoal = getOrCreateGoal( project, true );
+                doItAll.addPrecursor( projectGoal );
+            }
+
+            //Now add the dependencies
+            iter = projects.iterator();
+            while ( iter.hasNext() )
+            {
+                Project project = (Project) iter.next();
+                Goal projectGoal = getExistingGoal( project );
+
+                Iterator depIter = project.getDependencies().iterator();
+                while ( depIter.hasNext() )
+                {
+                    Dependency dep = (Dependency) depIter.next();
+                    Project depProject = new Project();
+                    depProject.setId( dep.getId() );
+
+                    Goal depGoal = getOrCreateGoal( depProject, false );
+                    projectGoal.addPrecursor( depGoal );
+                }
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            doItAll = null;
+            wproject = new WerkzProject();
+            // We want to get the right exception
+            throw e;
+        }
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project)
+     */
+    public List getSortedDependencies( Project project )
+        throws DependencyResolverException
+    {
+        return getSortedDependencies( project, false );
+    }
+
+    /**
+     * Filters the given list of goals, and returns the associated projects
+     * <p/>
+     * If param:sourceBuild == true, include goal
+     * If param:sourceBuild == false, include goal if goal:sourceBuild == true
+     *
+     * @param goals
+     * @param sourceBuild
+     * @return List
+     */
+    public List getProjects( List goals, boolean sourceBuild )
+    {
+        List result = new ArrayList();
+        Iterator iter = goals.iterator();
+        while ( iter.hasNext() )
+        {
+            ProjectGoal goal = (ProjectGoal) iter.next();
+
+            if ( ( sourceBuild ) || ( !sourceBuild && goal.getSourceBuild() ) )
+            {
+                result.add( ( goal ).getProject() );
+            }
+
+        }
+        return result;
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(org.apache.maven.project.Project, boolean)
+     */
+    public List getSortedDependencies( Project project, boolean sourceBuild )
+        throws DependencyResolverException
+    {
+        try
+        {
+            buildGraph();
+            sortedGoals.clear();
+            Session session = new Session();
+            ProjectGoal g = getExistingGoal( project );
+            g.attain( session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            throw new DependencyResolverException( "A cycle was detected", e );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            throw new DependencyResolverException( "An invalid goal was called", e );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            throw new DependencyResolverException( "An invalid goal was called", e );
+        }
+
+        return getProjects( sortedGoals, sourceBuild );
+    }
+
+    /**
+     * @see org.apache.maven.jelly.tags.maven.DependencyResolverInterface#getSortedDependencies(boolean)
+     */
+    public List getSortedDependencies( boolean sourceBuild )
+        throws DependencyResolverException
+    {
+        try
+        {
+            buildGraph();
+            sortedGoals.clear();
+            Session session = new Session();
+            doItAll.attain( session );
+            return getProjects( sortedGoals, sourceBuild );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            throw new DependencyResolverException( "A cycle was detected", e );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            throw new DependencyResolverException( "An invalid goal was called", e );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            throw new DependencyResolverException( "An invalid goal was called", e );
+        }
+    }
+
+}
+
+/**
+ * Simple action that adds the goal to a list when it is invoked
+ */
+class ListAddAction
+    implements Action
+{
+    private List list;
+
+    private Goal goal;
+
+    public ListAddAction( Goal goal, List list )
+    {
+        this.list = list;
+        this.goal = goal;
+    }
+
+    public boolean requiresAction()
+    {
+        return true;
+    }
+
+    public void performAction( Session session )
+        throws Exception
+    {
+        list.add( goal );
+    }
+
+    public void performAction()
+        throws Exception
+    {
+        list.add( goal );
+    }
+}
+
+/**
+ * "Do nothing" action
+ */
+class DummyAction
+    implements Action
+{
+    public boolean requiresAction()
+    {
+        return false;
+    }
+
+    public void performAction( Session session )
+        throws Exception
+    {
+
+    }
+
+    public void performAction()
+        throws Exception
+    {
+    }
+}
+
+/**
+ * Overrides Goal to add some extra project information
+ */
+class ProjectGoal
+    extends Goal
+{
+    private final Project project;
+
+    private final boolean sourceBuild;
+
+    public ProjectGoal( Project project, boolean sourceBuild )
+    {
+        super( project.getId() );
+        this.project = project;
+        this.sourceBuild = sourceBuild;
+    }
+
+    public Project getProject()
+    {
+        return project;
+    }
+
+    public boolean getSourceBuild()
+    {
+        return sourceBuild;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.jelly.tags.maven</title>
+</head>
+<body>
+  <p>Various jelly tags provided by Maven to allow easier access its facilities.</p>
+</body>
+</html>


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/maven/package.html
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.jelly.tags</title>
+</head>
+<body>
+  <p>Shared code across the jelly taglibs provided by Maven.</p>
+</body>
+</html>


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/package.html
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,173 @@
+package org.apache.maven.jelly.tags.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.plugin.GoalToJellyScriptHousingMapper;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.werkz.NoActionDefinitionException;
+import org.apache.maven.werkz.NoSuchGoalException;
+import org.apache.maven.werkz.Session;
+import org.apache.maven.werkz.UnattainableGoalException;
+import org.apache.maven.werkz.WerkzProject;
+import org.apache.maven.werkz.jelly.JellySession;
+import org.apache.maven.werkz.jelly.WerkzTagSupport;
+
+/**
+ * Replacement for werkz's <code>AttainGoalTag</code> which will lazy initialise goals.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: MavenAttainGoalTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenAttainGoalTag
+    extends WerkzTagSupport
+{
+    /**
+     * The goal name.
+     */
+    private String name;
+
+    /**
+     * Construct.
+     */
+    public MavenAttainGoalTag()
+    {
+        // intentionally left blank
+    }
+
+    /**
+     * Retrieve the <code>Session</code> to use, if set.
+     *
+     * @return The session or null.
+     */
+    public Session createSession()
+    {
+        /* TODO: this is for compatibility - do we want the user to request a new session instead?
+         eg force=true on the tag
+         not great to tie variables to session if we are creating a new one */
+        Session session = (Session) getContext().getVariable( PluginManager.GLOBAL_SESSION_KEY );
+        Session newSession = new JellySession( ( (MavenJellyContext) getContext() ).getXMLOutput() );
+        for ( Iterator i = session.getAttributes().keySet().iterator(); i.hasNext(); )
+        {
+            String key = (String) i.next();
+            newSession.setAttribute( key, session.getAttribute( key ) );
+        }
+
+        return newSession;
+    }
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+        WerkzProject project = getProject();
+
+        if ( project == null )
+        {
+            throw new JellyTagException( "No Project available" );
+        }
+
+        invokeBody( output );
+
+        try
+        {
+            // Lazy goal loading
+            Session session = createSession();
+            MavenJellyContext baseContext = (MavenJellyContext) session.getAttribute( PluginManager.BASE_CONTEXT );
+            GoalToJellyScriptHousingMapper mapper = (GoalToJellyScriptHousingMapper) session
+                .getAttribute( PluginManager.GOAL_MAPPER );
+            PluginManager pluginManager = (PluginManager) session.getAttribute( PluginManager.PLUGIN_MANAGER );
+
+            Set pluginSet;
+            try
+            {
+                pluginSet = pluginManager.prepAttainGoal( getName(), baseContext, mapper );
+            }
+            catch ( Exception e )
+            {
+                throw new JellyTagException( e );
+            }
+            project.attainGoal( getName(), session );
+            pluginManager.addDelayedPops( pluginSet );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            Throwable root = e.getRootCause();
+
+            if ( root != null )
+            {
+                if ( root instanceof JellyTagException )
+                {
+                    throw (JellyTagException) root;
+                }
+                if ( root instanceof UnattainableGoalException )
+                {
+                    throw new JellyTagException( e );
+                }
+            }
+            e.fillInStackTrace();
+            throw new JellyTagException( e );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            throw new JellyTagException( e );
+        }
+        catch ( NoSuchGoalException e )
+        {
+            throw new JellyTagException( e );
+        }
+    }
+
+    /**
+     * Define a goal.
+     *
+     * @param output The output sink.
+     * @throws JellyTagException If an error occurs while executing the tag.
+     */
+    public void invokeBody( XMLOutput output )
+        throws JellyTagException
+    {
+        MavenJellyContext baseContext = (MavenJellyContext) createSession().getAttribute( PluginManager.BASE_CONTEXT );
+
+        getBody().run( baseContext, output );
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public String getName()
+    {
+        return this.name;
+    }
+
+    public WerkzProject getProject()
+    {
+        return (WerkzProject) getContext().getVariable( MavenConstants.WERKZ_PROJECT );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,130 @@
+package org.apache.maven.jelly.tags.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.plugin.JellyScriptHousing;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.werkz.Action;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.Session;
+import org.apache.maven.werkz.WerkzProject;
+import org.apache.maven.werkz.jelly.GoalTag;
+
+/**
+ * Replacement for werkz's <code>GoalTag</code> which does not allow a goal
+ * to be redefined once defined.
+ * For Jelly scripts that are run which contain this tag it is assumed that
+ * they are being run in the order whereby the first definition wins.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: MavenGoalTag.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenGoalTag
+    extends GoalTag
+{
+    // ------------------------------------------------------------
+    // C O N S T R U C T O R S
+    // ------------------------------------------------------------
+
+    /**
+     * Construct.
+     */
+    public MavenGoalTag()
+    {
+        // intentionally left blank.
+    }
+
+    /**
+     * Define a goal.
+     *
+     * @param output The output sink.
+     * @throws JellyTagException If an error occurs while executing the tag.
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        Goal goal = getProject().getGoal( getName() );
+
+        if ( goal == null || goal.getAction() == null )
+        {
+            super.doTag( output );
+            goal = getProject().getGoal( getName() );
+            JellyScriptHousing currentHousing = (JellyScriptHousing) getContext()
+                .getVariable( PluginManager.PLUGIN_HOUSING );
+            goal.setAction( new MavenGoalAction( currentHousing ) );
+        }
+    }
+
+    void runBodyTag( Session session )
+        throws JellyTagException
+    {
+        MavenJellyContext context = (MavenJellyContext) getContext();
+
+        getBody().run( context, context.getXMLOutput() );
+    }
+
+    /**
+     * @todo refactor into a separate class that gets the necessary variables delegated to it.
+     */
+    public class MavenGoalAction
+        implements Action
+    {
+        private final JellyScriptHousing housing;
+
+        public MavenGoalAction( JellyScriptHousing housing )
+        {
+            super();
+            this.housing = housing;
+            if ( housing == null )
+            {
+                throw new NullPointerException( "Plugin Housing can not be null" );
+            }
+        }
+
+        public void performAction( Session session )
+            throws Exception
+        {
+            MavenJellyContext oldContext = (MavenJellyContext) getContext();
+
+            //GoalToJellyScriptHousingMapper mapper = ( GoalToJellyScriptHousingMapper ) session.getAttribute(
+            //PluginManager.GOAL_MAPPER );
+            //JellyScriptHousing housing = mapper.getPluginHousing( getName() );
+            MavenJellyContext context = housing.getProject().getContext();
+
+            setContext( context );
+
+            runBodyTag( session );
+
+            setContext( oldContext );
+        }
+
+        public boolean requiresAction()
+        {
+            return true;
+        }
+    }
+
+    public WerkzProject getProject()
+    {
+        return (WerkzProject) getContext().getVariable( MavenConstants.WERKZ_PROJECT );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/jelly/tags/werkz/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.jelly.tags.werkz</title>
+</head>
+<body>
+  <p>Extensions to <a href="http://werkz.codehaus.org">Werkz</a>.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven</title>
+</head>
+<body>
+  <p>Core code used to execute Maven.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,534 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.util.InsertionOrderedSet;
+import org.apache.maven.werkz.CyclicGoalChainException;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.NoSuchGoalException;
+import org.apache.maven.werkz.WerkzProject;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * This is the process that we use:
+ *
+ * - Start with goal X
+ * - Gather prereqs for X
+ *
+ * We want to find all goals that will be executed due to X being executed
+ * we don't care about ordering here because when werkz executes it will sort
+ * that out for us. We just need to make sure all the appropriate plugins have
+ * been loaded so that werkz can find the goals it needs.
+ *
+ * For a single goal we will collect the set of goals that will be executed with
+ * it.
+ */
+public class GoalToJellyScriptHousingMapper
+    implements PluginDefinitionHandler
+{
+    /** dyna tag -&gt; plugin map. Where dyna tags live. */
+    private HashMap dynaTagPluginMap = new HashMap();
+
+    /** A plugins dyna tag dependencies. */
+    private HashMap pluginDynaTagDepsMap = new HashMap();
+
+    /** Goal -&gt; plugin map. */
+    private HashMap goalPluginMap = new HashMap();
+
+    /** Goals with a pointer to plugins with callbacks. */
+    private HashMap preGoalDecoratorsMap = new HashMap();
+
+    /** Goals with a pointer to plugins with callbacks. */
+    private HashMap postGoalDecoratorsMap = new HashMap();
+
+    /** */
+    private final WerkzProject goalProject = new WerkzProject();
+
+    /** */
+    private String defaultGoalName;
+
+    private final HashSet resolvedPlugins = new HashSet();
+
+    private static final Log log = LogFactory.getLog( GoalToJellyScriptHousingMapper.class );
+
+    /**
+     * Default constructor.
+     */
+    public GoalToJellyScriptHousingMapper()
+    {
+    }
+
+    /**
+     * Merge parent mapper. Used to setup a transient submapper.
+     *
+     * @param mapper mapper to copy from
+     * @todo figure out which are actually needed, change redundant initialisers by removing here,
+     * or adding others to default constructor (eg goalProject init)
+     * @todo We should have a way to inherit entire werkz project instead of hokey goal copying
+     */
+    void merge( GoalToJellyScriptHousingMapper mapper )
+        throws CyclicGoalChainException
+    {
+        mergeMap( dynaTagPluginMap, mapper.dynaTagPluginMap );
+        mergeMap( pluginDynaTagDepsMap, mapper.pluginDynaTagDepsMap );
+        mergeMap( goalPluginMap, mapper.goalPluginMap );
+
+        for ( Iterator i = mapper.preGoalDecoratorsMap.keySet().iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+            Set s = (Set) mapper.preGoalDecoratorsMap.get( goalName );
+            Set sExist = (Set) preGoalDecoratorsMap.get( goalName );
+            if ( sExist == null )
+            {
+                preGoalDecoratorsMap.put( goalName, s );
+            }
+            else
+            {
+                sExist.addAll( s );
+            }
+        }
+        for ( Iterator i = mapper.postGoalDecoratorsMap.keySet().iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+            Set s = (Set) mapper.postGoalDecoratorsMap.get( goalName );
+            Set sExist = (Set) postGoalDecoratorsMap.get( goalName );
+            if ( sExist == null )
+            {
+                postGoalDecoratorsMap.put( goalName, s );
+            }
+            else
+            {
+                sExist.addAll( s );
+            }
+        }
+
+        if ( defaultGoalName == null )
+        {
+            defaultGoalName = mapper.defaultGoalName;
+        }
+
+        for ( Iterator i = mapper.goalProject.getGoals().iterator(); i.hasNext(); )
+        {
+            Goal goal = (Goal) i.next();
+            Goal existingGoal = goalProject.getGoal( goal.getName() );
+            if ( existingGoal == null )
+            {
+                goalProject.addGoal( goal );
+            }
+            else
+            {
+                for ( Iterator j = goal.getPrecursors().iterator(); j.hasNext(); )
+                {
+                    existingGoal.addPrecursor( (Goal) j.next() );
+                }
+                for ( Iterator j = goal.getPostcursors().iterator(); j.hasNext(); )
+                {
+                    existingGoal.addPostcursor( (Goal) j.next() );
+                }
+            }
+        }
+        resolvedPlugins.addAll( mapper.resolvedPlugins );
+    }
+
+    /**
+     * merge source into target, but don't override anything. Kind of the
+     * opposite of putAll to some extent.
+     *
+     * @todo Surely can be more efficient.
+     * @todo if there isn't already a util function for this there should be.
+     */
+    private static void mergeMap( Map target, Map source )
+    {
+        Map map = new HashMap( target );
+        target.putAll( source );
+        target.putAll( map );
+    }
+
+    // ----------------------------------------------------------------------
+    // Accessors
+    // ----------------------------------------------------------------------
+
+    public String getDefaultGoalName()
+    {
+        return defaultGoalName;
+    }
+
+    public void setDefaultGoalName( String defaultGoalName )
+    {
+        // first definition wins
+        if ( this.defaultGoalName == null )
+        {
+            this.defaultGoalName = defaultGoalName;
+        }
+    }
+
+    // ----------------------------------------------------------------------
+    // Implementation
+    // ----------------------------------------------------------------------
+
+    public JellyScriptHousing getPluginHousing( String goal )
+    {
+        return (JellyScriptHousing) goalPluginMap.get( goal );
+    }
+
+    private HashSet getPluginDynaTagDeps( Object pluginHousing )
+    {
+        HashSet pluginDynaTagDeps = (HashSet) pluginDynaTagDepsMap.get( pluginHousing );
+
+        if ( pluginDynaTagDeps == null )
+        {
+            pluginDynaTagDeps = new HashSet();
+            pluginDynaTagDepsMap.put( pluginHousing, pluginDynaTagDeps );
+        }
+
+        return pluginDynaTagDeps;
+    }
+
+    HashSet getPostGoalDecorators( String goalName )
+    {
+        HashSet decorators = (HashSet) postGoalDecoratorsMap.get( goalName );
+
+        if ( decorators == null )
+        {
+            decorators = new HashSet();
+            postGoalDecoratorsMap.put( goalName, decorators );
+        }
+        return decorators;
+    }
+
+    HashSet getPreGoalDecorators( String goalName )
+    {
+        HashSet decorators = (HashSet) preGoalDecoratorsMap.get( goalName );
+
+        if ( decorators == null )
+        {
+            decorators = new HashSet();
+            preGoalDecoratorsMap.put( goalName, decorators );
+        }
+        return decorators;
+    }
+
+    /**
+     * Find the appropriate plugins that provide the give goal and its precursors.
+     * Goals such as ${report}:register will need to be resolved lazily.
+     *
+     * @param goal the goal to find
+     * @return the set of plugins
+     * @throws NoSuchGoalException if the given goal is in no plugins
+     * @see org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag
+     */
+    Set resolveJellyScriptHousings( String goal )
+        throws NoSuchGoalException
+    {
+        log.debug( "preparing goal: " + goal );
+
+        Set pluginSet = new InsertionOrderedSet();
+
+        Goal[] chain = getExecutionChain( goal, goalProject );
+        log.debug( "execution chain: " + Arrays.asList( chain ).toString() );
+
+        for ( int i = 0; i < chain.length; i++ )
+        {
+            Goal g = chain[i];
+            Object plugin = goalPluginMap.get( g.getName() );
+            if ( plugin == null )
+            {
+                throw new NoSuchGoalException( g.getName() );
+            }
+            pluginSet.add( plugin );
+            Collection decorators = getPostGoalDecorators( g.getName() );
+            if ( log.isDebugEnabled() && !decorators.isEmpty() )
+            {
+                log.debug( "goal " + g.getName() + " has postGoal decorators " + decorators );
+            }
+            pluginSet.addAll( decorators );
+            decorators = getPreGoalDecorators( g.getName() );
+            if ( log.isDebugEnabled() && !decorators.isEmpty() )
+            {
+                log.debug( "goal " + g.getName() + " has preGoal decorators " + decorators );
+            }
+            pluginSet.addAll( decorators );
+        }
+
+        // Done like this as the dynatag plugin dependencies must be first in the list
+        InsertionOrderedSet newPluginSet = resolveDynaTagPlugins( pluginSet );
+        if ( log.isDebugEnabled() && !newPluginSet.isEmpty() )
+        {
+            log.debug( "dynatag dependencies: " + newPluginSet );
+        }
+        newPluginSet.addAll( pluginSet );
+        pluginSet = newPluginSet;
+
+        // Here we make the resolved plugins field be the full set of plugins, and the plugins returned just the
+        // additional ones resolved.
+        // TODO: skip the remove step - don't add if it is already loaded
+        pluginSet.removeAll( resolvedPlugins );
+        resolvedPlugins.addAll( pluginSet );
+
+        log.debug( "final list of plugins to prepare: " + pluginSet );
+
+        return pluginSet;
+    }
+
+    /**
+     * @todo [1.0] use werkz beta-11 version instead
+     */
+    public Goal[] getExecutionChain( String name, WerkzProject project )
+        throws NoSuchGoalException
+    {
+        Goal goal = project.getGoal( name );
+
+        LinkedList chain = new LinkedList();
+        LinkedList stack = new LinkedList();
+
+        stack.addLast( goal );
+
+        while ( !stack.isEmpty() )
+        {
+            goal = (Goal) stack.removeFirst();
+
+            if ( goal == null || chain.contains( goal ) )
+            {
+                continue;
+            }
+
+            chain.addFirst( goal );
+
+            List precursors = goal.getPrecursors();
+
+            for ( Iterator i = precursors.iterator(); i.hasNext(); )
+            {
+                Goal eachPrecursor = (Goal) i.next();
+
+                if ( !chain.contains( eachPrecursor ) )
+                {
+                    stack.addLast( eachPrecursor );
+                }
+            }
+        }
+
+        return (Goal[]) chain.toArray( Goal.EMPTY_ARRAY );
+    }
+
+    /**
+     * Resolve plugins that provide dynamic tags for the given set of plugins.
+     *
+     * @param plugins the plugins containing tags
+     * @return the plugins providing tags, in insertion order
+     */
+    private InsertionOrderedSet resolveDynaTagPlugins( Set plugins )
+    {
+        // Important to return an insertion ordered set as the calling function is going to add to it and
+        // depends on these remaining first
+        InsertionOrderedSet resolvedDynaTagPlugins = new InsertionOrderedSet();
+
+        for ( Iterator i = plugins.iterator(); i.hasNext(); )
+        {
+            JellyScriptHousing plugin = (JellyScriptHousing) i.next();
+            Set dynaTagDeps = getPluginDynaTagDeps( plugin );
+
+            for ( Iterator j = dynaTagDeps.iterator(); j.hasNext(); )
+            {
+                LinkedList dynaTagUris = new LinkedList();
+                Set seen = new HashSet();
+
+                Object next = j.next();
+                dynaTagUris.add( next );
+
+                while ( !dynaTagUris.isEmpty() )
+                {
+                    String dynaTagUri = (String) dynaTagUris.removeFirst();
+
+                    if ( seen.contains( dynaTagUri ) )
+                    {
+                        continue;
+                    }
+
+                    seen.add( dynaTagUri );
+
+                    Object dynaTagPluginHome = dynaTagPluginMap.get( dynaTagUri );
+                    if ( dynaTagPluginHome == null )
+                    {
+                        // This is essentially allowed for bootstrap so
+                        // plugins can import taglibs they don't use until later
+                        log.warn( "Tag library requested that is not present: '" + dynaTagUri + "' in plugin: '"
+                            + plugin.getName() + "'" );
+                    }
+                    else
+                    {
+                        Set set = getPluginDynaTagDeps( dynaTagPluginHome );
+                        dynaTagUris.addAll( set );
+                        resolvedDynaTagPlugins.add( dynaTagPluginHome );
+                    }
+                }
+            }
+        }
+        return resolvedDynaTagPlugins;
+    }
+
+    // ----------------------------------------------------------------------
+    // Handler implementation
+    // ----------------------------------------------------------------------
+
+    public void addPluginDynaTagDep( JellyScriptHousing housing, String uri )
+    {
+        getPluginDynaTagDeps( housing ).add( uri );
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.maven.plugin.PluginDefintionHandler#removePluginDynaTagDep(org.apache.maven.plugin.JellyScriptHousing, java.lang.String)
+     */
+    public void removePluginDynaTagDep( JellyScriptHousing housing, String uri )
+    {
+        getPluginDynaTagDeps( housing ).remove( uri );
+    }
+
+    public void addDynaTagLib( String tagLibUri, JellyScriptHousing jellyScriptHousing )
+    {
+        dynaTagPluginMap.put( tagLibUri, jellyScriptHousing );
+    }
+
+    public void addPostGoal( String name, JellyScriptHousing jellyScriptHousing )
+    {
+        getPostGoalDecorators( name ).add( jellyScriptHousing );
+    }
+
+    public void addPreGoal( String name, JellyScriptHousing jellyScriptHousing )
+    {
+        getPreGoalDecorators( name ).add( jellyScriptHousing );
+    }
+
+    public void addGoal( String name, String prereqs, String description, JellyScriptHousing jellyScriptHousing )
+    {
+        // We load plugins in order of priority, so don't add goals that already exist.
+        if ( !goalPluginMap.containsKey( name ) )
+        {
+            Goal goal = goalProject.getGoal( name, true );
+
+            goal.setDescription( description );
+
+            goalProject.addGoal( goal );
+
+            // Add to the goal -> plugin map.
+            goalPluginMap.put( name, jellyScriptHousing );
+
+            if ( prereqs != null )
+            {
+                String[] s = StringUtils.split( prereqs, "," );
+
+                for ( int i = 0; i < s.length; i++ )
+                {
+                    try
+                    {
+                        Goal prereq = goalProject.getGoal( s[i].trim(), true );
+                        goal.addPrecursor( prereq );
+                    }
+                    catch ( CyclicGoalChainException e )
+                    {
+                        // do nothing.
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * @return goal names
+     */
+    Set getGoalNames()
+    {
+        return goalPluginMap.keySet();
+    }
+
+    String getGoalDescription( String goalName )
+    {
+        Goal goal = goalProject.getGoal( goalName );
+        String goalDescription = ( goal != null ? goal.getDescription() : null );
+        if ( goalDescription != null )
+        {
+            goalDescription = goalDescription.trim();
+            if ( "null".equals( goalDescription ) )
+            {
+                goalDescription = null;
+            }
+            else if ( goalDescription.length() == 0 )
+            {
+                goalDescription = null;
+            }
+        }
+        return goalDescription;
+    }
+
+    void addResolvedPlugins( List projectHousings )
+    {
+        resolvedPlugins.addAll( projectHousings );
+    }
+
+    void clearResolvedPlugins()
+    {
+        resolvedPlugins.clear();
+    }
+
+    void invalidatePlugin( JellyScriptHousing housing )
+    {
+        resolvedPlugins.remove( housing );
+        for ( Iterator i = dynaTagPluginMap.keySet().iterator(); i.hasNext(); )
+        {
+            String uri = (String) i.next();
+            if ( dynaTagPluginMap.get( uri ).equals( housing ) )
+            {
+                i.remove();
+            }
+        }
+        pluginDynaTagDepsMap.remove( housing );
+
+        for ( Iterator i = goalPluginMap.keySet().iterator(); i.hasNext(); )
+        {
+            String goal = (String) i.next();
+            if ( goalPluginMap.get( goal ).equals( housing ) )
+            {
+                i.remove();
+                goalProject.removeGoal( goal );
+            }
+        }
+        for ( Iterator i = preGoalDecoratorsMap.keySet().iterator(); i.hasNext(); )
+        {
+            String preGoal = (String) i.next();
+            Set decorators = (Set) preGoalDecoratorsMap.get( preGoal );
+            decorators.remove( housing );
+        }
+        for ( Iterator i = postGoalDecoratorsMap.keySet().iterator(); i.hasNext(); )
+        {
+            String postGoal = (String) i.next();
+            Set decorators = (Set) postGoalDecoratorsMap.get( postGoal );
+            decorators.remove( housing );
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/JellyScriptHousing.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/JellyScriptHousing.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/JellyScriptHousing.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,267 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.apache.commons.jelly.Script;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Project;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+/**
+ * @author <a href="mailto:jason at maven.org">Jason van Zyl</a>
+ *
+ * @version $Id: JellyScriptHousing.java 426251 2006-07-27 21:23:33Z ltheussl $
+ */
+public class JellyScriptHousing
+{
+    /** Plug-in default properties name. */
+    private static final String PLUGIN_PROPERTIES_NAME = "plugin.properties";
+
+    /** Plugin properties. */
+    private Map pluginProperties = new HashMap();
+
+    /** Plugin Project. */
+    private Project project;
+
+    /** Jelly Script. */
+    private Script script;
+
+    /** the source of the jelly script. */
+    private File source;
+
+    private final String name;
+
+    private final File pluginDirectory;
+
+    private final MavenJellyContext parentContext;
+
+    public JellyScriptHousing()
+    {
+        this.name = null;
+        this.pluginDirectory = null;
+        this.parentContext = null;
+    }
+
+    public JellyScriptHousing( File pluginDir, MavenJellyContext parentContext )
+        throws IOException
+    {
+        this.pluginDirectory = pluginDir;
+        this.name = pluginDir.getName();
+        this.source = new File( pluginDir, "plugin.jelly" );
+        this.parentContext = parentContext;
+        this.pluginProperties = loadPluginProperties();
+    }
+
+    // ----------------------------------------------------------------------
+    // Accessors
+    // ----------------------------------------------------------------------
+
+    public File getSource()
+    {
+        return source;
+    }
+
+    public void setSource( File source )
+    {
+        this.source = source;
+    }
+
+    /**
+     *
+     * @return Project
+     */
+    public Project getProject()
+        throws MavenException
+    {
+        if ( project == null )
+        {
+            project = MavenUtils.getProject( new File( pluginDirectory, "project.xml" ), parentContext, false );
+        }
+        return project;
+    }
+
+    /**
+     *
+     * @param project
+     */
+    public void setProject( Project project )
+    {
+        this.project = project;
+    }
+
+    public void setScript( Script script )
+    {
+        this.script = script;
+    }
+
+    /**
+     *
+     * @return Script
+     */
+    Script getScript()
+    {
+        return script;
+    }
+
+    public String toString()
+    {
+        return "\n source = " + getSource() + "\n project = " + project + "\n script = " + script;
+    }
+
+    /**
+     * @return String
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    void parse( PluginDefinitionHandler handler, String systemId, InputStream inStream )
+        throws MavenException
+    {
+        try
+        {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setNamespaceAware( true );
+            SAXParser parser = factory.newSAXParser();
+            InputSource is = new InputSource( inStream );
+            is.setSystemId( systemId );
+            parser.parse( is, new PluginScriptParser( handler, this ) );
+        }
+        catch ( ParserConfigurationException e )
+        {
+            throw new MavenException( "Error parsing plugin script", e );
+        }
+        catch ( SAXException e )
+        {
+            throw new MavenException( "Error parsing plugin script", e );
+        }
+        catch ( IOException e )
+        {
+            throw new MavenException( "Error reading plugin script", e );
+        }
+    }
+
+    void parse( PluginDefinitionHandler handler )
+        throws MavenException
+    {
+        FileInputStream fis = null;
+        try
+        {
+            fis = new FileInputStream( source );
+            parse( handler, source.getAbsolutePath(), fis );
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new MavenException( "Error reading plugin script", e );
+        }
+        finally
+        {
+            if ( fis != null )
+            {
+                try
+                {
+                    fis.close();
+                }
+                catch ( IOException e )
+                {
+                    // Nothing to do
+                }
+                fis = null;
+            }
+        }
+    }
+
+    /**
+     * @return Map
+     */
+    public Map getPluginProperties()
+    {
+        return pluginProperties;
+    }
+
+    /**
+     * @return File
+     */
+    public File getPluginDirectory()
+    {
+        return pluginDirectory;
+    }
+
+    /**
+     * Retrieve the plugin's default properties.
+     * 
+     * @param unpackedPluginDir The location of the unpacked plugin.
+     * @return The default properties file for the plugin, or <code>null</code>
+     *         if no such plugin.
+     * @throws IOException If an IO error occurs while attempting to read the
+     *                     plugin's properties.
+     */
+    private Map loadPluginProperties()
+        throws IOException
+    {
+        Map map = new HashMap();
+
+        File propsFile = new File( pluginDirectory, PLUGIN_PROPERTIES_NAME );
+
+        if ( propsFile.exists() )
+        {
+            Properties props = new Properties();
+            FileInputStream in = null;
+            try
+            {
+                in = new FileInputStream( propsFile );
+                props.load( in );
+                map.putAll( props );
+            }
+            finally
+            {
+                if ( in != null )
+                {
+                    try
+                    {
+                        in.close();
+                    }
+                    catch ( IOException e )
+                    {
+                        // Nothing to do
+                    }
+                    in = null;
+                }
+            }
+        }
+
+        return map;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginCacheManager.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginCacheManager.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginCacheManager.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,732 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenSession;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * Plugin cache management.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ */
+final class PluginCacheManager
+    implements PluginDefinitionHandler
+{
+    /** Log. */
+    private static final Log log = LogFactory.getLog( PluginCacheManager.class );
+
+    /** Maven session log */
+    private static final Log sessionLog = LogFactory.getLog( MavenSession.class );
+
+    /** Plug-in cache lock. */
+    public static final String LOCK_CACHE = "lock.cache";
+
+    /** Plug-in cache valid. */
+    public static final String VALID_CACHE = "valid.cache";
+
+    /** Artifact ID to Plug-in cache */
+    public static final String ARTIFACT_ID_CACHE = "artifactIdToPlugin.cache";
+
+    /** Plug-in cache */
+    public static final String PLUGINS_CACHE = "plugins.cache";
+
+    /** Goal cache */
+    public static final String GOALS_CACHE = "goals.cache";
+
+    /** call backs cache */
+    public static final String CALLBACKS_CACHE = "callbacks.cache";
+
+    /** Taglibs cache */
+    public static final String DYNAMIC_TAGLIBS_CACHE = "dynatag.cache";
+
+    /** Plugin -&gt; dynatag dependencies. */
+    public static final String PLUGIN_DYNATAG_DEPS_CACHE = "plugin-dynatag-deps.cache";
+
+    /** Dirty flag. */
+    private boolean dirty = true;
+
+    /**
+     * The artifact id cache contains plugin name to artifact ID mappings.
+     * @todo just for getPluginContext - should not be loading multiple versions, and hence using artifact ID instead of name everywhere...
+     */
+    private Properties artifactIdCache = new Properties();
+
+    /**
+     * The goals caches contains a mapping of goal names to a description for the
+     * goal and any prerequisite goals.
+     */
+    private Properties goalCache = new Properties();
+
+    /**
+     * The plugin cache contains a mapping of goal names to plugin names.
+     */
+    private Properties pluginCache = new Properties();
+
+    /**
+     * Dyanamic tag libraries that are created within plugin.jelly scripts using
+     * the jelly:define tags. So we might have something like the following:
+     * <pre>
+     * &lt;define:taglib uri="aptdoc"&gt;
+     *   &lt;define:jellybean
+     *     name="convert"
+     *     className="org.apache.maven.aptdoc.AptToXdocConverter"
+     *     method="doExecute"
+     *   /&gt;
+     * &lt;/define:taglib&gt;
+     * </pre>
+     * What will end up in the dynamic-taglibs.cache file is something like
+     * the following:
+     *
+     * aptdoc=maven-aptdoc-1.0-SNAPSHOT
+     */
+    private Properties dynaTagLibCache = new Properties();
+
+    /**
+     * This is list of registered preGoals and postGoals in the various plugins. For
+     * example the antlr plugin has preGoal set on java:compile goal to make sure that
+     * that antlr can generate the requested sources before java:compile executes. In
+     * this case we have something like the following registered in the callbacks.cache
+     * file:
+     *
+     * java\:compile.pre=maven-antlr-plugin[1.1-SNAPSHOT;1.2]
+     *
+     * Note that ":" is a key termination character to the Properties class so we
+     * escape it to be identified as a ":" character.
+     */
+    private Properties callbackCache = new Properties();
+
+    /**
+     * Plugin dependencies on dyna tags. So, for example, the junit plugin
+     * depends on the 'doc' dynatag which provides the mechanism to perform
+     * a JSL transformation.
+     */
+    private Properties pluginDynaTagDepsCache = new Properties();
+
+    /** Default constructor. */
+    public PluginCacheManager()
+    {
+    }
+
+    void checkLockFile( File lockFile )
+    {
+        for ( int i = 1; i <= 10; i++ )
+        {
+            if ( lockFile.exists() )
+            {
+                log.info( "Lock file " + lockFile + " exists, waiting... " + i + " of 10" );
+                try
+                {
+                    Thread.sleep( 1000 );
+                }
+                catch ( InterruptedException e )
+                {
+                    // do nothing
+                }
+            }
+            else
+            {
+                break;
+            }
+        }
+        if ( lockFile.exists() )
+        {
+            log.warn( "Lock file still exists: ignoring" );
+            lockFile.delete();
+        }
+    }
+
+    void saveCache( File directory )
+        throws IOException
+    {
+        if ( !dirty )
+        {
+            return;
+        }
+
+        directory.mkdirs();
+
+        File lockFile = new File( directory, LOCK_CACHE );
+        checkLockFile( lockFile );
+
+        log.debug( "Locking " + lockFile );
+        if ( !lockFile.getParentFile().exists() )
+        {
+            lockFile.getParentFile().mkdirs();
+        }
+        lockFile.createNewFile();
+
+        try
+        {
+            if ( log.isDebugEnabled() )
+            {
+                log.debug( "Saving caches to " + directory.getAbsolutePath() );
+            }
+
+            File f = new File( directory, VALID_CACHE );
+            f.delete();
+            storeProperties( pluginCache, new File( directory, PLUGINS_CACHE ), "plugins cache" );
+            storeProperties( goalCache, new File( directory, GOALS_CACHE ), "goals cache" );
+            storeProperties( callbackCache, new File( directory, CALLBACKS_CACHE ), "callbacks cache" );
+            storeProperties( dynaTagLibCache, new File( directory, DYNAMIC_TAGLIBS_CACHE ), "taglibs cache" );
+            storeProperties( pluginDynaTagDepsCache, new File( directory, PLUGIN_DYNATAG_DEPS_CACHE ),
+                             "plugin deps cache" );
+            storeProperties( artifactIdCache, new File( directory, ARTIFACT_ID_CACHE ), "artifact ID to plugin mapping" );
+            f.createNewFile();
+            dirty = false;
+        }
+        finally
+        {
+            log.debug( "Unlocking " + lockFile );
+            lockFile.delete();
+        }
+    }
+
+    /**
+     * Write the given properties to the given file in the unpacked dir
+     * @param properties the properties object to store
+     * @param header the header for the written properties
+     * @throws FileNotFoundException when the unpacked plugin directory can't be found
+     * @throws IOException if there is a problem storing properties
+     */
+    private void storeProperties( Properties properties, File file, String header )
+        throws FileNotFoundException, IOException
+    {
+        FileOutputStream stream = new FileOutputStream( file );
+        properties.store( stream, header );
+        stream.close();
+    }
+
+    /**
+     * @return a loaded properties file from disk or a new one if there are any problems
+     * @param file the file within the unpacked plugins dir to load
+     */
+    private Properties loadProperties( File file )
+        throws IOException
+    {
+        Properties properties = new Properties();
+        FileInputStream stream = null;
+        try
+        {
+            stream = new FileInputStream( file );
+            properties.load( stream );
+        }
+        finally
+        {
+            if ( stream != null )
+            {
+                try
+                {
+                    stream.close();
+                }
+                catch ( IOException e )
+                {
+                    // Nothing to do
+                }
+            }
+        }
+        return properties;
+    }
+
+    /**
+     *  Load on-disk cache information, if possible.
+     */
+    void loadCache( File directory )
+    {
+        File lockFile = new File( directory, LOCK_CACHE );
+        checkLockFile( lockFile );
+
+        File f = new File( directory, VALID_CACHE );
+        if ( !f.exists() )
+        {
+            log.info( "Plugin cache will be regenerated" );
+            return;
+        }
+        log.debug( "Loading plugin cache" );
+        try
+        {
+            pluginCache = loadProperties( new File( directory, PLUGINS_CACHE ) );
+            goalCache = loadProperties( new File( directory, GOALS_CACHE ) );
+            callbackCache = loadProperties( new File( directory, CALLBACKS_CACHE ) );
+            dynaTagLibCache = loadProperties( new File( directory, DYNAMIC_TAGLIBS_CACHE ) );
+            pluginDynaTagDepsCache = loadProperties( new File( directory, PLUGIN_DYNATAG_DEPS_CACHE ) );
+            artifactIdCache = loadProperties( new File( directory, ARTIFACT_ID_CACHE ) );
+        }
+        catch ( IOException e )
+        {
+            log.warn( "Clearing cache due to exception loading part of cache" );
+            log.debug( "Exception", e );
+            clearCache();
+        }
+        dirty = false;
+    }
+
+    /**
+     * Manipulate a csv property string.
+     *
+     * @param properties
+     * @param key
+     * @param newEntry
+     */
+    private void appendCsvProperty( Properties properties, String key, String newEntry )
+    {
+        String csvProperty = properties.getProperty( key );
+
+        if ( csvProperty == null )
+        {
+            properties.setProperty( key, newEntry );
+        }
+        else
+        {
+            StringTokenizer st = new StringTokenizer( csvProperty, "," );
+
+            while ( st.hasMoreTokens() )
+            {
+                if ( st.nextToken().equals( newEntry ) )
+                {
+                    return;
+                }
+            }
+            // not already there so append and return
+            properties.setProperty( key, csvProperty + ',' + newEntry );
+        }
+    }
+
+    public void addPluginDynaTagDep( JellyScriptHousing housing, String uri )
+    {
+        appendCsvProperty( pluginDynaTagDepsCache, housing.getName(), uri );
+        dirty = true;
+    }
+
+    public void removePluginDynaTagDep( JellyScriptHousing housing, String uri )
+    {
+        String prop = (String) pluginDynaTagDepsCache.get( housing.getName() );
+        int tl = uri.length();
+
+        if ( prop.indexOf( "," ) < 0 )
+        {
+            pluginDynaTagDepsCache.remove( housing.getName() );
+        }
+        else
+        {
+            int i = prop.indexOf( uri + "," );
+            if ( i == 0 )
+            {
+                // First
+                prop = prop.substring( tl + 1 );
+            }
+            else if ( i > 0 )
+            {
+                // Middle
+                prop = prop.substring( 0, i ) + prop.substring( i + tl + 1 );
+            }
+            else
+            {
+                // The last entry
+                prop = prop.substring( 0, prop.length() - tl - 1 );
+            }
+            if ( log.isDebugEnabled() )
+            {
+                log.debug( "Caching Taglib Dependency --> " + prop );
+            }
+            pluginDynaTagDepsCache.put( housing.getName(), prop );
+        }
+        dirty = true;
+    }
+
+    void registerPlugin( String name, JellyScriptHousing housing )
+        throws MavenException
+    {
+        artifactIdCache.put( name, housing.getProject().getArtifactId() );
+    }
+
+    public void addPostGoal( String name, JellyScriptHousing housing )
+    {
+        appendCsvProperty( callbackCache, name + ".post", housing.getName() );
+        dirty = true;
+    }
+
+    public void addPreGoal( String name, JellyScriptHousing housing )
+    {
+        appendCsvProperty( callbackCache, name + ".pre", housing.getName() );
+        dirty = true;
+    }
+
+    public void addGoal( String name, String prereqs, String description, JellyScriptHousing housing )
+    {
+        String goalProperty = description + ">";
+
+        if ( prereqs != null )
+        {
+            goalProperty += StringUtils.deleteWhitespace( prereqs );
+        }
+
+        goalCache.setProperty( name, goalProperty );
+        pluginCache.setProperty( name, housing.getName() );
+        dirty = true;
+    }
+
+    public void addDynaTagLib( String tagLibUri, JellyScriptHousing housing )
+    {
+        dynaTagLibCache.setProperty( tagLibUri, housing.getName() );
+        dirty = true;
+    }
+
+    /**
+     * Invalidate cache information for a single plugin.
+     *
+     * @param pluginName The name of the plugin to invalid cache entries.
+     */
+    void invalidateCache( String pluginName )
+    {
+        log.debug( "Invalidating plugin " + pluginName );
+        for ( Iterator i = dynaTagLibCache.keySet().iterator(); i.hasNext(); )
+        {
+            String uri = (String) i.next();
+
+            if ( dynaTagLibCache.getProperty( uri ).equals( pluginName ) )
+            {
+                sessionLog.debug( "removing dynataglib cache entry for uri " + uri );
+                i.remove();
+            }
+        }
+        for ( Iterator i = callbackCache.keySet().iterator(); i.hasNext(); )
+        {
+            String callbackName = (String) i.next();
+            String goalName = callbackName.endsWith( ".pre" ) ? callbackName.substring( 0, callbackName.length() - 4 )
+                                                             : callbackName.substring( 0, callbackName.length() - 5 );
+
+            // This may be null as you can define pre/postGoals on goals that don't (yet) exist
+            String callbackPlugin = pluginCache.getProperty( goalName );
+            String callbacks = callbackCache.getProperty( callbackName );
+            if ( pluginName.equals( callbackPlugin ) )
+            {
+                sessionLog
+                    .debug( "removing callback cache entry for goal " + callbackName + " (goal in source plugin)" );
+                i.remove();
+            }
+            else if ( pluginName.equals( callbacks ) )
+            {
+                sessionLog
+                    .debug( "removing callback cache entry for goal " + callbackName + " (lone callback removed)" );
+                i.remove();
+            }
+            else
+            {
+                StringTokenizer tok = new StringTokenizer( callbacks, "," );
+                StringBuffer newCallback = new StringBuffer();
+                boolean changed = false;
+                while ( tok.hasMoreTokens() )
+                {
+                    String name = tok.nextToken();
+                    if ( name.equals( pluginName ) )
+                    {
+                        changed = true;
+                    }
+                    else
+                    {
+                        if ( newCallback.length() > 0 )
+                        {
+                            newCallback.append( "," );
+                        }
+                        newCallback.append( name );
+                    }
+                }
+                if ( changed )
+                {
+                    callbacks = newCallback.toString();
+                    sessionLog.debug( "removing callback cache value for goal " + callbackName
+                        + " (other callbacks remain: " + callbacks + ")" );
+                    callbackCache.setProperty( callbackName, callbacks );
+                }
+            }
+        }
+        for ( Iterator i = goalCache.keySet().iterator(); i.hasNext(); )
+        {
+            String eachGoal = (String) i.next();
+
+            if ( pluginCache.getProperty( eachGoal ).equals( pluginName ) )
+            {
+                sessionLog.debug( "removing goal and plugin cache entry for goal " + eachGoal );
+                i.remove();
+                pluginCache.remove( eachGoal );
+            }
+        }
+        if ( pluginDynaTagDepsCache.containsKey( pluginName ) )
+        {
+            sessionLog.debug( "removing dynatag dependency cache entry" );
+            pluginDynaTagDepsCache.remove( pluginName );
+        }
+        if ( artifactIdCache.containsKey( pluginName ) )
+        {
+            sessionLog.debug( "removing artifactId cache entry" );
+            artifactIdCache.remove( pluginName );
+        }
+
+        dirty = true;
+    }
+
+    private JellyScriptHousing loadHousing( String pluginName, PluginManager manager, Map pluginDirs, String desc )
+        throws IOException
+    {
+        File dir = (File) pluginDirs.get( pluginName );
+        if ( dir == null )
+        {
+            sessionLog.warn( "plugin " + pluginName + " is cached (" + desc + ") but no longer present" );
+            return null;
+        }
+
+        JellyScriptHousing housing = manager.loadPluginHousing( pluginName, dir );
+        if ( housing == null )
+        {
+            sessionLog.error( "plugin " + pluginName + " is cached (" + desc + ") but no longer valid" );
+            return null;
+        }
+        return housing;
+    }
+
+    private void clearCache()
+    {
+        pluginCache.clear();
+        callbackCache.clear();
+        goalCache.clear();
+        dynaTagLibCache.clear();
+        pluginDynaTagDepsCache.clear();
+        artifactIdCache.clear();
+    }
+
+    /**
+     * @param mapper
+     */
+    boolean mapPlugins( GoalToJellyScriptHousingMapper mapper, PluginManager manager, Map pluginDirs )
+        throws IOException
+    {
+        // Must invalidate bad ones first to keep iterators and cache consistent
+        for ( Iterator i = pluginDynaTagDepsCache.keySet().iterator(); i.hasNext(); )
+        {
+            String pluginName = (String) i.next();
+            JellyScriptHousing housing = loadHousing( pluginName, manager, pluginDirs, "dynatag dep" );
+            if ( housing == null )
+            {
+                clearCache();
+                return false;
+            }
+        }
+        for ( Iterator i = pluginCache.keySet().iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+            String pluginName = pluginCache.getProperty( goalName );
+            JellyScriptHousing housing = loadHousing( pluginName, manager, pluginDirs, "goal" );
+            if ( housing == null )
+            {
+                clearCache();
+                return false;
+            }
+        }
+        for ( Iterator i = artifactIdCache.keySet().iterator(); i.hasNext(); )
+        {
+            String pluginName = (String) i.next();
+            JellyScriptHousing housing = loadHousing( pluginName, manager, pluginDirs, "artifactId" );
+            if ( housing == null )
+            {
+                clearCache();
+                return false;
+            }
+        }
+
+        Map preGoals = new HashMap();
+        Map postGoals = new HashMap();
+        for ( Iterator i = callbackCache.keySet().iterator(); i.hasNext(); )
+        {
+            String callbackName = (String) i.next();
+            boolean isPreGoal = callbackName.endsWith( ".pre" );
+            String goalName = isPreGoal ? callbackName.substring( 0, callbackName.length() - 4 ) : callbackName
+                .substring( 0, callbackName.length() - 5 );
+            String pluginNames = callbackCache.getProperty( callbackName );
+            StringTokenizer tok = new StringTokenizer( pluginNames, "," );
+            List housings = new ArrayList();
+            if ( isPreGoal )
+            {
+                preGoals.put( goalName, housings );
+            }
+            else
+            {
+                postGoals.put( goalName, housings );
+            }
+            while ( tok.hasMoreTokens() )
+            {
+                String pluginName = tok.nextToken();
+                JellyScriptHousing housing = loadHousing( pluginName, manager, pluginDirs, "callbacks" );
+                if ( housing != null )
+                {
+                    housings.add( housing );
+                }
+                else
+                {
+                    clearCache();
+                    return false;
+                }
+            }
+        }
+
+        for ( Iterator i = dynaTagLibCache.keySet().iterator(); i.hasNext(); )
+        {
+            String uri = (String) i.next();
+            String pluginName = dynaTagLibCache.getProperty( uri );
+            JellyScriptHousing housing = loadHousing( pluginName, manager, pluginDirs, "dynataglib" );
+            if ( housing == null )
+            {
+                clearCache();
+                return false;
+            }
+        }
+
+        // Now map the clean set of plugins
+        for ( Iterator i = preGoals.keySet().iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+            List housings = (List) preGoals.get( goalName );
+            for ( Iterator j = housings.iterator(); j.hasNext(); )
+            {
+                JellyScriptHousing housing = (JellyScriptHousing) j.next();
+                mapper.addPreGoal( goalName, housing );
+            }
+        }
+        for ( Iterator i = postGoals.keySet().iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+            List housings = (List) postGoals.get( goalName );
+            for ( Iterator j = housings.iterator(); j.hasNext(); )
+            {
+                JellyScriptHousing housing = (JellyScriptHousing) j.next();
+                mapper.addPostGoal( goalName, housing );
+            }
+        }
+
+        for ( Iterator i = pluginDynaTagDepsCache.keySet().iterator(); i.hasNext(); )
+        {
+            String pluginName = (String) i.next();
+            JellyScriptHousing housing = manager.loadPluginHousing( pluginName, (File) pluginDirs.get( pluginName ) );
+            String csv = pluginDynaTagDepsCache.getProperty( pluginName );
+            StringTokenizer tok = new StringTokenizer( csv, "," );
+            while ( tok.hasMoreTokens() )
+            {
+                String uri = tok.nextToken();
+                mapper.addPluginDynaTagDep( housing, uri );
+            }
+        }
+
+        for ( Iterator i = pluginCache.keySet().iterator(); i.hasNext(); )
+        {
+            String goalName = (String) i.next();
+            String pluginName = pluginCache.getProperty( goalName );
+            JellyScriptHousing housing = manager.loadPluginHousing( pluginName, (File) pluginDirs.get( pluginName ) );
+            String goal = goalCache.getProperty( goalName );
+            int index = goal.indexOf( ">" );
+            String description = null;
+            if ( index > 0 )
+            {
+                description = goal.substring( 0, index );
+            }
+            String prereqs = goal.substring( index + 1 );
+
+            mapper.addGoal( goalName, prereqs, description, housing );
+        }
+
+        for ( Iterator i = dynaTagLibCache.keySet().iterator(); i.hasNext(); )
+        {
+            String uri = (String) i.next();
+            String pluginName = dynaTagLibCache.getProperty( uri );
+            JellyScriptHousing housing = manager.loadPluginHousing( pluginName, (File) pluginDirs.get( pluginName ) );
+            mapper.addDynaTagLib( uri, housing );
+        }
+
+        for ( Iterator i = artifactIdCache.keySet().iterator(); i.hasNext(); )
+        {
+            String pluginName = (String) i.next();
+            JellyScriptHousing housing = manager.loadPluginHousing( pluginName, (File) pluginDirs.get( pluginName ) );
+            manager.mapArtifactIdToPluginHousing( artifactIdCache.getProperty( pluginName ), housing );
+        }
+        return true;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.maven.plugin.PluginDefintionHandler#setDefaultGoalName(java.lang.String)
+     */
+    public void setDefaultGoalName( String defaultGoalName )
+    {
+        // this method intentionally left blank
+    }
+
+    /**
+     * @return Properties
+     */
+    Properties getPluginCache()
+    {
+        return pluginCache;
+    }
+
+    /**
+     * @return Properties
+     */
+    public Properties getGoalCache()
+    {
+        return goalCache;
+    }
+
+    /**
+     * @return Returns the callbackCache.
+     */
+    Properties getCallbackCache()
+    {
+        return callbackCache;
+    }
+
+    /**
+     * @return Returns the dynaTagLibCache.
+     */
+    Properties getDynaTagLibCache()
+    {
+        return dynaTagLibCache;
+    }
+
+    /**
+     * @return Returns the pluginDynaTagDepsCache.
+     */
+    Properties getPluginDynaTagDepsCache()
+    {
+        return pluginDynaTagDepsCache;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: PluginDefinitionHandler.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+interface PluginDefinitionHandler
+{
+    void setDefaultGoalName( String defaultGoalName );
+
+    void addPluginDynaTagDep( JellyScriptHousing housing, String uri );
+
+    void removePluginDynaTagDep( JellyScriptHousing housing, String uri );
+
+    void addPostGoal( String name, JellyScriptHousing housing );
+
+    void addPreGoal( String name, JellyScriptHousing housing );
+
+    void addGoal( String name, String prereqs, String description, JellyScriptHousing housing );
+
+    void addDynaTagLib( String tagLibUri, JellyScriptHousing housing );
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginManager.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginManager.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginManager.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,1222 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.jelly.Script;
+import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.AbstractMavenComponent;
+import org.apache.maven.AntProjectBuilder;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenSession;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.UnknownGoalException;
+import org.apache.maven.jelly.JellyUtils;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Dependency;
+import org.apache.maven.project.Project;
+import org.apache.maven.repository.Artifact;
+import org.apache.maven.util.Expand;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.NoSuchGoalException;
+import org.apache.maven.werkz.Session;
+import org.apache.maven.werkz.WerkzProject;
+import org.apache.maven.werkz.jelly.JellySession;
+
+import com.werken.forehead.Forehead;
+import com.werken.forehead.ForeheadClassLoader;
+
+/*
+
+ NOTES:
+
+ We initialize the plugin with an empty context. When we are finished initializing the
+ plugins we will have a context with a werkz project object that has been created
+ that will contain all the goals present within the plugins.
+
+ The result of this initialization is the creation of all the cache files which
+ give us an outline of what is required to attain a particular goal.
+
+ When a particular project needs to attain one of these goals we need to
+ load the plugin and in doing so we run the plugin.jelly script for the required
+ plugins against the projects context.
+
+ Possibly eventually we could make this more efficient storing the plugin.jelly
+ in an accessible templated form which when required for a particular project
+ can be executed against the project's context.
+
+ IMPLEMENTATION NOTES
+
+ - We need to know the goals to attain
+ - We need to keep track of plugins that have been loaded for a particular project.
+
+ */
+
+/**
+ * Plugin manager for MavenSession.
+ * <p/>
+ * The <code>PluginManager</code> deals with all aspects of a plugins lifecycle.
+ * <p/>
+ * This is <b>not</b> thread safe.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: PluginManager.java 426251 2006-07-27 21:23:33Z ltheussl $
+ */
+public class PluginManager
+    extends AbstractMavenComponent
+{
+    /**
+     * Logger
+     */
+    private static final Log log = LogFactory.getLog( PluginManager.class );
+
+    /**
+     * The variable key that holds an implementation of the
+     * <code>com.werken.werkz.Session</code> in the parent scope context.
+     */
+    public static final String GLOBAL_SESSION_KEY = "maven.session.global";
+
+    public static final String PLUGIN_MANAGER = "maven.plugin.manager";
+
+    public static final String PLUGIN_HOUSING = "maven.plugin.script.housing";
+
+    public static final String GOAL_MAPPER = "maven.plugin.mapper";
+
+    /** */
+    public static final String BASE_CONTEXT = "maven.goalAttainmentContext";
+
+    /**
+     * The directory where plugin jars reside under Maven's home.
+     */
+    private File pluginsDir;
+
+    /**
+     * The directory where the plugin jars are unpacked to.
+     */
+    private File unpackedPluginsDir;
+
+    /**
+     * The directory where the user's plugin jars are installed.
+     */
+    private File userPluginsDir;
+
+    /**
+     * This contains a map of plugins, keyed by id.
+     */
+    private final Map pluginHousings = new HashMap();
+
+    /**
+     * This contains a map of plugins, keyed by artifact id.
+     */
+    private final Map artifactIdToHousingMap = new HashMap();
+
+    /**
+     * Maven session reference.
+     */
+    private MavenSession mavenSession;
+
+    /**
+     * Plugin cache manager.
+     */
+    private final PluginCacheManager cacheManager = new PluginCacheManager();
+
+    /**
+     * Goal to Plugins mapper.
+     */
+    private GoalToJellyScriptHousingMapper mapper = new GoalToJellyScriptHousingMapper();
+
+    /**
+     * Current plugins mapper (transient - includes maven.xml, etc). *
+     */
+    private GoalToJellyScriptHousingMapper transientMapper = mapper;
+
+    /**
+     * Plugins to be popped afterwards.
+     */
+    private Set delayedPops = new HashSet();
+
+    /**
+     * The current goal attainment base context.
+     */
+    private MavenJellyContext baseContext;
+
+    private static final String PLUGIN_TEMP_MAP = "PluginManager.PLUGIN_TEMP_MAP";
+
+    /**
+     * Default constructor.
+     *
+     * @param session The MavenSession this plugin manager will use
+     *                until Maven shuts down.
+     */
+    public PluginManager( MavenSession session )
+    {
+        mavenSession = session;
+    }
+
+    /**
+     * Get the list of plugin files.
+     */
+    private Map getPluginFiles( File directory, boolean acceptDirectories )
+    {
+        File[] files = directory.listFiles();
+        if ( files == null )
+        {
+            return Collections.EMPTY_MAP;
+        }
+
+        Map pluginFiles = new HashMap();
+        for ( int i = 0; i < files.length; i++ )
+        {
+            String plugin = files[i].getName();
+            if ( files[i].isDirectory() && acceptDirectories )
+            {
+                pluginFiles.put( plugin, files[i] );
+            }
+            else
+            {
+                int index = plugin.indexOf( ".jar" );
+                if ( index >= 0 )
+                {
+                    String name = plugin.substring( 0, index );
+                    pluginFiles.put( name, files[i] );
+                }
+            }
+        }
+        return pluginFiles;
+    }
+
+    /**
+     * Load plugins.
+     *
+     * @throws MavenException when the plugin jars can't be expanded
+     */
+    private void loadUncachedPlugins( Map pluginFiles )
+        throws IOException, MavenException
+    {
+        log.debug( "Now loading uncached plugins" );
+
+        for ( Iterator i = pluginFiles.keySet().iterator(); i.hasNext(); )
+        {
+            String name = (String) i.next();
+            File pluginDir = (File) pluginFiles.get( name );
+
+            if ( !isLoaded( name ) )
+            {
+                JellyScriptHousing housing = createPluginHousing( pluginDir );
+                if ( housing != null )
+                {
+                    cacheManager.registerPlugin( name, housing );
+                    housing.parse( cacheManager );
+                    housing.parse( mapper );
+                }
+            }
+        }
+    }
+
+    /**
+     * Initialize all plugins.
+     */
+    public void initialize()
+        throws IOException, MavenException
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( "Initializing Plugins!" );
+        }
+
+        setPluginsDir( new File( mavenSession.getRootContext().getPluginsDir() ) );
+        setUnpackedPluginsDir( new File( mavenSession.getRootContext().getUnpackedPluginsDir() ) );
+        setUserPluginsDir( new File( mavenSession.getRootContext().getUserPluginsDir() ) );
+
+        if ( !getPluginsDir().isDirectory()
+            || ( getPluginsDir().listFiles() != null && getPluginsDir().listFiles().length == 0 ) )
+        {
+            throw new MavenException( "Maven was badly installed. Please reinstall it." );
+        }
+
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( "Set plugin source directory to " + getPluginsDir().getAbsolutePath() );
+            log.debug( "Set unpacked plugin directory to " + getUnpackedPluginsDir().getAbsolutePath() );
+            log.debug( "Set user plugin directory to " + getUserPluginsDir().getAbsolutePath() );
+        }
+
+        // plugin profile at this point is all of the JAR files in the plugins directory and the unpacked plugins dir
+        // future ideas: have installation, user (outside of the cache), and project (via deps) plugins
+        // allow further customisation via a profile descriptor.
+
+        Map pluginFiles = getPluginFiles( pluginsDir, true );
+        Map userPluginFiles = getPluginFiles( userPluginsDir, false );
+
+        if ( !userPluginFiles.isEmpty() )
+        {
+            pluginFiles.putAll( userPluginFiles );
+        }
+
+        cacheManager.loadCache( unpackedPluginsDir );
+
+        Map pluginDirs = expandPluginFiles( pluginFiles );
+
+        log.debug( "Now mapping cached plugins" );
+        if ( !cacheManager.mapPlugins( mapper, this, pluginDirs ) )
+        {
+            log.info( "Cache invalidated due to out of date plugins" );
+            // The following housings are considered loaded - so go through and cache them manually
+            for ( Iterator i = pluginHousings.values().iterator(); i.hasNext(); )
+            {
+                JellyScriptHousing housing = (JellyScriptHousing) i.next();
+                cacheManager.registerPlugin( housing.getName(), housing );
+                housing.parse( cacheManager );
+                housing.parse( mapper );
+            }
+        }
+
+        loadUncachedPlugins( pluginDirs );
+
+        cacheManager.saveCache( unpackedPluginsDir );
+
+        log.debug( "Finished initializing Plugins!" );
+    }
+
+    private Map expandPluginFiles( Map pluginFiles )
+        throws MavenException
+    {
+        Map pluginDirs = new HashMap();
+        for ( Iterator i = pluginFiles.keySet().iterator(); i.hasNext(); )
+        {
+            String name = (String) i.next();
+            File jarFile = (File) pluginFiles.get( name );
+            File dir = jarFile;
+            if ( !dir.isDirectory() )
+            {
+                dir = unpackPlugin( name, jarFile, true );
+            }
+            pluginDirs.put( name, dir );
+        }
+        return pluginDirs;
+    }
+
+    JellyScriptHousing loadPluginHousing( String name, File pluginDir )
+        throws IOException
+    {
+        JellyScriptHousing housing = (JellyScriptHousing) pluginHousings.get( name );
+        return ( housing == null ? createLazyPluginHousing( pluginDir ) : housing );
+    }
+
+    private JellyScriptHousing createPluginHousing( File pluginDir )
+        throws MavenException, IOException
+    {
+        JellyScriptHousing housing = createLazyPluginHousing( pluginDir );
+        if ( housing != null )
+        {
+            String artifactId = housing.getProject().getArtifactId();
+            mapArtifactIdToPluginHousing( artifactId, housing );
+        }
+        return housing;
+    }
+
+    void mapArtifactIdToPluginHousing( String artifactId, JellyScriptHousing housing )
+    {
+        if ( artifactIdToHousingMap.containsKey( artifactId ) )
+        {
+            JellyScriptHousing h = (JellyScriptHousing) artifactIdToHousingMap.get( artifactId );
+            log.warn( "WARNING: Plugin '" + artifactId + "' is already loaded from " + h.getName()
+                + "; attempting to load " + housing.getName() );
+        }
+        artifactIdToHousingMap.put( artifactId, housing );
+    }
+
+    private JellyScriptHousing createLazyPluginHousing( File pluginDir )
+        throws IOException
+    {
+        if ( !pluginDir.isDirectory() || !new File( pluginDir, "project.xml" ).exists() )
+        {
+            log.debug( "Not a plugin directory: " + pluginDir );
+            return null;
+        }
+
+        String pluginName = pluginDir.getName();
+
+        log.debug( "Loading plugin '" + pluginName + "'" );
+
+        JellyScriptHousing jellyScriptHousing = new JellyScriptHousing( pluginDir, mavenSession.getRootContext() );
+
+        pluginHousings.put( pluginName, jellyScriptHousing );
+
+        return jellyScriptHousing;
+    }
+
+    private boolean isLoaded( String name )
+    {
+        return pluginHousings.containsKey( name );
+    }
+
+    /**
+     * @param project
+     * @param jelly
+     * @param systemId the system identifier to help resolve relative URLs
+     * @return JellyScriptHousing
+     * @throws Exception
+     * @deprecated get rid of this - it duplicates functionality in the housing
+     * @todo refactor into housing
+     * @todo don't throw Exception
+     * @todo get rid of this - it duplicates functionality in the housing
+     */
+    private JellyScriptHousing createJellyScriptHousing( Project project, String systemId, InputStream jelly )
+        throws Exception
+    {
+        JellyScriptHousing jellyScriptHousing = new JellyScriptHousing();
+
+        try
+        {
+            // Now lets compile the script once so we can use it repeatedly.
+            Script script = JellyUtils.compileScript( jelly, systemId, project.getContext() );
+
+            jellyScriptHousing.setProject( project );
+            jellyScriptHousing.setScript( script );
+        }
+        catch ( Exception e )
+        {
+            // FIXME: exception? Yuck!
+            throw new MavenException( "Error parsing driver.jelly", e );
+        }
+
+        return jellyScriptHousing;
+    }
+
+    /**
+     * @param project
+     * @param jelly
+     * @return JellyScriptHousing
+     * @todo [1.0] into the housing?
+     */
+    private JellyScriptHousing createJellyScriptHousing( Project project, File jelly )
+    {
+        JellyScriptHousing jellyScriptHousing = new JellyScriptHousing();
+
+        jellyScriptHousing.setProject( project );
+        jellyScriptHousing.setSource( jelly );
+
+        return jellyScriptHousing;
+    }
+
+    /**
+     * Process the dependencies of the project, adding dependencies to the
+     * appropriate classloader etc
+     *
+     * @throws MalformedURLException if a file can't be converted to a URL.
+     * @throws Exception             for any other issue. FIXME
+     */
+    public void processDependencies( Project project )
+        throws MalformedURLException, Exception
+    {
+        if ( project.getArtifacts() == null || project.getArtifacts().isEmpty() )
+        {
+            log.debug( "No dependencies to process for project " + project.getName() );
+            return;
+        }
+
+        ClassLoader cl = project.getContext().getClassLoader();
+        if ( !( cl instanceof ForeheadClassLoader ) )
+        {
+            return;
+        }
+
+        ForeheadClassLoader projectClassLoader = (ForeheadClassLoader) cl;
+        log.debug( "Processing dependencies for project " + project.getName() + "; classloader " + projectClassLoader );
+
+        // add the dependencies to the classpath
+        for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
+        {
+            Artifact artifact = (Artifact) i.next();
+            Dependency dependency = artifact.getDependency();
+            if ( dependency.isPlugin() )
+            {
+                // TODO: is this the best place to call this?
+                installPlugin( artifact.getFile(), project );
+            }
+
+            // get correct classloader
+            String dependencyClassLoader = dependency.getProperty( "classloader" );
+
+            // add to classloader
+            if ( artifact.exists() )
+            {
+                // Only add compile type dependencies to classloader
+                // what about ejbs etc
+                if ( dependency.isAddedToClasspath() )
+                {
+                    if ( dependencyClassLoader != null )
+                    {
+                        log.debug( "DEPRECATION: " + dependency.getId() + " in project " + project.getId()
+                            + " forces the classloader '" + dependencyClassLoader + "'" );
+                        log.debug( "             This behaviour is deprecated. Please refer to the FAQ" );
+                        ForeheadClassLoader loader = Forehead.getInstance().getClassLoader( dependencyClassLoader );
+                        if ( loader == null )
+                        {
+                            log.warn( "classloader '" + dependencyClassLoader
+                                + "' not found. Adding dependencies to the project classloader instead" );
+                            loader = projectClassLoader;
+                        }
+                        else
+                        {
+                            log.debug( "poking dependency " + artifact.getFile() + " into classloader "
+                                + dependencyClassLoader );
+                        }
+                        loader.addURL( artifact.getFile().toURL() );
+                    }
+                    else
+                    {
+                        log.debug( "adding dependency " + artifact.getFile() + " into project classloader" );
+                        projectClassLoader.addURL( artifact.getFile().toURL() );
+                    }
+                }
+                else
+                {
+                    log.debug( "Non classpath dependency: '" + artifact.getFile() + "' not added to classpath" );
+                }
+            }
+            else
+            {
+                log.info( "Artifact '" + artifact.getFile() + "' not found to add to classpath" );
+            }
+        }
+        // Explicity set the classloader used to find resources. As we just
+        // poked all the dependencies into the classloader.
+        project.getContext().setClassLoader( projectClassLoader );
+    }
+
+    List readMavenXml( Project project, GoalToJellyScriptHousingMapper mapper )
+        throws MavenException
+    {
+        Project p = project;
+        List projectHousings = new ArrayList();
+
+        // Project's Jelly script
+        while ( p != null )
+        {
+            if ( p.hasMavenXml() )
+            {
+                File mavenXml = p.getMavenXml();
+
+                JellyScriptHousing jellyScriptHousing = createJellyScriptHousing( project, mavenXml );
+                jellyScriptHousing.parse( mapper );
+                projectHousings.add( jellyScriptHousing );
+            }
+            p = p.getParent();
+        }
+        return projectHousings;
+    }
+
+    MavenJellyContext setupBaseContext( Project project )
+    {
+        MavenJellyContext prevBaseContext = baseContext;
+        baseContext = new MavenJellyContext( mavenSession.getRootContext() );
+        baseContext.setInherit( true );
+        JellyUtils.populateVariables( baseContext, project.getContext() );
+        project.pushContext( baseContext );
+        baseContext.setProject( project );
+
+        return prevBaseContext;
+    }
+
+    /**
+     * Attain the goals.
+     *
+     * @throws Exception If one of the specified
+     *                   goals refers to an non-existent goal.
+     * @throws Exception If an exception occurs while running a goal.
+     * @todo stop throwing Exception
+     */
+    public void attainGoals( Project project, List goals )
+        throws Exception
+    {
+        MavenJellyContext prevBaseContext = setupBaseContext( project );
+
+        // Set up the ant project.
+        AntProjectBuilder.build( project, baseContext );
+
+        // TODO: shouldn't this be a stack too? Then session attribute not needed
+        transientMapper = new GoalToJellyScriptHousingMapper();
+
+        // Create the Jelly session
+        Session session = new JellySession( baseContext.getXMLOutput() );
+        session.setAttribute( BASE_CONTEXT, baseContext );
+        session.setAttribute( PLUGIN_MANAGER, this );
+        session.setAttribute( GOAL_MAPPER, transientMapper );
+
+        // add the global session to the pluginContext so that it can be used by tags
+        baseContext.setVariable( GLOBAL_SESSION_KEY, session );
+
+        // Execution of the Jelly scripts:
+        //
+        // We run the Jelly scripts in the following order:
+        //
+        // 1) driver.jelly - should be removed
+        // 2) project's maven.xml
+        // 3) parent's maven.xml (if it exists)
+        // 4) plugin.jelly
+        //
+        // The Maven version of the <goal/> Werkz tag has been constructed so that the first
+        // definition of a goal wins.
+        //
+        // We run them in this order because we do not know before hand which plugin goals a project
+        // may wish to override so we guarantee precedence of the goals by running the jelly scripts
+        // in the above mentioned order.
+
+        // driver.jelly
+        InputStream driver = getClass().getResourceAsStream( "/driver.jelly" );
+        JellyScriptHousing driverHousing = createJellyScriptHousing( project, getClass().getResource( "/driver.jelly" )
+            .toString(), driver );
+        // TODO: stop reading all scripts 2 times
+        driver.close();
+        driver = getClass().getResourceAsStream( "/driver.jelly" );
+        driverHousing.parse( transientMapper, null, driver );
+        driver.close();
+
+        List projectHousings = readMavenXml( project, transientMapper );
+
+        if ( goals != null )
+        {
+            for ( Iterator i = goals.iterator(); i.hasNext(); )
+            {
+                String goal = (String) i.next();
+                if ( goal.trim().length() == 0 )
+                {
+                    i.remove();
+                }
+            }
+        }
+
+        // Default goal handling - if goals are null, don't even process the default
+        String defaultGoalName = transientMapper.getDefaultGoalName();
+
+        if ( project.getBuild() != null && project.getBuild().getDefaultGoal() != null )
+        {
+            defaultGoalName = project.getBuild().getDefaultGoal();
+        }
+
+        if ( defaultGoalName != null )
+        {
+            // By evaluating expression now it has the same scope as the POM.
+            Expression e = JellyUtils.decomposeExpression( defaultGoalName, baseContext );
+            defaultGoalName = e.evaluateAsString( baseContext );
+            baseContext.setVariable( MavenConstants.DEFAULT_GOAL, defaultGoalName );
+
+            if ( goals != null && goals.size() == 0 )
+            {
+                log.debug( "Using default goal: " + defaultGoalName );
+                goals.add( defaultGoalName );
+            }
+        }
+        if ( goals == null )
+        {
+            // So the reactor can process projects but not run any goals
+            goals = Collections.EMPTY_LIST;
+        }
+        else
+        {
+            // Always run build:start and build:end
+            goals.add( 0, "build:start" );
+            goals.add( "build:end" );
+        }
+
+        transientMapper.merge( mapper );
+
+        WerkzProject werkzProject = new WerkzProject();
+        baseContext.setWerkzProject( werkzProject );
+
+        Set pluginSet = new HashSet();
+        // poor mans stack - only pop when you finish the same frame that the plugin was lazily init in
+        Set oldDelayedPops = new HashSet( delayedPops );
+        delayedPops.clear();
+
+        Thread.currentThread().setContextClassLoader( null );
+
+        try
+        {
+            runScript( driverHousing, baseContext );
+            transientMapper.addResolvedPlugins( Collections.singletonList( driverHousing ) );
+
+            // Dependencies must be processed after the driver is run for compatibility
+            // FIXME: From attainGoals angle, how does it know the project needs to
+            //        to be verified, or that the project object hasn't been used before
+            project.verifyDependencies();
+            processDependencies( project );
+
+            for ( Iterator j = projectHousings.iterator(); j.hasNext(); )
+            {
+                JellyScriptHousing housing = (JellyScriptHousing) j.next();
+                runScript( housing, baseContext );
+            }
+            transientMapper.addResolvedPlugins( projectHousings );
+
+            // Plugin Jelly scripts
+            for ( Iterator i = goals.iterator(); i.hasNext(); )
+            {
+                String goalName = (String) i.next();
+
+                pluginSet.addAll( prepAttainGoal( goalName, baseContext, transientMapper ) );
+            }
+
+            // Plugin Jelly scripts
+            for ( Iterator i = goals.iterator(); i.hasNext(); )
+            {
+                String goalName = (String) i.next();
+                log.debug( "attaining goal " + goalName );
+                try
+                {
+                    Goal goal = werkzProject.getGoal( goalName );
+                    if ( goal == null || goal.getAction() == null )
+                    {
+                        throw new NoSuchGoalException( goalName );
+                    }
+                    goal.attain( session );
+                }
+                catch ( NoSuchGoalException e )
+                {
+                    throw new UnknownGoalException( goalName );
+                }
+            }
+        }
+        finally
+        {
+            cleanupAttainGoal( pluginSet );
+            delayedPops = oldDelayedPops;
+            reinstallPlugins( project.getContext() );
+            project.popContext();
+            baseContext = prevBaseContext;
+        }
+    }
+
+    /**
+     * @todo don't throw Exception
+     */
+    public void cleanupAttainGoal( Set pluginSet )
+        throws Exception
+    {
+        delayedPops.addAll( pluginSet );
+
+        for ( Iterator j = delayedPops.iterator(); j.hasNext(); )
+        {
+            JellyScriptHousing housing = (JellyScriptHousing) j.next();
+
+            reinstallPlugins( housing.getProject().getContext() );
+
+            housing.getProject().popContext();
+        }
+        delayedPops.clear();
+    }
+
+    /**
+     * Use the name of a goal to lookup all the plugins (that are stored in the plugin housings) that need to be
+     * executed in order to satisfy all the required preconditions for successful goal attainment.
+     *
+     * @param goalName    the goal
+     * @param baseContext the base context to attain in
+     * @return a set of plugins required to attain the goal
+     * @throws Exception
+     * @todo don't throw Exception
+     */
+    public Set prepAttainGoal( String goalName, MavenJellyContext baseContext, GoalToJellyScriptHousingMapper goalMapper )
+        throws Exception
+    {
+        Set pluginSet = goalMapper.resolveJellyScriptHousings( goalName );
+
+        for ( Iterator j = pluginSet.iterator(); j.hasNext(); )
+        {
+            JellyScriptHousing housing = (JellyScriptHousing) j.next();
+            initialiseHousingPluginContext( housing, baseContext );
+        }
+        return pluginSet;
+    }
+
+    private MavenJellyContext initialiseHousingPluginContext( JellyScriptHousing housing, MavenJellyContext baseContext )
+        throws Exception
+    {
+        Project project = housing.getProject();
+
+        // TODO: I think this should merge into pluginContext, but that seems to break existing jelly as it depends on
+        // that kind of warped scoping. Fix this in 1.1
+        MavenUtils.integrateMapInContext( housing.getPluginProperties(), baseContext );
+
+        /*
+         // Instead, we must go through each property and merge from previous plugin contexts, or the original property
+         // first integrate new ones
+         MavenUtils.integrateMapInContext( project.getContext().getVariables(), baseContext );
+         // now integrate properties that have a new value
+         Properties p = new Properties();
+         for ( Iterator i = housing.getPluginProperties().keySet().iterator(); i.hasNext(); )
+         {
+         String key = (String) i.next();
+         Object value = project.getContext().getVariable( key );
+         if ( value != null )
+         {
+         baseContext.setVariable( key, value );
+         }
+         else
+         {
+         p.setProperty( key, (String) housing.getPluginProperties().get( key ) );
+         }
+         }
+         MavenUtils.integrateMapInContext( p, baseContext );
+         // but leave alone anything in there that is not a plugin property, and already exists in baseContext
+         */
+        // TODO necessary to create a new one every time?
+        MavenJellyContext pluginContext = new MavenJellyContext( baseContext );
+        project.pushContext( pluginContext );
+        pluginContext.setInherit( true );
+        pluginContext.setVariable( "context", pluginContext );
+        pluginContext.setVariable( "plugin", project );
+        pluginContext.setVariable( "plugin.dir", housing.getPluginDirectory() );
+        pluginContext.setVariable( "plugin.resources", new File( housing.getPluginDirectory(), "plugin-resources" ) );
+
+        log.debug( "initialising plugin housing: " + project );
+        runScript( housing, pluginContext );
+
+        return pluginContext;
+    }
+
+    /**
+     * Sets the pluginsDir attribute of the PluginManager object
+     *
+     * @param dir The maven plugin directory.
+     */
+    private void setPluginsDir( File dir )
+    {
+        pluginsDir = dir;
+    }
+
+    /**
+     * Retrieve the directory containing all plugins.
+     *
+     * @return The directory containing all plugins.
+     */
+    private File getPluginsDir()
+    {
+        return pluginsDir;
+    }
+
+    /**
+     * Sets the directory where the users plugins are located.
+     *
+     * @param dir The directory where the users plugins are located.
+     */
+    private void setUserPluginsDir( File dir )
+    {
+        userPluginsDir = dir;
+    }
+
+    /**
+     * Gets the directory where the user plugins are located.
+     *
+     * @return the directory where the user plugins are located.
+     */
+    private File getUserPluginsDir()
+    {
+        return userPluginsDir;
+    }
+
+    /**
+     * Sets the directory where the unpacked plugins are located.
+     *
+     * @param dir The directory where the unpacked plugins are located.
+     */
+    private void setUnpackedPluginsDir( File dir )
+    {
+        unpackedPluginsDir = dir;
+    }
+
+    /**
+     * Sets the directory where the unpacked plugins are located.
+     *
+     * @return the directory where the unpacked plugins are located.
+     */
+    private File getUnpackedPluginsDir()
+    {
+        return unpackedPluginsDir;
+    }
+
+    /**
+     * @return Set
+     */
+    public Set getGoalNames()
+    {
+        return mapper.getGoalNames();
+    }
+
+    /**
+     * Warning - this completely scrogs the default mapper. Only use this before System.exit!
+     * (currently used by maven -u).
+     *
+     * @return Set
+     * @todo refactor to return mapper instead and use that, or perhaps instantiate a new plugin manager
+     */
+    public Set getGoalNames( Project project )
+        throws MavenException
+    {
+        mapper = new GoalToJellyScriptHousingMapper();
+        readMavenXml( project, mapper );
+        return mapper.getGoalNames();
+    }
+
+    /**
+     */
+    public void installPlugin( File file, Project parentProject )
+        throws MavenException
+    {
+        // By default, don't copy to the unpacked plugins directory - only use this dependency for this project
+        installPlugin( file, parentProject, false );
+    }
+
+    /**
+     * Load and install a plugin.
+     *
+     * @param file          the file to install. Must be a plugin jar
+     * @param parentProject the project to load the installed plugin into
+     */
+    public void installPlugin( File file, Project parentProject, boolean cache )
+        throws MavenException
+    {
+        log.debug( "Using plugin file: " + file );
+        try
+        {
+            String pluginName = file.getCanonicalFile().getName();
+            pluginName = pluginName.substring( 0, pluginName.indexOf( ".jar" ) );
+
+            if ( isLoaded( pluginName ) )
+            {
+                // already installed this version
+                return;
+            }
+
+            // expand it
+            File unpackedPluginDir = unpackPlugin( pluginName, file, cache );
+            if ( unpackedPluginDir != null )
+            {
+                JellyScriptHousing housing = createLazyPluginHousing( unpackedPluginDir );
+                if ( housing != null )
+                {
+                    String artifactId = housing.getProject().getArtifactId();
+                    if ( artifactIdToHousingMap.containsKey( artifactId ) )
+                    {
+                        // old version
+                        JellyScriptHousing oldHousing = (JellyScriptHousing) artifactIdToHousingMap.get( artifactId );
+                        log.debug( "Temporarily uninstalling: " + oldHousing );
+                        addPluginToReinstall( parentProject.getContext(), artifactId, oldHousing );
+                        pluginHousings.remove( oldHousing.getName() );
+                        mapper.invalidatePlugin( oldHousing );
+                        transientMapper.invalidatePlugin( oldHousing );
+                        artifactIdToHousingMap.remove( artifactId );
+                    }
+
+                    mapArtifactIdToPluginHousing( artifactId, housing );
+                }
+                else
+                {
+                    throw new MavenException( "Not a valid plugin file: " + file );
+                }
+
+                log.debug( "Installing plugin: " + housing );
+                // By default, not caching the plugin - its a per execution installation
+                housing.parse( transientMapper );
+                // Should only be putting in the transientMapper - but it is not consistent with isLoaded
+                housing.parse( mapper );
+                if ( cache )
+                {
+                    FileUtils.copyFileToDirectory( file, userPluginsDir );
+                    cacheManager.registerPlugin( pluginName, housing );
+                    housing.parse( cacheManager );
+                    cacheManager.saveCache( unpackedPluginsDir );
+                }
+            }
+            else
+            {
+                throw new MavenException( "Not a valid JAR file: " + file );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new MavenException( "Error installing plugin", e );
+        }
+    }
+
+    /**
+     * @todo can this be removed and simplified if transient mapper contains the plugin mapping only?
+     */
+    private void addPluginToReinstall( MavenJellyContext context, String artifactId, JellyScriptHousing housing )
+    {
+        Map m = (Map) context.getVariables().get( PLUGIN_TEMP_MAP );
+        if ( m == null )
+        {
+            m = new HashMap();
+            context.setVariable( PLUGIN_TEMP_MAP, m );
+        }
+        m.put( artifactId, housing );
+    }
+
+    /**
+     * @todo can this be removed and simplified if transient mapper contains the plugin mapping only?
+     */
+    private void reinstallPlugins( MavenJellyContext context )
+        throws MavenException
+    {
+        Map m = (Map) context.getVariables().get( PLUGIN_TEMP_MAP );
+        if ( m != null )
+        {
+            for ( Iterator i = m.keySet().iterator(); i.hasNext(); )
+            {
+                String artifactId = (String) i.next();
+                JellyScriptHousing housing = (JellyScriptHousing) m.get( artifactId );
+                pluginHousings.remove( housing.getName() );
+                mapper.invalidatePlugin( housing );
+                transientMapper.invalidatePlugin( housing );
+                housing = (JellyScriptHousing) m.get( artifactId );
+                log.debug( "Reinstalling: " + housing );
+                housing.parse( transientMapper );
+                housing.parse( mapper );
+            }
+        }
+    }
+
+    public void uninstallPlugin( String artifactId )
+        throws IOException
+    {
+        log.debug( "Uninstalling plugin: " + artifactId );
+
+        JellyScriptHousing housing = (JellyScriptHousing) artifactIdToHousingMap.get( artifactId );
+        if ( housing == null )
+        {
+            log.warn( "Plugin not found when attempting to uninstall '" + artifactId + "'" );
+            return;
+        }
+
+        String name = housing.getName();
+        pluginHousings.remove( name );
+        cacheManager.invalidateCache( name );
+        mapper.invalidatePlugin( housing );
+        transientMapper.invalidatePlugin( housing );
+        artifactIdToHousingMap.remove( artifactId );
+        cacheManager.saveCache( unpackedPluginsDir );
+    }
+
+    /**
+     * @param id
+     * @return MavenJellyContext
+     * @throws UnknownPluginException
+     * @todo [1.0] refactor out, or make more appropriate structure
+     * @todo remove throws Exception
+     */
+    public MavenJellyContext getPluginContext( String id )
+        throws MavenException, UnknownPluginException
+    {
+        JellyScriptHousing housing = (JellyScriptHousing) artifactIdToHousingMap.get( id );
+        if ( housing != null )
+        {
+            Project project = housing.getProject();
+            if ( baseContext.equals( project.getContext().getParent() ) )
+            {
+                log.debug( "Plugin context for " + id + " already initialised for this base context" );
+                return project.getContext();
+            }
+            else
+            {
+                log.debug( "Plugin context for " + id
+                    + " not initialised for this base context: initialising inside getPluginContext" );
+                try
+                {
+                    return initialiseHousingPluginContext( housing, baseContext );
+                }
+                catch ( Exception e )
+                {
+                    throw new MavenException( "Error initialising plugin context", e );
+                }
+            }
+        }
+        throw new UnknownPluginException( id );
+    }
+
+    public String getGoalDescription( String goalName )
+    {
+        return mapper.getGoalDescription( goalName );
+    }
+
+    public void addDelayedPops( Set set )
+    {
+        delayedPops.addAll( set );
+    }
+
+    /**
+     * Unpack the plugin.
+     *
+     * @throws MavenException if there was a problem unpacking
+     */
+    File unpackPlugin( String pluginName, File jarFile, boolean cache )
+        throws MavenException
+    {
+        File unzipDir = new File( unpackedPluginsDir, pluginName );
+
+        // if there's no directory, or the jar is newer, expand the jar
+        boolean exists = unzipDir.exists();
+        if ( !exists || ( jarFile.lastModified() > unzipDir.lastModified() ) )
+        {
+            if ( log.isDebugEnabled() )
+            {
+                log.debug( "Unpacking " + jarFile.getName() + " to directory --> " + unzipDir.getAbsolutePath() );
+            }
+
+            if ( cache )
+            {
+                cacheManager.invalidateCache( pluginName );
+            }
+
+            try
+            {
+                if ( exists )
+                {
+                    FileUtils.deleteDirectory( unzipDir );
+                }
+
+                Expand unzipper = new Expand();
+                unzipper.setSrc( jarFile );
+                unzipper.setDest( unzipDir );
+                unzipper.execute();
+            }
+            catch ( IOException e )
+            {
+                throw new MavenException( "Unable to extract plugin: " + jarFile, e );
+            }
+        }
+        return unzipDir;
+    }
+
+    /**
+     * @return Script
+     * @todo get rid of throws Exception
+     */
+    private Script loadScript( JellyScriptHousing jellyScriptHousing )
+        throws Exception
+    {
+        // TODO [1.0]: this currently duplicates createJellyScriptHousing for others - it is the lazy version
+
+        // We will add the plugin classes to the plugin class loader.
+        if ( jellyScriptHousing.getPluginDirectory() != null )
+        {
+            // not needed for maven.xml
+            // TODO: should differentiate between plugins and script housings better
+            jellyScriptHousing.getProject().verifyDependencies();
+            processDependencies( jellyScriptHousing.getProject() );
+            ClassLoader cl = jellyScriptHousing.getProject().getContext().getClassLoader();
+            if ( cl instanceof ForeheadClassLoader )
+            {
+                ForeheadClassLoader pluginClassLoader = (ForeheadClassLoader) cl;
+                pluginClassLoader.addURL( jellyScriptHousing.getPluginDirectory().toURL() );
+            }
+        }
+
+        MavenJellyContext context = jellyScriptHousing.getProject().getContext();
+        URL oldRoot = context.getRootURL();
+        URL oldCurrent = context.getCurrentURL();
+
+        context.setRootURL( jellyScriptHousing.getSource().toURL() );
+        context.setCurrentURL( jellyScriptHousing.getSource().toURL() );
+
+        try
+        {
+            if ( log.isDebugEnabled() )
+            {
+                log.debug( "Jelly script to parse : " + jellyScriptHousing.getSource().toURL() );
+            }
+            Script script = JellyUtils.compileScript( jellyScriptHousing.getSource(), context );
+
+            context.setRootURL( oldRoot );
+            context.setCurrentURL( oldCurrent );
+
+            return script;
+        }
+        catch ( Exception e )
+        {
+            // FIXME: exception? Yuck!
+            throw new MavenException( "Error parsing: " + jellyScriptHousing.getSource(), e );
+        }
+    }
+
+    /**
+     * @param context
+     * @throws Exception
+     * @todo get rid of throws Exception
+     */
+    void runScript( JellyScriptHousing jellyScriptHousing, MavenJellyContext context )
+        throws Exception
+    {
+        log.debug( "running script " + jellyScriptHousing.getSource() );
+
+        Script s = jellyScriptHousing.getScript();
+        if ( s == null )
+        {
+            s = loadScript( jellyScriptHousing );
+            jellyScriptHousing.setScript( s );
+        }
+        if ( context.getVariable( PLUGIN_HOUSING ) != null )
+        {
+            throw new IllegalStateException( "nested plugin housings" );
+        }
+        context.setVariable( PLUGIN_HOUSING, jellyScriptHousing );
+        s.run( context, context.getXMLOutput() );
+        context.removeVariable( PLUGIN_HOUSING );
+    }
+
+    public Project getPluginProjectFromGoal( String goal )
+        throws MavenException
+    {
+        JellyScriptHousing housing = mapper.getPluginHousing( goal );
+        return housing != null ? housing.getProject() : null;
+    }
+
+    public Collection getPluginList()
+    {
+        ArrayList list = new ArrayList();
+        for ( Iterator i = pluginHousings.values().iterator(); i.hasNext(); )
+        {
+            JellyScriptHousing housing = (JellyScriptHousing) i.next();
+            list.add( housing.getName() );
+        }
+        Collections.sort( list );
+        return list;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginScriptParser.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginScriptParser.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginScriptParser.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,236 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenException;
+import org.codehaus.plexus.util.StringUtils;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Class to parse plugin XML scripts to find goals and tag libraries.
+ *
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ */
+final class PluginScriptParser
+    extends DefaultHandler
+{
+    /** The plugin housing. */
+    private final JellyScriptHousing jellyScriptHousing;
+
+    /** The goal mapper. */
+    private final PluginDefinitionHandler handler;
+
+    /** Logging instance. */
+    private static final Log log = LogFactory.getLog( PluginScriptParser.class );
+
+    /** Storage of defined dynamic tag libraries. */
+    private final Set dynaTagLibDecls = new HashSet();
+
+    /**
+     * Constructor.
+     */
+    PluginScriptParser( PluginDefinitionHandler handler, JellyScriptHousing jellyScriptHousing )
+    {
+        this.handler = handler;
+        this.jellyScriptHousing = jellyScriptHousing;
+    }
+
+    /**
+     * We are looking for namespace declarations like the following:
+     *
+     * xmlns:doc="doc"
+     *
+     * Here we know that the given plugin.jelly script (or any jelly script used
+     * within Maven) has a dependency on the dyna tag lib named 'doc'. We need to
+     * make sure that this dyna tag lib is ready for use when the plugin.jelly
+     * script is run.
+     *
+     * @param prefix Prefix to be used in the jelly script.
+     * @param uri Uri of the dyna tag lib.
+     * @todo check this works for multiple plugin versions
+     */
+    public void startPrefixMapping( String prefix, String uri )
+    {
+        if ( !"".equals( prefix ) && !uri.startsWith( "jelly:" ) && !uri.startsWith( "dummy" ) && !"".equals( uri ) )
+        {
+            dynaTagLibDecls.add( uri );
+            handler.addPluginDynaTagDep( jellyScriptHousing, uri );
+
+            if ( log.isDebugEnabled() )
+            {
+                log.debug( "Caching Taglib Uri --> " + uri );
+            }
+        }
+    }
+
+    /**
+     * Handles opening elements of the xml file.
+     */
+    public void startElement( String uri, String localName, String rawName, Attributes attributes )
+    {
+        if ( "jelly:core".equals( uri ) && "import".equals( localName ) )
+        {
+            String importUri = attributes.getValue( "uri" );
+            if ( importUri == null )
+            {
+                importUri = attributes.getValue( "file" );
+            }
+            /*
+            if ( importUri != null )
+            {
+                // We -could- evaluate this as an expression, but the only thing set at this point is ${basedir}
+                // and some expressions will spit out exceptions (eg ${context.getVariable('blah')})
+                // TODO: maybe sub in basedir, plugin.resources and plugin.dir?
+            }
+            */
+
+            if ( importUri == null )
+            {
+                log.debug( rawName + " does not have a uri in " + jellyScriptHousing.getName() );
+            }
+            else
+            {
+                log.debug( rawName + " importing from uri " + importUri );
+                FileInputStream fis = null;
+                try
+                {
+                    File f = new File( importUri );
+                    fis = new FileInputStream( new File( importUri ) );
+                    jellyScriptHousing.parse( handler, f.getAbsolutePath(), fis );
+                }
+                catch ( MavenException e )
+                {
+                    log.warn( "Error parsing content from uri " + importUri, e );
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "Skipping: error reading from uri " + importUri );
+                }
+                finally
+                {
+                    if ( fis != null )
+                    {
+                        try
+                        {
+                            fis.close();
+                        }
+                        catch ( IOException e )
+                        {
+                            log.debug( "WARNING: Cannot close stream!", e );
+                        }
+                    }
+                }
+            }
+        }
+        if ( "project".equals( rawName ) )
+        {
+            String defaultGoal = attributes.getValue( "default" );
+
+            if ( defaultGoal != null )
+            {
+                log
+                    .warn( "DEPRECATED: the default goal should be specified in the <build> section of project.xml instead of maven.xml" );
+                handler.setDefaultGoalName( defaultGoal );
+            }
+        }
+        else if ( "goal".equals( rawName ) )
+        {
+            String name = StringUtils.deleteWhitespace( attributes.getValue( "name" ) );
+            String prereqs = attributes.getValue( "prereqs" );
+            String description = attributes.getValue( "description" );
+
+            handler.addGoal( name, prereqs, description, jellyScriptHousing );
+        }
+        else if ( "preGoal".equals( rawName ) )
+        {
+            String name = attributes.getValue( "name" );
+            handler.addPreGoal( name, jellyScriptHousing );
+        }
+        else if ( "postGoal".equals( rawName ) )
+        {
+            String name = attributes.getValue( "name" );
+            handler.addPostGoal( name, jellyScriptHousing );
+        }
+        /*
+        else if ( "attainGoal".equals( rawName ) )
+        {
+            // Use lazy version
+        }
+        */
+        else if ( "taglib".equals( localName ) && "jelly:define".equals( uri ) )
+        {
+            String tagLibUri = attributes.getValue( "uri" );
+
+            if ( dynaTagLibDecls.contains( tagLibUri ) )
+            {
+                handler.removePluginDynaTagDep( jellyScriptHousing, tagLibUri );
+            }
+            handler.addDynaTagLib( tagLibUri, jellyScriptHousing );
+        }
+    }
+
+    /**
+     * Warning callback.
+     *
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    public void warning( SAXParseException spe )
+    {
+        printParseError( "Warning", spe );
+    }
+
+    /**
+     * Error callback.
+     *
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    public void error( SAXParseException spe )
+    {
+        printParseError( "Error", spe );
+    }
+
+    /**
+     * Fatal error callback.
+     *
+     * @param spe The parse exception that caused the callback to be invoked.
+     */
+    public void fatalError( SAXParseException spe )
+    {
+        printParseError( "Fatal Error", spe );
+    }
+
+    /**
+     * Print parse error to Sytem.err
+     */
+    private void printParseError( String type, SAXParseException spe )
+    {
+        log
+            .error( type + " [line " + spe.getLineNumber() + ", row " + spe.getColumnNumber() + "]: "
+                + spe.getMessage() );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/PluginScriptParser.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/UnknownPluginException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/UnknownPluginException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/UnknownPluginException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,51 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.MavenException;
+
+/** Indicates an attempt to access an unknown plugin.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: UnknownPluginException.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class UnknownPluginException
+    extends MavenException
+{
+    /** Name of unknown plugin. */
+    private String id;
+
+    /** Construct with an unknown plugin name.
+     *
+     *  @param id the plugin ID
+     */
+    public UnknownPluginException( String id )
+    {
+        super( "Unknown plugin \"" + id + "\"" );
+        this.id = id;
+    }
+
+    /** Retrieve the unknown plugin name.
+     *
+     *  @return The name of the unknown plugin.
+     */
+    public String getPluginId()
+    {
+        return this.id;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/UnknownPluginException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/plugin/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,27 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.plugin</title>
+</head>
+<body>
+
+  <p>Code to cache and manage plugin execution.</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/project/Project.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/project/Project.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/project/Project.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,1517 @@
+package org.apache.maven.project;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.ArtifactListBuilder;
+import org.apache.maven.DependencyClasspathBuilder;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.UnknownPluginException;
+import org.apache.maven.project.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.project.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.verifier.ChecksumVerificationException;
+import org.apache.maven.verifier.DependencyVerifier;
+import org.apache.maven.verifier.RepoConfigException;
+import org.apache.maven.verifier.UnsatisfiedDependencyException;
+
+/**
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @author <a href="mailto:glennm at apache.org">Glenn McAllister</a>
+ * @version $Id: Project.java 424461 2006-07-21 21:44:46Z aheritier $
+ * @todo Change the file reference for the source POM to an URL.
+ */
+public class Project
+{
+    /**
+     * Distributions map that associates the distribution ids
+     * with the distribution objects.
+     */
+    private HashMap versionMap;
+
+    /**
+     * Parent project.
+     */
+    private Project parent;
+
+    /**
+     * File that this POM object was derived from.
+     */
+    private File file;
+
+    /**
+     * Map of dependency ids to their real paths in the system.
+     */
+    private Map dependencyPaths = new HashMap();
+
+    /**
+     * Dependencies Map so that an individual dependency can
+     * be retrieved by id.
+     */
+    private Map dependencyMap = new HashMap();
+
+    /**
+     * Artifact list.
+     */
+    private List artifactList;
+
+    /**
+     * This project's Jelly context.
+     */
+    private MavenJellyContext context;
+
+    /**
+     * TODO: use commons-collections.
+     */
+    private List contextStack = new ArrayList();
+
+    /**
+     * log for debug and output
+     */
+    private static final Log log = LogFactory.getLog( Project.class );
+
+    /**
+     * the maven.xml file for this project
+     */
+    private File mavenXml;
+
+    private final Model model;
+
+    private String originalGroupId;
+
+    /**
+     * Default constructor.
+     */
+    public Project()
+    {
+        model = new Model();
+    }
+
+    /**
+     * Constructor with prebuilt model.
+     *
+     * @param in the input reader
+     * @throws Exception an error occured reading the file
+     * @todo should not have to throw Exception
+     */
+    public Project( Reader in )
+        throws Exception
+    {
+        MavenXpp3Reader reader = new MavenXpp3Reader();
+        model = reader.read( in );
+        resolveDependencies();
+        resolveVersions();
+    }
+
+    /**
+     * @return the maven.xml file
+     */
+    public File getMavenXml()
+    {
+        // The getFile() is needed because interpolation calls this before the file is set
+        if ( mavenXml == null && getFile() != null )
+        {
+            mavenXml = new File( getFile().getParentFile(), MavenConstants.BUILD_FILE_NAME );
+        }
+        return mavenXml;
+    }
+
+    /**
+     * @return true if the maven.xml file for the project exists
+     */
+    public boolean hasMavenXml()
+    {
+        File mavenXml = getMavenXml();
+        if ( mavenXml != null )
+        {
+            return mavenXml.exists();
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+    // ----------------------------------------------------------------------
+    // A C C E S S O R S
+    // ----------------------------------------------------------------------
+
+    // trying to align dep.id with project.id
+    /**
+     * @return the id of the project
+     */
+    public String getId()
+    {
+        // The id has already been set.
+        if ( model.getId() != null && model.getId().indexOf( ":" ) > 0 )
+        {
+            return model.getId();
+        }
+        return getGroupId() + ":" + getArtifactId();
+    }
+
+    public void setId( String id )
+    {
+        int i = id.indexOf( "+" );
+        int j = id.indexOf( ":" );
+
+        if ( i > 0 )
+        {
+            setGroupId( id.substring( 0, i ) );
+            setArtifactId( id.replace( '+', '-' ) );
+        }
+        else if ( j > 0 )
+        {
+            setGroupId( id.substring( 0, j ) );
+            setArtifactId( id.substring( j + 1 ) );
+        }
+        else
+        {
+            setGroupId( id );
+            setArtifactId( id );
+        }
+    }
+
+    /**
+     * Get the artifact id.
+     *
+     * @return The artifactId
+     */
+    public String getArtifactId()
+    {
+        return model.getArtifactId();
+    }
+
+    /**
+     * Get the plugin context using the plugin name.
+     *
+     * @param pluginId Plugin name.
+     * @return The plugin context create for the named plugin when it was loaded for
+     *         this project.
+     * @throws UnknownPluginException if the plugin could not be found
+     * @todo [1.0] - when we are caching plugins, this should load on demand, also move to plugin manager
+     * @deprecated use the tag instead
+     */
+    public MavenJellyContext getPluginContext( String pluginId )
+        throws Exception
+    {
+        PluginManager pluginManager = context.getMavenSession().getPluginManager();
+        return pluginManager.getPluginContext( pluginId );
+    }
+
+    /**
+     * Set the context attribute.
+     *
+     * @param context the context to use
+     */
+    public void setContext( MavenJellyContext context )
+    {
+        if ( contextStack.size() > 0 )
+        {
+            log.warn( "replacing a context when the stack is not empty" );
+        }
+        this.context = context;
+    }
+
+    /**
+     * Push a new context onto the stack.
+     *
+     * @param context
+     */
+    public void pushContext( MavenJellyContext context )
+    {
+        log.debug( "pushing on " + context + " over " + this.context + " in " + getId() );
+        contextStack.add( this.context );
+        this.context = context;
+    }
+
+    public void popContext()
+    {
+        MavenJellyContext context = (MavenJellyContext) contextStack.get( contextStack.size() - 1 );
+        contextStack.remove( contextStack.size() - 1 );
+        log.debug( "popping off " + this.context + " for " + context + " in " + getId() );
+        this.context = context;
+    }
+
+    /**
+     * Get the context attribute.
+     *
+     * @return The
+     */
+    public MavenJellyContext getContext()
+    {
+        return context;
+    }
+
+    /**
+     * Set the artifactList attribute.
+     *
+     * @param artifactList list of artifacts for the project
+     */
+    public void setArtifacts( List artifactList )
+    {
+        this.artifactList = artifactList;
+    }
+
+    /**
+     * Get the atrifact attribute.
+     *
+     * @return The list of artifacts for the project
+     */
+    public List getArtifacts()
+    {
+        return artifactList;
+    }
+
+    /**
+     * Set the file that this POM was derived from.
+     *
+     * @param file POM file
+     */
+    public void setFile( File file )
+    {
+        this.file = file;
+    }
+
+    /**
+     * Get the file this POM was derived from
+     *
+     * @return POM file
+     */
+    public File getFile()
+    {
+        return file;
+    }
+
+    /**
+     * @return the project that this one extends, if any
+     */
+    public Project getParent()
+    {
+        return parent;
+    }
+
+    /**
+     * Determine whether this project has a parent.
+     *
+     * @return State of ancestry.
+     */
+    public boolean hasParent()
+    {
+        return getParent() != null;
+    }
+
+    /**
+     * Set the project that this one extends
+     *
+     * @param parent the parent project
+     */
+    public void setParent( Project parent )
+    {
+        this.parent = parent;
+    }
+
+    /**
+     * Get the parent's basedir.
+     *
+     * @return Parent's basedir.
+     */
+    public File parentBasedir()
+    {
+        return new File( getExtend() ).getParentFile();
+    }
+
+    /**
+     * Get parent maven.xml file.
+     *
+     * @return Parent's maven.xml file.
+     */
+    public File parentMavenXml()
+    {
+        return new File( parentBasedir(), MavenConstants.BUILD_FILE_NAME );
+    }
+
+    /**
+     * @return the directory name for this proejct's artifacts
+     */
+    public String getArtifactDirectory()
+    {
+        if ( getGroupId() != null )
+        {
+            return getGroupId();
+        }
+
+        // Now we want the artifact directory to be the legacy form
+        // of the id which contains no ":" character so lets flip
+        // it back to legacy form.
+        return standardToLegacyId( getId() );
+    }
+
+    /**
+     * Add a unique dependency for this project.
+     *
+     * @param dependency Dependency for this project.
+     */
+    public void addDependency( Dependency dependency )
+    {
+        if ( !getDependencies().contains( dependency ) )
+        {
+            model.addDependency( dependency );
+            dependencyMap.put( dependency.getKey(), dependency );
+        }
+    }
+
+    /**
+     * @param srcList    source list to add items from
+     * @param targetList target list to add unique items to
+     * @todo eventually, just use sets instead.
+     */
+    static void mergeLists( List srcList, List targetList )
+    {
+        if ( srcList != null )
+        {
+            for ( Iterator i = srcList.iterator(); i.hasNext(); )
+            {
+                Object o = i.next();
+                if ( !targetList.contains( o ) )
+                {
+                    targetList.add( o );
+                }
+            }
+        }
+    }
+
+    /**
+     * @param dependencies parent dependencies
+     * @todo eventually, just use the map
+     */
+    private void addParentDependencies( List dependencies )
+    {
+        for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+        {
+            addDependency( (Dependency) i.next() );
+        }
+    }
+
+    /**
+     * Get the list of dependent projects ids.
+     *
+     * @return the set of all dependencies' project ids
+     */
+    public Set getDependentProjectIds()
+    {
+        Set projectIds = new TreeSet();
+        List dependencies = getDependencies();
+        Dependency dependency;
+        for ( int i = 0; i < dependencies.size(); i++ )
+        {
+            dependency = (Dependency) dependencies.get( i );
+            projectIds.add( dependency.getId() );
+        }
+        return projectIds;
+    }
+
+    /**
+     * Set an individual dependency's classpath entry.
+     *
+     * @param depId Dependency id.
+     * @param path  Classpath for the given dependency.
+     */
+    public void setDependencyPath( String depId, String path )
+    {
+        dependencyPaths.put( depId, path );
+    }
+
+    /**
+     * Get an individual dependencies classpath entry.
+     *
+     * @param depId Dependency id.
+     * @return Classpath for the given dependency.
+     */
+    public String getDependencyPath( String depId )
+    {
+        return (String) dependencyPaths.get( legacyToDependencyKey( depId ) );
+    }
+
+    /**
+     * Get an individual dependency by id.
+     *
+     * @param depId Dependency id.
+     * @return Dependency for the given id.
+     */
+    public Dependency getDependency( String depId )
+    {
+        return (Dependency) dependencyMap.get( legacyToDependencyKey( depId ) );
+    }
+
+    /**
+     * Get flag to indicate the presence of a source repository.
+     *
+     * @return <code>true</code> if the project is part of a repository,
+     *         <code>false</code> otherwise
+     */
+    public boolean hasRepository()
+    {
+        return ( getRepository() != null );
+    }
+
+    /**
+     * Indicate whether the POM is of the latest version.
+     *
+     * @return <code>true</code> if the pom version is the same as the
+     *         currently running version of maven specified by {@link MavenConstants},
+     *         or <code>false</code> otherwise
+     */
+    public boolean isPomCurrent()
+    {
+        return Integer.parseInt( getPomVersion() ) == MavenConstants.POM_VERSION;
+    }
+
+    /**
+     * Return a distribution for this project.
+     *
+     * @param versionId the id of the version to return
+     * @return List of distributions.
+     */
+    public Version getVersionById( String versionId )
+    {
+        return (Version) versionMap.get( versionId );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    /**
+     * Flag to indicate the project has been verified.
+     */
+    private boolean initialized = false;
+
+    /**
+     * Dependency Verifier
+     */
+    private DependencyVerifier dependencyVerifier;
+
+    /**
+     * Dependency classpath used for compilation.
+     */
+    private String dependencyClasspath;
+
+    /**
+     * Initialize the project. This consists of the following stages.
+     * <p/>
+     * 1) Build the Ant project that can be used within plugin.jelly scripts and
+     * other Jelly scripts.
+     * <p/>
+     * 2) Build the artifact list.
+     * <p/>
+     * 3) Build the dependency classpath.
+     * <p/>
+     * 4) Create the dependency verifier.
+     * <p/>
+     * 5) Initialize the driver for this project.
+     *
+     * @throws IOException If an error occurs during project initialization.
+     */
+    public void initialize()
+        throws IOException
+    {
+        if ( initialized )
+        {
+            return;
+        }
+
+        buildArtifactList();
+        dependencyClasspath = DependencyClasspathBuilder.build( this );
+        setDependencyVerifier( new DependencyVerifier( this ) );
+        if ( getBuild() != null )
+        {
+            resolveDirectories( getBuild(), file.getParentFile() );
+        }
+        initialized = true;
+    }
+
+    /**
+     * Verify the dependencies for this project.
+     *
+     * @throws RepoConfigException            If an error occurs checking the local settings.
+     * @throws UnsatisfiedDependencyException If an error occurs due to missing exceptions.
+     * @throws ChecksumVerificationException  if the downloaded files fail verification
+     */
+    public void verifyDependencies()
+        throws RepoConfigException, UnsatisfiedDependencyException, ChecksumVerificationException
+    {
+        log.debug( "Verifying dependencies for " + getId() );
+
+        // Only attempt to verify the dependencies if a project.xml file exists, and it is fully-fledged (not an uninitialized parent project).
+        if ( getFile() != null && getFile().exists() && initialized )
+        {
+            getDependencyVerifier().verify();
+        }
+    }
+
+    /**
+     * Set the dependency verifier.
+     *
+     * @param dependencyVerifier Dependency Verifier.
+     */
+    public void setDependencyVerifier( DependencyVerifier dependencyVerifier )
+    {
+        this.dependencyVerifier = dependencyVerifier;
+    }
+
+    /**
+     * Get the dependency verifier for this project. We can probably share a
+     * dependency verifier.
+     *
+     * @return The DependencyVerifier for this project.
+     */
+    public DependencyVerifier getDependencyVerifier()
+    {
+        return dependencyVerifier;
+    }
+
+    /**
+     * Get the dependency classpath.
+     *
+     * @return The dependency classpath.
+     */
+    public String getDependencyClasspath()
+    {
+        return dependencyClasspath;
+    }
+
+    /**
+     * Build the artifact list.
+     */
+    public void buildArtifactList()
+    {
+        artifactList = ArtifactListBuilder.build( this );
+    }
+
+    // ----------------------------------------------------------------------
+    // L E G A C Y  I D  S U P P O R T
+    // ----------------------------------------------------------------------
+
+    /**
+     * This is to support methods that are using the legacy form of
+     * the project id. Currently the id is <groupId>:<artifactId> but the
+     * following methods assume <groupId>:
+     * <p/>
+     * Project::getDependencyPath( <groupId> )
+     * Project::getDependency( <groupId> )
+     * <p/>
+     * We don't want users to have to alter any usage until we have properly
+     * deprecated the use of the <groupId> form.
+     *
+     * @param id the legacy id to convert
+     * @return the id in standard format
+     */
+    public static String legacyToStandardId( String id )
+    {
+        String newId = id;
+        if ( id.indexOf( "+" ) != -1 )
+        {
+            // legacy format is groupId "+" partial artifactId
+            // standard format is groupId ":" groupId "-" partialArtifactId
+            int plusPos = id.indexOf( "+" );
+            String groupId = id.substring( 0, plusPos );
+            String partialArtifactId = id.substring( plusPos + 1 );
+            newId = groupId + ":" + groupId + "-" + partialArtifactId;
+        }
+        else if ( id.indexOf( ":" ) == -1 )
+        {
+            // if no :, set groupId as artifactId
+            newId += ":" + id;
+        }
+        return newId;
+    }
+
+    public String legacyToDependencyKey( String id )
+    {
+        String newId = legacyToStandardId( id );
+        int sepIndex = newId.indexOf( ':' );
+
+        // check for type
+        sepIndex = newId.indexOf( ':', sepIndex + 1 );
+        if ( sepIndex < 0 )
+        {
+            for ( Iterator i = dependencyMap.keySet().iterator(); i.hasNext(); )
+            {
+                String depId = (String) i.next();
+                if ( depId.equals( newId ) )
+                {
+                    return depId;
+                }
+                if ( depId.startsWith( newId + ":" ) )
+                {
+                    return depId;
+                }
+            }
+            newId += ":jar";
+        }
+        return newId;
+    }
+
+    /**
+     * This method is to support methods are expecting legacy ids. The following
+     * methods expect legacy ids.
+     * <p/>
+     * MavenJellyContext::getMavenJarOverride( <groupId> )
+     * Project::getArtifactDirectory( <groupId> )
+     * <p/>
+     * We don't want users to have to alter any usage until we have properly
+     * deprecated the use of the <groupId> form.
+     *
+     * @param id the standard id to convert
+     * @return the id in legacy format
+     */
+    public static String standardToLegacyId( String id )
+    {
+        int i = id.indexOf( ":" );
+
+        if ( i > 0 )
+        {
+            id = id.substring( i + 1 );
+        }
+
+        return id;
+    }
+
+    /**
+     * Setup inheritance from a parent project.
+     *
+     * @param parent the parent project
+     */
+    public void mergeParent( Project parent )
+    {
+        setParent( parent );
+
+        if ( parent == null )
+        {
+            return;
+        }
+
+        if ( getRepository() == null )
+        {
+            setRepository( parent.getRepository() );
+        }
+
+        if ( getName() == null )
+        {
+            setName( parent.getName() );
+        }
+
+        if ( getUrl() == null )
+        {
+            setUrl( parent.getUrl() );
+        }
+
+        if ( getLogo() == null )
+        {
+            setLogo( parent.getLogo() );
+        }
+
+        if ( getDescription() == null )
+        {
+            setDescription( parent.getDescription() );
+        }
+
+        if ( getIssueTrackingUrl() == null )
+        {
+            setIssueTrackingUrl( parent.getIssueTrackingUrl() );
+        }
+
+        if ( getCurrentVersion() == null )
+        {
+            setCurrentVersion( parent.getCurrentVersion() );
+        }
+
+        if ( getOrganization() == null )
+        {
+            setOrganization( parent.getOrganization() );
+        }
+
+        if ( getInceptionYear() == null )
+        {
+            setInceptionYear( parent.getInceptionYear() );
+        }
+
+        if ( getPackage() == null )
+        {
+            setPackage( parent.getPackage() );
+        }
+
+        if ( getSiteAddress() == null )
+        {
+            setSiteAddress( parent.getSiteAddress() );
+        }
+
+        if ( getSiteDirectory() == null )
+        {
+            setSiteDirectory( parent.getSiteDirectory() );
+        }
+
+        if ( getDistributionSite() == null )
+        {
+            setDistributionSite( parent.getDistributionSite() );
+        }
+
+        if ( getDistributionDirectory() == null )
+        {
+            setDistributionDirectory( parent.getDistributionDirectory() );
+        }
+
+        if ( getPomVersion() == null )
+        {
+            setPomVersion( parent.getPomVersion() );
+        }
+
+        if ( getGumpRepositoryId() == null )
+        {
+            setGumpRepositoryId( parent.getGumpRepositoryId() );
+        }
+
+        if ( getShortDescription() == null )
+        {
+            setShortDescription( parent.getShortDescription() );
+        }
+
+        if ( model.getGroupId() == null )
+        {
+            // Don't inherit if it was from an id element
+            if ( parent.originalGroupId != null || model.getId() == null )
+            {
+                model.setGroupId( parent.model.getGroupId() );
+            }
+        }
+
+        if ( getBuild() == null )
+        {
+            // Must copy as resolveDirs changes entries
+            setBuild( new Build() );
+            mergeParent( parent.getBuild(), getBuild() );
+        }
+        else
+        {
+            mergeParent( parent.getBuild(), getBuild() );
+        }
+
+        // The following replaces the list merges
+        if ( getMailingLists() == null || getMailingLists().isEmpty() )
+        {
+            setMailingLists( parent.getMailingLists() );
+        }
+        if ( getContributors() == null || getContributors().isEmpty() )
+        {
+            setContributors( parent.getContributors() );
+        }
+        if ( getDevelopers() == null || getDevelopers().isEmpty() )
+        {
+            setDevelopers( parent.getDevelopers() );
+        }
+        if ( getVersions() == null || getVersions().isEmpty() )
+        {
+            model.setVersions( parent.getVersions() );
+            resolveVersions();
+        }
+        if ( getLicenses() == null || getLicenses().isEmpty() )
+        {
+            setLicenses( parent.getLicenses() );
+        }
+        if ( getBranches() == null || getBranches().isEmpty() )
+        {
+            setBranches( parent.getBranches() );
+        }
+        if ( getReports() == null || getReports().isEmpty() )
+        {
+            setReports( parent.getReports() );
+        }
+        if ( getPackageGroups() == null || getPackageGroups().isEmpty() )
+        {
+            setPackageGroups( parent.getPackageGroups() );
+        }
+
+        //mergeLists( parent.mailingLists, mailingLists );
+        //mergeLists( parent.contributors, contributors );
+        //mergeLists( parent.developers, developers );
+        //mergeLists( parent.licenses, licenses );
+        //mergeLists( parent.branches, branches );
+        //mergeLists( parent.reports, reports );
+        //mergeLists( parent.packageGroups, packageGroups );
+
+        // Now let's do some magic with versions and dependencies as they have maps.
+        // We take all the parent's and put them in with the child's.
+        //addParentVersions( parent.versions );
+        addParentDependencies( parent.getDependencies() );
+    }
+
+    /**
+     * Resolve relative directories against a base directory.
+     *
+     * @param build
+     * @param basedir the base directory
+     * @throws java.io.IOException file resolution error
+     */
+    private static void resolveDirectories( Build build, File basedir )
+        throws IOException
+    {
+        for ( Iterator i = build.getResources().iterator(); i.hasNext(); )
+        {
+            Resource r = (Resource) i.next();
+            resolveDirectory( r, basedir );
+        }
+
+        if ( build.getUnitTest() != null )
+        {
+            for ( Iterator i = build.getUnitTest().getResources().iterator(); i.hasNext(); )
+            {
+                Resource r = (Resource) i.next();
+                resolveDirectory( r, basedir );
+            }
+        }
+
+        if ( build.getSourceDirectory() != null && build.getSourceDirectory().length() > 0 )
+        {
+            build.setSourceDirectory( MavenUtils.makeAbsolutePath( basedir, build.getSourceDirectory() ) );
+        }
+
+        if ( build.getAspectSourceDirectory() != null && build.getAspectSourceDirectory().length() > 0 )
+        {
+            build.setAspectSourceDirectory( MavenUtils.makeAbsolutePath( basedir, build.getAspectSourceDirectory() ) );
+        }
+
+        if ( build.getUnitTestSourceDirectory() != null && build.getUnitTestSourceDirectory().length() > 0 )
+        {
+            build
+                .setUnitTestSourceDirectory( MavenUtils.makeAbsolutePath( basedir, build.getUnitTestSourceDirectory() ) );
+        }
+
+        if ( build.getIntegrationUnitTestSourceDirectory() != null
+            && build.getIntegrationUnitTestSourceDirectory().length() > 0 )
+        {
+            build.setIntegrationUnitTestSourceDirectory( MavenUtils.makeAbsolutePath( basedir, build
+                .getIntegrationUnitTestSourceDirectory() ) );
+        }
+    }
+
+    /**
+     * Setup inheritance from a parent project build element.
+     *
+     * @param parent the parent build element
+     * @param child
+     */
+    private static void mergeParent( Build parent, Build child )
+    {
+        if ( parent == null )
+        {
+            return;
+        }
+
+        if ( child.getDefaultGoal() == null )
+        {
+            child.setDefaultGoal( parent.getDefaultGoal() );
+        }
+
+        if ( child.getSourceDirectory() == null )
+        {
+            child.setSourceDirectory( parent.getSourceDirectory() );
+        }
+
+        if ( child.getUnitTestSourceDirectory() == null )
+        {
+            child.setUnitTestSourceDirectory( parent.getUnitTestSourceDirectory() );
+        }
+
+        if ( child.getIntegrationUnitTestSourceDirectory() == null )
+        {
+            child.setIntegrationUnitTestSourceDirectory( parent.getIntegrationUnitTestSourceDirectory() );
+        }
+
+        if ( child.getAspectSourceDirectory() == null )
+        {
+            child.setAspectSourceDirectory( parent.getAspectSourceDirectory() );
+        }
+
+        if ( child.getNagEmailAddress() == null )
+        {
+            child.setNagEmailAddress( parent.getNagEmailAddress() );
+        }
+
+        if ( child.getResources() == null || child.getResources().isEmpty() )
+        {
+            child.setResources( parent.getResources() );
+        }
+        if ( child.getSourceModifications() == null || child.getSourceModifications().isEmpty() )
+        {
+            child.setSourceModifications( parent.getSourceModifications() );
+        }
+
+        if ( child.getUnitTest() == null )
+        {
+            child.setUnitTest( parent.getUnitTest() );
+        }
+        else
+        {
+            mergeUnitTestParent( parent.getUnitTest(), child.getUnitTest() );
+        }
+    }
+
+    private static void mergeUnitTestParent( UnitTest parent, UnitTest child )
+    {
+        if ( parent == null )
+        {
+            return;
+        }
+
+        // The following replaces the list merges
+        if ( child.getResources() == null || child.getResources().isEmpty() )
+        {
+            child.setResources( parent.getResources() );
+        }
+        if ( child.getIncludes() == null || child.getIncludes().isEmpty() )
+        {
+            child.setIncludes( parent.getIncludes() );
+        }
+        if ( child.getExcludes() == null || child.getExcludes().isEmpty() )
+        {
+            child.setExcludes( parent.getExcludes() );
+        }
+    }
+
+    private static void resolveDirectory( Resource resource, File basedir )
+        throws IOException
+    {
+        if ( resource.getDirectory() != null )
+        {
+            resource.setDirectory( MavenUtils.makeAbsolutePath( basedir, resource.getDirectory() ) );
+        }
+        else
+        {
+            resource.setDirectory( basedir.getCanonicalPath() );
+        }
+    }
+
+    public void addBranch( Branch branch )
+    {
+        model.addBranch( branch );
+    }
+
+    public void addContributor( Contributor contributor )
+    {
+        model.addContributor( contributor );
+    }
+
+    public void addDeveloper( Developer developer )
+    {
+        model.addDeveloper( developer );
+    }
+
+    public void addLicense( License license )
+    {
+        model.addLicense( license );
+    }
+
+    public void addMailingList( MailingList mailingList )
+    {
+        model.addMailingList( mailingList );
+    }
+
+    public void addPackageGroup( PackageGroup packageGroup )
+    {
+        model.addPackageGroup( packageGroup );
+    }
+
+    public void addProperty( String s, String s1 )
+    {
+        model.addProperty( s, s1 );
+    }
+
+    public void addReport( String s )
+    {
+        model.addReport( s );
+    }
+
+    public List getBranches()
+    {
+        return model.getBranches();
+    }
+
+    public Build getBuild()
+    {
+        return model.getBuild();
+    }
+
+    public List getContributors()
+    {
+        return model.getContributors();
+    }
+
+    public String getCurrentVersion()
+    {
+        return model.getCurrentVersion();
+    }
+
+    public List getDependencies()
+    {
+        return model.getDependencies();
+    }
+
+    public String getDescription()
+    {
+        return model.getDescription();
+    }
+
+    public List getDevelopers()
+    {
+        return model.getDevelopers();
+    }
+
+    public String getDistributionDirectory()
+    {
+        return model.getDistributionDirectory();
+    }
+
+    public String getDistributionSite()
+    {
+        return model.getDistributionSite();
+    }
+
+    public String getExtend()
+    {
+        return model.getExtend();
+    }
+
+    public String getGroupId()
+    {
+        return model.getGroupId();
+    }
+
+    public String getGumpRepositoryId()
+    {
+        return model.getGumpRepositoryId();
+    }
+
+    public String getInceptionYear()
+    {
+        return model.getInceptionYear();
+    }
+
+    public String getIssueTrackingUrl()
+    {
+        return model.getIssueTrackingUrl();
+    }
+
+    public List getLicenses()
+    {
+        return model.getLicenses();
+    }
+
+    public String getLogo()
+    {
+        return model.getLogo();
+    }
+
+    public List getMailingLists()
+    {
+        return model.getMailingLists();
+    }
+
+    public String getName()
+    {
+        return model.getName();
+    }
+
+    public Organization getOrganization()
+    {
+        return model.getOrganization();
+    }
+
+    public String getPackage()
+    {
+        return model.getPackage();
+    }
+
+    public List getPackageGroups()
+    {
+        return model.getPackageGroups();
+    }
+
+    public String getPomVersion()
+    {
+        return model.getPomVersion();
+    }
+
+    public Properties getProperties()
+    {
+        return model.getProperties();
+    }
+
+    public List getReports()
+    {
+        return model.getReports();
+    }
+
+    public Repository getRepository()
+    {
+        return model.getRepository();
+    }
+
+    public String getShortDescription()
+    {
+        return model.getShortDescription();
+    }
+
+    public String getSiteAddress()
+    {
+        return model.getSiteAddress();
+    }
+
+    public String getSiteDirectory()
+    {
+        return model.getSiteDirectory();
+    }
+
+    public String getUrl()
+    {
+        return model.getUrl();
+    }
+
+    public List getVersions()
+    {
+        return model.getVersions();
+    }
+
+    public void setVersions( List list )
+    {
+        model.setVersions( list );
+        resolveVersions();
+    }
+
+    public void setArtifactId( String s )
+    {
+        model.setArtifactId( s );
+    }
+
+    public void setBranches( List list )
+    {
+        model.setBranches( list );
+    }
+
+    public void setBuild( Build build )
+    {
+        model.setBuild( build );
+    }
+
+    public void setContributors( List list )
+    {
+        model.setContributors( list );
+    }
+
+    public void setCurrentVersion( String s )
+    {
+        model.setCurrentVersion( s );
+    }
+
+    public void setDependencies( List list )
+    {
+        model.setDependencies( list );
+        dependencyMap.clear();
+        resolveDependencies();
+    }
+
+    public void setDescription( String s )
+    {
+        model.setDescription( s );
+    }
+
+    public void setDevelopers( List list )
+    {
+        model.setDevelopers( list );
+    }
+
+    public void setDistributionDirectory( String s )
+    {
+        model.setDistributionDirectory( s );
+    }
+
+    public void setDistributionSite( String s )
+    {
+        model.setDistributionSite( s );
+    }
+
+    public void setExtend( String s )
+    {
+        model.setExtend( s );
+    }
+
+    public void setGroupId( String s )
+    {
+        model.setGroupId( s );
+    }
+
+    public void setGumpRepositoryId( String s )
+    {
+        model.setGumpRepositoryId( s );
+    }
+
+    public void setInceptionYear( String s )
+    {
+        model.setInceptionYear( s );
+    }
+
+    public void setIssueTrackingUrl( String s )
+    {
+        model.setIssueTrackingUrl( s );
+    }
+
+    public void setLicenses( List list )
+    {
+        model.setLicenses( list );
+    }
+
+    public void setLogo( String s )
+    {
+        model.setLogo( s );
+    }
+
+    public void setMailingLists( List list )
+    {
+        model.setMailingLists( list );
+    }
+
+    public void setName( String s )
+    {
+        model.setName( s );
+    }
+
+    public void setOrganization( Organization organization )
+    {
+        model.setOrganization( organization );
+    }
+
+    public void setPackage( String s )
+    {
+        model.setPackage( s );
+    }
+
+    public void setPackageGroups( List list )
+    {
+        model.setPackageGroups( list );
+    }
+
+    public void setPomVersion( String s )
+    {
+        model.setPomVersion( s );
+    }
+
+    public void setProperties( Properties properties )
+    {
+        model.setProperties( properties );
+    }
+
+    public void setReports( List list )
+    {
+        model.setReports( list );
+    }
+
+    public void setRepository( Repository repository )
+    {
+        model.setRepository( repository );
+    }
+
+    public void setShortDescription( String s )
+    {
+        model.setShortDescription( s );
+    }
+
+    public void setSiteAddress( String s )
+    {
+        model.setSiteAddress( s );
+    }
+
+    public void setSiteDirectory( String s )
+    {
+        model.setSiteDirectory( s );
+    }
+
+    public void setUrl( String s )
+    {
+        model.setUrl( s );
+    }
+
+    /**
+     * Add a distribution to this project.
+     *
+     * @param version Distribution for this project.
+     */
+    public void addVersion( Version version )
+    {
+        if ( versionMap != null )
+        {
+            // if we've already lazy iitialised, keep it up to date
+            versionMap.put( version.getId(), version );
+        }
+        model.addVersion( version );
+    }
+
+    /**
+     * @todo hopefully can be replaced by appropraite getters in modello
+     */
+    public void resolveIds()
+    {
+        originalGroupId = model.getGroupId();
+        if ( model.getId() != null )
+        {
+            if ( model.getGroupId() == null )
+            {
+                setId( model.getId() );
+            }
+            else
+            {
+                model.setArtifactId( model.getId() );
+            }
+        }
+        else if ( model.getGroupId() == null )
+        {
+            model.setGroupId( model.getArtifactId() );
+        }
+    }
+
+    private void resolveVersions()
+    {
+        versionMap = new HashMap();
+        for ( Iterator i = getVersions().iterator(); i.hasNext(); )
+        {
+            Version version = (Version) i.next();
+            versionMap.put( version.getId(), version );
+        }
+    }
+
+    /**
+     * @todo hopefully can be replaced by appropraite getters in modello
+     */
+    private void resolveDependencies()
+    {
+        for ( Iterator i = getDependencies().iterator(); i.hasNext(); )
+        {
+            Dependency dependency = (Dependency) i.next();
+            if ( dependency.getId() != null )
+            {
+                if ( dependency.getGroupId() == null )
+                {
+                    String id = dependency.getId();
+                    int k = id.indexOf( "+" );
+                    int j = id.indexOf( ":" );
+
+                    if ( k > 0 )
+                    {
+                        dependency.setGroupId( id.substring( 0, k ) );
+                        dependency.setArtifactId( id.replace( '+', '-' ) );
+                    }
+                    else if ( j > 0 )
+                    {
+                        dependency.setGroupId( id.substring( 0, j ) );
+                        dependency.setArtifactId( id.substring( j + 1 ) );
+                    }
+                    else
+                    {
+                        dependency.setGroupId( id );
+                    }
+                }
+                if ( dependency.getArtifactId() == null )
+                {
+                    dependency.setArtifactId( dependency.getId() );
+                }
+            }
+            else if ( dependency.getGroupId() == null )
+            {
+                dependency.setGroupId( dependency.getArtifactId() );
+            }
+            dependency.setId( dependency.getGroupId() + ":" + dependency.getArtifactId() );
+            dependencyMap.put( dependency.getKey(), dependency );
+        }
+    }
+
+    /**
+     * Create an XML string from the project.
+     *
+     * @return XML representation of the project
+     * @throws Exception FIXME
+     */
+    public String getProjectAsString()
+        throws Exception
+    {
+        ByteArrayOutputStream projectStream = new ByteArrayOutputStream();
+        OutputStreamWriter w = new OutputStreamWriter( projectStream );
+        try
+        {
+            MavenXpp3Writer writer = new MavenXpp3Writer();
+            writer.write( w, model );
+        }
+        finally
+        {
+            w.close();
+        }
+        return projectStream.toString( System.getProperty( "file.encoding" ) );
+    }
+
+    public String toString()
+    {
+        return getName() == null ? super.toString() : getName();
+    }
+
+    public boolean equals( Object o )
+    {
+        if ( o.equals( this ) )
+        {
+            return true;
+        }
+
+        if ( !( o instanceof Project ) )
+        {
+            return false;
+        }
+
+        Project project = (Project) o;
+        return getId().equals( project.getId() );
+    }
+
+    public int hashCode()
+    {
+        return getId().hashCode();
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractArtifact.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractArtifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractArtifact.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,200 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.project.Dependency;
+import org.apache.maven.util.MD5Sum;
+import org.apache.maven.verifier.ChecksumVerificationException;
+import org.codehaus.plexus.util.FileUtils;
+
+/**
+ * Base class from which all artifact subclasses are derived.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ */
+public abstract class AbstractArtifact
+    implements Artifact
+{
+    /** logger for output */
+    private Log log = LogFactory.getLog( AbstractArtifact.class );
+
+    /** Platform specific file separator used for file system operations. */
+    protected static final String fs = File.separator;
+
+    /** Dependency this artifact is based on. */
+    private Dependency dependency;
+
+    /** Path to artifact. */
+    private String path;
+
+    /** Override type. */
+    private String overrideType = null;
+
+    /**
+     * Default constructor.
+     * @param dependency the dependency the artifact is based on
+     */
+    public AbstractArtifact( Dependency dependency )
+    {
+        this.dependency = dependency;
+    }
+
+    /** @see Artifact#setDependency */
+    public void setDependency( Dependency dependency )
+    {
+        this.dependency = dependency;
+    }
+
+    /** @see Artifact#getDependency */
+    public Dependency getDependency()
+    {
+        return dependency;
+    }
+
+    /** @see Artifact#setPath */
+    public void setPath( String repositoryPath )
+    {
+        this.path = repositoryPath;
+    }
+
+    /** @see Artifact#getPath */
+    public String getPath()
+    {
+        if ( path == null )
+        {
+            return generatePath();
+        }
+
+        return path;
+    }
+
+    public String generatePath()
+    {
+        return fs + getDependency().getArtifactDirectory() + fs + getDependency().getTypeDirectory() + fs
+            + getDependency().getArtifact();
+    }
+
+    /** @see Artifact#getUrlPath */
+    public String getUrlPath()
+    {
+        return '/' + getDependency().getArtifactDirectory() + '/' + getDependency().getTypeDirectory() + '/'
+            + getDependency().getArtifact();
+    }
+
+    /** @see Artifact#getChecksumUrl */
+    public String getChecksumUrl()
+    {
+        return getUrlPath() + ".md5";
+    }
+
+    /**
+     * Get the name of the artifact from the underlying dependency.
+     *
+     * @return The name of the underlying dependency.
+     */
+    public String getName()
+    {
+        return getDependency().getArtifact();
+    }
+
+    /** @see Artifact#exists */
+    public boolean exists()
+    {
+        return getFile().exists();
+    }
+
+    /** @see Artifact#isSnapshot */
+    public boolean isSnapshot()
+    {
+        if ( getDependency().getVersion() != null )
+        {
+            return getDependency().getVersion().indexOf( MavenConstants.SNAPSHOT_SIGNIFIER ) > 0
+                || getDependency().getArtifact().indexOf( MavenConstants.SNAPSHOT_SIGNIFIER ) > 0;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+    /** @see Artifact#getFile */
+    public File getFile()
+    {
+        return new File( getPath() );
+    }
+
+    /**
+     * C H E C K S U M  V E R I F I C A T I O N
+     * @throws ChecksumVerificationException when the checksum differs
+     */
+    public void verify()
+        throws ChecksumVerificationException
+    {
+        File checksumFile = new File( getFile() + ".md5" );
+
+        // The central repository is not fully populated with md5
+        // checksum files yet so we'll be a little lax right now but
+        // hopefully in the future we can differentiate or specify
+        // repositories whose artifacts must undergo verification.
+        if ( !checksumFile.exists() )
+        {
+            return;
+        }
+
+        String actualChecksum;
+        MD5Sum md5;
+
+        try
+        {
+            md5 = new MD5Sum();
+            md5.setFile( getFile() );
+            md5.execute();
+
+            actualChecksum = FileUtils.fileRead( checksumFile.getCanonicalPath() );
+            actualChecksum = actualChecksum.substring( 0, actualChecksum.length() - 1 );
+        }
+        catch ( Exception e )
+        {
+            return;
+        }
+
+        log.debug( "Actual checksum: '" + actualChecksum + "'" );
+        log.debug( "MD5 checksum: '" + md5.getChecksum() + "'" );
+
+        if ( !actualChecksum.equals( md5.getChecksum() ) )
+        {
+            throw new ChecksumVerificationException( MavenUtils.getMessage( "checksum.verification.error", getPath() ) );
+        }
+    }
+
+    public String getOverrideType()
+    {
+        return overrideType;
+    }
+
+    public void setOverrideType( String overrideType )
+    {
+        this.overrideType = overrideType;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,27 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: AbstractRepositoryLayout.java 169211 2005-05-09 01:23:02Z brett $
+ */
+public abstract class AbstractRepositoryLayout
+{
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/Artifact.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/Artifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/Artifact.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,131 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import org.apache.maven.project.Dependency;
+import org.apache.maven.verifier.ChecksumVerificationException;
+
+/**
+ * The interface defining an artifact (which probably lives in the
+ * repository).
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: Artifact.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public interface Artifact
+{
+    public static final String OVERRIDE_NONE = null;
+
+    public static final String OVERRIDE_VERSION = "version";
+
+    public static final String OVERRIDE_PATH = "path";
+
+    /**
+     * Set the dependency for this JAR artifact.
+     *
+     * @param dependency Dependency this artifact is based on.
+     */
+    void setDependency( Dependency dependency );
+
+    /**
+     * Get the dependency.
+     *
+     * @return The dependency this artifact is based on.
+     */
+    Dependency getDependency();
+
+    /**
+     * Set the path to the artifact. The maven jar override facilty can be
+     * used to change the path to the artifact if the user specifies the
+     * use of a specific version.
+     *
+     * @param path Path to the artifact.
+     */
+    void setPath( String path );
+
+    /**
+     * Return the path of the artifact using platform specific naming
+     * conventions.
+     *
+     * @return Path to the artifact.
+     */
+    String getPath();
+
+    /**
+     * Generate the path for this artifact given its dependency attributes.
+     *
+     * @return The generated path of the artifact based on the dependency attributes.
+     */
+    String generatePath();
+
+    /**
+     * Return an URL path that is platform agnostic.
+     *
+     * @return URL of the artifact.
+     */
+    String getUrlPath();
+
+    /**
+     * Return the url to the checksum file for this artifact.
+     *
+     * @return URL of the checksum file for this artifact.
+     */
+    String getChecksumUrl();
+
+    /**
+     * Return the name of the artifact.
+     *
+     * @return Name of the underlying dependency.
+     */
+    String getName();
+
+    /**
+     * Boolean flag indicating whether this artifact is a snapshot.
+     *
+     * @return Flag indicating whether this artifact is a snapshot.
+     */
+    boolean isSnapshot();
+
+    /**
+     * Boolean flag indicating whether this artifact exists.
+     *
+     * @return Flag indicating the existance of the artifact in the local repository.
+     */
+    boolean exists();
+
+    /**
+     * Get the location of the artifact in the local file system.
+     *
+     * @return The location of the artifact in the local file system.
+     */
+    File getFile();
+
+    /**
+     * Verify the artifact.
+     *
+     * @throws ChecksumVerificationException if verification fails
+     */
+    void verify()
+        throws ChecksumVerificationException;
+
+    public void setOverrideType( String overrideType );
+
+    public String getOverrideType();
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/ArtifactTypeHandler.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/ArtifactTypeHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/ArtifactTypeHandler.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,51 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.MavenException;
+import org.apache.maven.project.Project;
+
+/**
+ *  This will do until wagon debuts.
+ * 
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a> 
+ * @version $Id: ArtifactTypeHandler.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public interface ArtifactTypeHandler
+{
+    /**
+     * Map an artifact to a repository path.
+     * 
+     * @param project the project for the artifact
+     * @param type  The type of the artifact 
+     * @param version  The version of the artifact 
+     * @return the path
+     */
+    public String constructRepositoryFullPath( String type, Project project, String version )
+        throws MavenException;
+
+    /**
+     * Map an artifact to a repository directory path.
+     * 
+     * @param project the project for the artifact
+     * @param type  The type of the artifact 
+     * @return the path
+     */
+    public String constructRepositoryDirectoryPath( String type, Project project )
+        throws MavenException;
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactFactory.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactFactory.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactFactory.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,58 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.project.Dependency;
+
+/**
+ * Simple factory for creating Artifact implementations based on a dependency
+ * type.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: DefaultArtifactFactory.java 424460 2006-07-21 21:37:20Z aheritier $
+ *
+ * @todo The factor needs to take a properties file describing the acceptable
+ *       types of artifacts. We can have a default set and also allow users
+ *       to customize the list for their own purposes.
+ */
+public class DefaultArtifactFactory
+{
+    /**
+     * Return an appropriate Artifact implementation based on the dependency
+     * type.
+     *
+     * @param dependency The base dependency.
+     * @todo not the intended usage of test type
+     * @return The appropriate artifact based on the dependency type.
+     */
+    public static Artifact createArtifact( Dependency dependency )
+    {
+        //!! I certainly have to revisit this. As sometimes we get
+        // any of the following conditions satisfied.
+        if ( dependency.getType() == null || dependency.getType().trim().length() == 0
+            || "jar".equals( dependency.getType() ) || "test".equals( dependency.getType() ) )
+        {
+            dependency.setType( "jar" );
+            return new GenericArtifact( dependency );
+        }
+        else
+        {
+            return new GenericArtifact( dependency );
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,78 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.project.Project;
+
+/**
+ *  This will do until wagon debuts.
+ * 
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a> 
+ * @version $Id: DefaultArtifactTypeHandler.java 424460 2006-07-21 21:37:20Z aheritier $
+ */
+public class DefaultArtifactTypeHandler
+    implements ArtifactTypeHandler
+{
+    /**
+     * Map an artifact to a repository directory path.
+     * 
+     * @param project the project for the artifact
+     * @param type  The type of the artifact 
+     * @return the path
+     */
+    public String constructRepositoryDirectoryPath( String type, Project project )
+    {
+        StringBuffer path = new StringBuffer();
+        path.append( project.getArtifactDirectory() );
+        path.append( "/" );
+        path.append( type + "s" );
+        path.append( "/" );
+        return path.toString();
+    }
+
+    /**
+     * Map an artifact to a repository path.
+     * 
+     * @param project the project for the artifact
+     * @param type  The type of the artifact 
+     * @param version  The version of the artifact (may be a snapshot)
+     * @return the path
+     */
+    public String constructRepositoryFullPath( String type, Project project, String version )
+    {
+        StringBuffer path = new StringBuffer( constructRepositoryDirectoryPath( type, project ) );
+        path.append( project.getArtifactId() );
+        path.append( "-" );
+        path.append( version );
+        path.append( extensionForType( type ) );
+        return path.toString();
+    }
+
+    /** @deprecated plugin, ejb and uberjar should provide their own implementation. */
+    private String extensionForType( String type )
+    {
+        if ( "uberjar".equals( type ) || "ejb".equals( type ) || "plugin".equals( type ) )
+        {
+            return ".jar";
+        }
+        else
+        {
+            return "." + type;
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ * The standard {@link org.apache.maven.repository.RepositoryLayout}
+ * implementation.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: DefaultRepositoryLayout.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class DefaultRepositoryLayout
+    implements RepositoryLayout
+{
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/GenericArtifact.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/GenericArtifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/GenericArtifact.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.project.Dependency;
+
+/**
+ * Generic artifact that builds its path and url information based on its
+ * associated dependency. URLs are of the form "id/type/artifact".
+ *
+ * @author <a href="mailto:jason at zenplex.org">Jason van Zyl</a>
+ *
+ * @version $Id: GenericArtifact.java 169211 2005-05-09 01:23:02Z brett $
+ */
+public class GenericArtifact
+    extends AbstractArtifact
+{
+    /**
+     * Constructor for the GenericArtifact object
+     *
+     * @param dependency Project dependency.
+     */
+    public GenericArtifact( Dependency dependency )
+    {
+        super( dependency );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/PluginArtifact.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/PluginArtifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/PluginArtifact.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,53 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.project.Dependency;
+
+/**
+ * Plugin artifact that has special knowledge of the MavenSession's
+ * plugin mechanism.
+ *
+ * @author <a href="mailto:jason at zenplex.org">Jason van Zyl</a>
+ * @version $Id: PluginArtifact.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class PluginArtifact
+    extends AbstractArtifact
+{
+    /**
+     * Constructor for the MavenSession Plugin artifact object.
+     *
+     * @param dependency Project dependency.
+     */
+    public PluginArtifact( Dependency dependency )
+    {
+        super( dependency );
+    }
+
+    /** @see Artifact#generatePath */
+    public String generatePath()
+    {
+        return null;
+    }
+
+    /** @see Artifact#getUrlPath */
+    public String getUrlPath()
+    {
+        return null;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/RepositoryLayout.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/RepositoryLayout.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/RepositoryLayout.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,29 @@
+package org.apache.maven.repository;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ * <code>RepositoryLayout</code> describes how artifacts are to
+ * be arranged in a user's local repository.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: RepositoryLayout.java 169211 2005-05-09 01:23:02Z brett $
+ */
+public interface RepositoryLayout
+{
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/repository/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.repository</title>
+</head>
+<body>
+  <p>Repository and their held artifacts.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Base64.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Base64.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Base64.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,387 @@
+package org.apache.maven.util;
+
+/*
+ * ====================================================================
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ */
+
+import java.io.ByteArrayOutputStream;
+
+// import org.apache.commons.logging.Log;
+// import org.apache.commons.logging.LogFactory;
+
+/**
+ * Encode/Decode Base-64.
+ * 
+ * @author John Casey
+ */
+public final class Base64
+{
+
+    // private static final Log LOG = LogFactory.getLog( Base64.class );
+
+    private static final String CRLF = System.getProperty( "line.separator" );
+
+    private static final int LINE_END = 64;
+
+    public static String encode( byte[] data )
+    {
+        return Base64.encode( data, true );
+    }
+
+    public static String encode( byte[] data, boolean useLineDelimiter )
+    {
+        if ( data == null )
+        {
+            return null;
+        }
+        else if ( data.length == 0 )
+        {
+            return "";
+        }
+
+        int padding = 3 - ( data.length % 3 );
+
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "padding = " + padding + "characters." );
+        // }
+
+        StringBuffer buffer = new StringBuffer();
+
+        for ( int i = 0; i < data.length; i += 3 )
+        {
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "iteration base offset = " + i );
+            // }
+
+            int neutral = ( data[i] < 0 ? data[i] + 256 : data[i] );
+
+            int block = ( neutral & 0xff );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "after first byte, block = " + Integer.toBinaryString( block ) );
+            // }
+
+            boolean inLastSegment = false;
+
+            block <<= 8;
+            if ( i + 1 < data.length )
+            {
+                neutral = ( data[i + 1] < 0 ? data[i + 1] + 256 : data[i + 1] );
+                block |= ( neutral & 0xff );
+            }
+            else
+            {
+                inLastSegment = true;
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "after second byte, block = " + Integer.toBinaryString( block ) + "; inLastSegment = "
+            // + inLastSegment );
+            // }
+
+            block <<= 8;
+            if ( i + 2 < data.length )
+            {
+                neutral = ( data[i + 2] < 0 ? data[i + 2] + 256 : data[i + 2] );
+                block |= ( neutral & 0xff );
+            }
+            else
+            {
+                inLastSegment = true;
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "after third byte, block = " + Integer.toBinaryString( block ) + "; inLastSegment = "
+            // + inLastSegment );
+            // }
+
+            char[] encoded = new char[4];
+
+            encoded[0] = toBase64Char( ( block >>> 18 ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "first character = " + encoded[0] );
+            // }
+
+            encoded[1] = toBase64Char( ( block >>> 12 ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "second character = " + encoded[1] );
+            // }
+
+            if ( inLastSegment && padding > 1 )
+            {
+                encoded[2] = '=';
+            }
+            else
+            {
+                encoded[2] = toBase64Char( ( block >>> 6 ) & 0x3f );
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "third character = " + encoded[2] );
+            // }
+
+            if ( inLastSegment && padding > 0 )
+            {
+                encoded[3] = '=';
+            }
+            else
+            {
+                encoded[3] = toBase64Char( block & 0x3f );
+            }
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "fourth character = " + encoded[3] );
+            // }
+
+            buffer.append( encoded );
+        }
+
+        if ( useLineDelimiter )
+        {
+            return canonicalize( buffer.toString() );
+        }
+        else
+        {
+            return buffer.toString();
+        }
+    }
+
+    public static byte[] decode( String src )
+    {
+        return Base64.decode( src, true );
+    }
+
+    public static byte[] decode( String src, boolean useLineDelimiter )
+    {
+        if ( src == null )
+        {
+            return null;
+        }
+        else if ( src.length() < 1 )
+        {
+            return new byte[0];
+        }
+
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "pre-canonicalization = \n" + src );
+        // }
+        String data = src;
+
+        if ( useLineDelimiter )
+        {
+            data = deCanonicalize( src );
+        }
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "post-canonicalization = \n" + data );
+        // }
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        char[] input = data.toCharArray();
+
+        for ( int i = 0; i < input.length; i += 4 )
+        {
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "iteration base offset = " + i );
+            // }
+
+            int block = ( toBase64Int( input[i] ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after first char [" + input[i] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            block <<= 6;
+            block |= ( toBase64Int( input[i + 1] ) & 0x3f );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after second char [" + input[i + 1] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            boolean inPadding = false;
+            boolean twoCharPadding = false;
+            block <<= 6;
+            if ( input[i + 2] != '=' )
+            {
+                block |= ( toBase64Int( input[i + 2] ) & 0x3f );
+            }
+            else
+            {
+                twoCharPadding = true;
+                inPadding = true;
+            }
+
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after third char [" + input[i + 2] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            block <<= 6;
+            if ( input[i + 3] != '=' )
+            {
+                block |= ( toBase64Int( input[i + 3] ) & 0x3f );
+            }
+            else
+            {
+                inPadding = true;
+            }
+
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "block after fourth char [" + input[i + 3] + "] = " + Integer.toBinaryString( block ) );
+            // }
+
+            baos.write( ( block >>> 16 ) & 0xff );
+            // if ( LOG.isDebugEnabled() )
+            // {
+            // LOG.debug( "byte[" + ( index++ ) + "] = " + ( ( block >>> 16 ) & 0xff ) );
+            // }
+
+            if ( !inPadding || !twoCharPadding )
+            {
+                baos.write( ( block >>> 8 ) & 0xff );
+                // if ( LOG.isDebugEnabled() )
+                // {
+                // LOG.debug( "byte[" + ( index++ ) + "] = " + ( ( block >>> 8 ) & 0xff ) );
+                // }
+            }
+
+            if ( !inPadding )
+            {
+                baos.write( block & 0xff );
+                // if ( LOG.isDebugEnabled() )
+                // {
+                // LOG.debug( "byte[" + ( index++ ) + "] = " + ( block & 0xff ) );
+                // }
+            }
+        }
+
+        byte[] result = baos.toByteArray();
+        // if ( LOG.isDebugEnabled() )
+        // {
+        // LOG.debug( "byte array is " + result.length + " bytes long." );
+        // }
+
+        return result;
+    }
+
+    private static char toBase64Char( int input )
+    {
+        if ( input > -1 && input < 26 )
+        {
+            return (char) ( 'A' + input );
+        }
+        else if ( input > 25 && input < 52 )
+        {
+            return (char) ( 'a' + input - 26 );
+        }
+        else if ( input > 51 && input < 62 )
+        {
+            return (char) ( '0' + input - 52 );
+        }
+        else if ( input == 62 )
+        {
+            return '+';
+        }
+        else if ( input == 63 )
+        {
+            return '/';
+        }
+        else
+        {
+            return '?';
+        }
+    }
+
+    private static int toBase64Int( char input )
+    {
+        if ( input >= 'A' && input <= 'Z' )
+        {
+            return input - 'A';
+        }
+        else if ( input >= 'a' && input <= 'z' )
+        {
+            return input + 26 - 'a';
+        }
+        else if ( input >= '0' && input <= '9' )
+        {
+            return input + 52 - '0';
+        }
+        else if ( input == '+' )
+        {
+            return 62;
+        }
+        else if ( input == '/' )
+        {
+            return 63;
+        }
+        else
+        {
+            return 0;
+        }
+    }
+
+    private static String deCanonicalize( String data )
+    {
+        if ( data == null )
+        {
+            return null;
+        }
+
+        StringBuffer buffer = new StringBuffer( data.length() );
+        for ( int i = 0; i < data.length(); i++ )
+        {
+            char c = data.charAt( i );
+            if ( c != '\r' && c != '\n' )
+            {
+                buffer.append( c );
+            }
+        }
+
+        return buffer.toString();
+    }
+
+    private static String canonicalize( String data )
+    {
+        StringBuffer buffer = new StringBuffer( (int) ( data.length() * 1.1 ) );
+
+        int col = 0;
+        for ( int i = 0; i < data.length(); i++ )
+        {
+            if ( col == LINE_END )
+            {
+                buffer.append( CRLF );
+                col = 0;
+            }
+
+            buffer.append( data.charAt( i ) );
+            col++;
+        }
+
+        buffer.append( CRLF );
+
+        return buffer.toString();
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Base64.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/BootstrapDownloadMeter.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/BootstrapDownloadMeter.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/BootstrapDownloadMeter.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,99 @@
+package org.apache.maven.util;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.events.TransferListener;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/**
+ * Bootstrap download progress meter.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: BootstrapDownloadMeter.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class BootstrapDownloadMeter
+    implements TransferListener
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( BootstrapDownloadMeter.class );
+
+    private int shownSoFar = 0;
+
+    private final int numHashes;
+
+    private final char hashChar;
+
+    private long complete = 0;
+
+    public BootstrapDownloadMeter()
+    {
+        this( 20, '.' );
+    }
+
+    public BootstrapDownloadMeter( int numHashes, char hashChar )
+    {
+        this.numHashes = numHashes;
+        this.hashChar = hashChar;
+    }
+
+    public void transferInitiated( TransferEvent transferEvent )
+    {
+        // this space left intentionally blank
+    }
+
+    public void transferStarted( TransferEvent transferEvent )
+    {
+        shownSoFar = 0;
+        complete = 0;
+    }
+
+    public void transferProgress( TransferEvent transferEvent, byte[] buffer, int length )
+    {
+        long total = transferEvent.getResource().getContentLength();
+
+        complete += length;
+
+        if ( total > 0 )
+        {
+            int numToShow = (int) ( ( complete * numHashes ) / total );
+            for ( int i = shownSoFar + 1; i <= numToShow; i++ )
+            {
+                System.out.print( hashChar );
+            }
+            shownSoFar = numToShow;
+        }
+    }
+
+    public void transferCompleted( TransferEvent transferEvent )
+    {
+        long total = transferEvent.getResource().getContentLength();
+        System.out.println( " (" + ( total / 1024 ) + "K)" );
+    }
+
+    public void transferError( TransferEvent transferEvent )
+    {
+        log.error( transferEvent.getException().getMessage() );
+    }
+
+    public void debug( String message )
+    {
+        log.debug( message );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,51 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.tools.ant.util.GlobPatternMapper;
+
+/**
+ * Implementation of FileNameMapper that does simple case insensitive
+ * wildcard pattern replacements.
+ *
+ * <p>This does the same name translations as
+ * <code>org.apache.tools.ant.util.GlobPatternMapper</code> does,
+ * but ignores case when comparing parts of name with patterns.</p>
+ *
+ * @author <a href="mailto:barancev at ispras.ru">Alexei Baranstev</a>
+ */
+public class CaseInsensitiveGlobPatternMapper
+    extends GlobPatternMapper
+{
+
+    /**
+     * Returns null if the source file name doesn't match the
+     * &quot;from&quot; pattern, an one-element array containing the
+     * translated file otherwise.
+     */
+    public String[] mapFileName( String sourceFileName )
+    {
+        if ( fromPrefix == null || !sourceFileName.toLowerCase().startsWith( fromPrefix.toLowerCase() )
+            || !sourceFileName.toLowerCase().endsWith( fromPostfix.toLowerCase() ) )
+        {
+            return null;
+        }
+        return new String[] { toPrefix + extractVariablePart( sourceFileName ) + toPostfix };
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ConsoleDownloadMeter.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ConsoleDownloadMeter.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ConsoleDownloadMeter.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,71 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.events.TransferListener;
+
+/**
+ * Console download progress meter.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: ConsoleDownloadMeter.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class ConsoleDownloadMeter
+    implements TransferListener
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( BootstrapDownloadMeter.class );
+
+    private long complete;
+
+    public void transferInitiated( TransferEvent transferEvent )
+    {
+        // this space left intentionally blank
+    }
+
+    public void transferStarted( TransferEvent transferEvent )
+    {
+        complete = 0;
+    }
+
+    public void transferProgress( TransferEvent transferEvent, byte[] buffer, int length )
+    {
+        long total = transferEvent.getResource().getContentLength();
+        complete += length;
+        System.out.print( ( complete / 1024 ) + "/" + ( total == 0 ? "?" : ( total / 1024 ) + "K" ) + "\r" );
+    }
+
+    public void transferCompleted( TransferEvent transferEvent )
+    {
+        long total = transferEvent.getResource().getContentLength();
+        log.info( ( total / 1024 ) + "K downloaded" );
+    }
+
+    public void transferError( TransferEvent transferEvent )
+    {
+        log.error( transferEvent.getException().getMessage() );
+    }
+
+    public void debug( String message )
+    {
+        log.debug( message );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLFormatter.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLFormatter.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLFormatter.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,105 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.text.DecimalFormat;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Formatting tool for use with the DVSL toolbox.  This class contains
+ * static methods to assist in formatting needs that can't be done or
+ * shouldn't be done in a DVSL stylesheet.
+ *
+ * @author <a href="mailto:pete-apache-dev at kazmier.com">Pete Kazmier</a>
+ * @version $Id: DVSLFormatter.java 423634 2006-07-19 22:13:40Z aheritier $
+ * @todo move to org.apache.maven.util or make a jelly tag
+ */
+public class DVSLFormatter
+{
+    /**
+     * Instance of a formatter.
+     */
+    private static DecimalFormat formatter = new DecimalFormat();
+
+    /**
+     * Log for debug output
+     */
+    private static Log log = LogFactory.getLog( DVSLFormatter.class );
+
+    /**
+     * Formats a string as a number using the specified pattern.
+     * Patterns are specified using the same format as <code>
+     * java.text.DecimalFormat</code>.
+     * <p/>
+     * This method is thread-hostile.
+     *
+     * @see java.text.DecimalFormat
+     * @param value The number to format.
+     * @param pattern The pattern used to format.
+     * @return A string formatted using the specified pattern.
+     * @throws IllegalArgumentException If an invalid pattern is
+     * specified.
+     */
+    public static final String formatNumber( final String value, final String pattern )
+    {
+        log.debug( "value = '" + value + "', pattern = '" + pattern + "'" );
+        if ( pattern == null || value == null )
+        {
+            return "<error formatting: '" + value + "' with '" + pattern + "'>";
+        }
+
+        String ret = null;
+
+        try
+        {
+            formatter = new DecimalFormat( pattern );
+            Number valueAsNumber;
+            try
+            {
+                valueAsNumber = Double.valueOf( value.trim() );
+            }
+            catch ( NumberFormatException nfe )
+            {
+                valueAsNumber = new Double( "0.00" );
+            }
+
+            if ( pattern.indexOf( "." ) != -1 || pattern.indexOf( "%" ) != -1 )
+            {
+                // parse as a decimal
+                ret = formatter.format( valueAsNumber.doubleValue() );
+            }
+            else
+            {
+                // parse as an integer
+                formatter.setParseIntegerOnly( true );
+                ret = formatter.format( valueAsNumber.longValue() );
+            }
+            log.debug( "ret='" + ret + "'" );
+
+        }
+        catch ( Exception e )
+        {
+            log.error( "<error formatting: '" + value + "' with '" + pattern + "'>", e );
+            return "<error formatting: '" + value + "' with '" + pattern + "'>";
+        }
+
+        return ret;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLPathTool.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLPathTool.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/DVSLPathTool.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,301 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * Path tool for use with the DVSL toolbox.  This class contains static
+ * methods to assist in determining path-related information such as
+ * relative paths.
+ *
+ * @author <a href="mailto:pete-apache-dev at kazmier.com">Pete Kazmier</a>
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @version $Id: DVSLPathTool.java 424460 2006-07-21 21:37:20Z aheritier $
+ * @todo move to org.apache.maven.util or make a jelly tag
+ */
+public class DVSLPathTool
+{
+    /**
+     * Determines the relative path of a filename from a base directory.
+     * This method is useful in building relative links within pages of
+     * a web site.  It provides similar functionality to Anakia's
+     * <code>$relativePath</code> context variable.  The arguments to
+     * this method may contain either forward or backward slashes as
+     * file separators.  The relative path returned is formed using
+     * forward slashes as it is expected this path is to be used as a
+     * link in a web page (again mimicking Anakia's behavior).
+     * <p/>
+     * This method is thread-safe.
+     *
+     * @param basedir The base directory.
+     * @param filename The filename that is relative to the base
+     * directory.
+     * @return The relative path of the filename from the base
+     * directory.  This value is not terminated with a forward slash.
+     * A zero-length string is returned if: the filename is not relative to
+     * the base directory, <code>basedir</code> is null or zero-length,
+     * or <code>filename</code> is null or zero-length.
+     */
+    public static final String getRelativePath( String basedir, String filename )
+    {
+        basedir = uppercaseDrive( basedir );
+        filename = uppercaseDrive( filename );
+
+        /*
+         * Verify the arguments and make sure the filename is relative
+         * to the base directory.
+         */
+        if ( basedir == null || basedir.length() == 0 || filename == null || filename.length() == 0
+            || !filename.startsWith( basedir ) )
+        {
+            return "";
+        }
+
+        /*
+         * Normalize the arguments.  First, determine the file separator
+         * that is being used, then strip that off the end of both the
+         * base directory and filename.
+         */
+        String separator = determineSeparator( filename );
+        basedir = StringUtils.chompLast( basedir, separator );
+        filename = StringUtils.chompLast( filename, separator );
+
+        /*
+         * Remove the base directory from the filename to end up with a
+         * relative filename (relative to the base directory).  This
+         * filename is then used to determine the relative path.
+         */
+        String relativeFilename = filename.substring( basedir.length() );
+
+        return determineRelativePath( relativeFilename, separator );
+    }
+
+    /**
+     * Determines the relative path of a filename.  This method is
+     * useful in building relative links within pages of a web site.  It
+     * provides similar functionality to Anakia's
+     * <code>$relativePath</code> context variable.  The argument to
+     * this method may contain either forward or backward slashes as
+     * file separators.  The relative path returned is formed using
+     * forward slashes as it is expected this path is to be used as a
+     * link in a web page (again mimicking Anakia's behavior).
+     * <p/>
+     * This method is thread-safe.
+     *
+     * @param filename The filename to be parsed.
+     * @return The relative path of the filename. This value is not
+     * terminated with a forward slash.  A zero-length string is
+     * returned if: <code>filename</code> is null or zero-length.
+     */
+    public static final String getRelativePath( String filename )
+    {
+        filename = uppercaseDrive( filename );
+
+        if ( filename == null || filename.length() == 0 )
+        {
+            return "";
+        }
+
+        /*
+         * Normalize the argument.  First, determine the file separator
+         * that is being used, then strip that off the end of the
+         * filename.  Then, if the filename doesn't begin with a
+         * separator, add one.
+         */
+
+        String separator = determineSeparator( filename );
+        filename = StringUtils.chompLast( filename, separator );
+        if ( !filename.startsWith( separator ) )
+        {
+            filename = separator + filename;
+        }
+
+        return determineRelativePath( filename, separator );
+    }
+
+    /**
+     * Determines the directory component of a filename.  This is useful
+     * within DVSL templates when used in conjunction with the DVSL's
+     * <code>$context.getAppValue("infilename")</code> to get the
+     * current directory that is currently being processed.
+     * <p/>
+     * This method is thread-safe.
+     *
+     * @param filename The filename to be parsed.
+     * @return The directory portion of the <code>filename</code>.  If
+     * the filename does not contain a directory component, "." is
+     * returned.
+     */
+    public static final String getDirectoryComponent( String filename )
+    {
+        if ( filename == null || filename.length() == 0 )
+        {
+            return "";
+        }
+
+        String separator = determineSeparator( filename );
+        String directory = StringUtils.chomp( filename, separator );
+
+        if ( filename.equals( directory ) )
+        {
+            return ".";
+        }
+        else
+        {
+            return directory;
+        }
+    }
+
+    /**
+     * Determines the relative path of a filename.  For each separator
+     * within the filename (except the leading if present), append the
+     * "../" string to the return value.
+     *
+     * @param filename The filename to parse.
+     * @param separator The separator used within the filename.
+     * @return The relative path of the filename.  This value is not
+     * terminated with a forward slash.  A zero-length string is
+     * returned if: the filename is zero-length.
+     */
+    private static final String determineRelativePath( String filename, String separator )
+    {
+        if ( filename.length() == 0 )
+        {
+            return "";
+        }
+
+        /*
+         * Count the slashes in the relative filename, but exclude the
+         * leading slash.  If the path has no slashes, then the filename
+         * is relative to the current directory.
+         */
+        int slashCount = StringUtils.countMatches( filename, separator ) - 1;
+        if ( slashCount <= 0 )
+        {
+            return ".";
+        }
+
+        /*
+         * The relative filename contains one or more slashes indicating
+         * that the file is within one or more directories.  Thus, each
+         * slash represents a "../" in the relative path.
+         */
+        StringBuffer sb = new StringBuffer();
+        for ( int i = 0; i < slashCount; i++ )
+        {
+            sb.append( "../" );
+        }
+
+        /*
+         * Finally, return the relative path but strip the trailing
+         * slash to mimic Anakia's behavior.
+         */
+        return StringUtils.chop( sb.toString() );
+    }
+
+    /**
+     * Helper method to determine the file separator (forward or
+     * backward slash) used in a filename.  The slash that occurs more
+     * often is returned as the separator.
+     *
+     * @param filename The filename parsed to determine the file
+     * separator.
+     * @return The file separator used within <code>filename</code>.
+     * This value is either a forward or backward slash.
+     */
+    private static final String determineSeparator( String filename )
+    {
+        int forwardCount = StringUtils.countMatches( filename, "/" );
+        int backwardCount = StringUtils.countMatches( filename, "\\" );
+
+        return forwardCount >= backwardCount ? "/" : "\\";
+    }
+
+    /**
+     * Cygwin prefers lowercase drive letters, but other parts of maven use uppercase
+     * @param path
+     * @return String
+     */
+    static final String uppercaseDrive( String path )
+    {
+        if ( path == null )
+        {
+            return null;
+        }
+        if ( path.length() >= 2 && path.charAt( 1 ) == ':' )
+        {
+            path = path.substring( 0, 1 ).toUpperCase() + path.substring( 1 );
+        }
+        return path;
+    }
+
+    /**
+     * Calculates the appropriate link given the preferred link and the relativePath of the document
+     * @param link
+     * @param relativePath
+     * @return String
+     */
+    public static final String calculateLink( String link, String relativePath )
+    {
+        //This must be some historical feature
+        if ( link.startsWith( "/site/" ) )
+        {
+            return link.substring( 5 );
+        }
+
+        //Allows absolute links in nav-bars etc
+        if ( link.startsWith( "/absolute/" ) )
+        {
+            return link.substring( 10 );
+        }
+
+        // This traps urls like http://
+        if ( link.indexOf( ":" ) >= 0 )
+        {
+            return link;
+        }
+
+        //If relativepath is current directory, just pass the link through
+        if ( ".".equals( relativePath ) )
+        {
+            if ( link.startsWith( "/" ) )
+            {
+                return link.substring( 1 );
+            }
+            else
+            {
+                return link;
+            }
+        }
+
+        //If we don't do this, you can end up with ..//bob.html rather than ../bob.html
+        if ( relativePath.endsWith( "/" ) && link.startsWith( "/" ) )
+        {
+            return relativePath + "." + link.substring( 1 );
+        }
+
+        if ( relativePath.endsWith( "/" ) || link.startsWith( "/" ) )
+        {
+            return relativePath + link;
+        }
+
+        return relativePath + "/" + link;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/EnhancedStringTokenizer.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/EnhancedStringTokenizer.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/EnhancedStringTokenizer.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,133 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.StringTokenizer;
+
+/**
+ * The java.util.StringTokenizer is horribly broken.
+ * Given the string  1,,,3,,4      (, delim)
+ * It will return 1,3,4
+ * Which is clearly wrong - 1,EMPTY,EMPTY,3,EMPTY,4 is what it should return
+ */
+public final class EnhancedStringTokenizer
+{
+    private StringTokenizer cst = null;
+
+    String cdelim;
+
+    final boolean cdelimSingleChar;
+
+    final char cdelimChar;
+
+    boolean creturnDelims;
+
+    public EnhancedStringTokenizer( String str )
+    {
+        this( str, " \t\n\r\f", false );
+    }
+
+    public EnhancedStringTokenizer( String str, String delim )
+    {
+        this( str, delim, false );
+    }
+
+    public EnhancedStringTokenizer( String str, String delim, boolean returnDelims )
+    {
+        cst = new StringTokenizer( str, delim, true );
+        cdelim = delim;
+        creturnDelims = returnDelims;
+        cdelimSingleChar = ( delim.length() == 1 );
+        cdelimChar = delim.charAt( 0 );
+    }
+
+    public boolean hasMoreTokens()
+    {
+        return cst.hasMoreTokens();
+    }
+
+    String lastToken = null;
+
+    boolean delimLast = true;
+
+    private String internalNextToken()
+    {
+        if ( lastToken != null )
+        {
+            String last = lastToken;
+            lastToken = null;
+            return last;
+        }
+
+        String token = cst.nextToken();
+        if ( isDelim( token ) )
+        {
+            if ( delimLast )
+            {
+                lastToken = token;
+                return "";
+            }
+            else
+            {
+                delimLast = true;
+                return token;
+            }
+        }
+        else
+        {
+            delimLast = false;
+            return token;
+        }
+    }
+
+    public String nextToken()
+    {
+        String token = internalNextToken();
+        if ( creturnDelims )
+        {
+            return token;
+        }
+        if ( isDelim( token ) )
+            return hasMoreTokens() ? internalNextToken() : "";
+        else
+            return token;
+    }
+
+    private boolean isDelim( String str )
+    {
+        if ( str.length() == 1 )
+        {
+            char ch = str.charAt( 0 );
+            if ( cdelimSingleChar )
+            {
+                if ( cdelimChar == ch )
+                {
+                    return true;
+                }
+            }
+            else
+            {
+                if ( cdelim.indexOf( ch ) >= 0 )
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Expand.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Expand.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/Expand.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,226 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tools.ant.util.FileUtils;
+
+/**
+ * Unzip a file.
+ *
+ * @author costin at dnt.ro
+ * @author <a href="mailto:stefan.bodewig at epost.de">Stefan Bodewig</a>
+ * @author <a href="mailto:umagesh at apache.org">Magesh Umasankar</a>
+ * @since Ant 1.1
+ * @ant.task category="packaging" name="unzip" name="unjar" name="unwar"
+ */
+public class Expand
+{
+    /** Destination. */
+    private File dest;
+
+    /** Source. */
+    private File source; // req
+
+    /** Should overwrite flag. */
+    private boolean overwrite = true;
+
+    /** Logger. */
+    private static final Log log = LogFactory.getLog( Expand.class );
+
+    /** file utility class */
+    private FileUtils fileUtils;
+
+    /**
+     * Do the work.
+     *
+     * @throws IOException If an error occurs.
+     */
+    public void execute()
+        throws IOException
+    {
+        expandFile();
+    }
+
+    /**
+     * Expand a file.
+     */
+    protected void expandFile()
+        throws IOException
+    {
+        ZipInputStream zis = null;
+        FileInputStream fis = null;
+        try
+        {
+            // code from WarExpand
+            fis = new FileInputStream( source );
+            zis = new ZipInputStream( fis );
+            ZipEntry ze = null;
+            setFileUtils( FileUtils.newFileUtils() );
+
+            while ( ( ze = zis.getNextEntry() ) != null )
+            {
+                extractFile( zis, ze.getName(), new Date( ze.getTime() ), ze.isDirectory() );
+            }
+
+            log.debug( "expand complete" );
+        }
+        finally
+        {
+            if ( fis != null )
+            {
+                try
+                {
+                    fis.close();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "WARNING: Cannot close stream!", e );
+                }
+            }
+            if ( zis != null )
+            {
+                try
+                {
+                    zis.close();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "WARNING: Cannot close stream!", e );
+                }
+            }
+        }
+    }
+
+    /** Extract a file.
+     *
+     *  @param compressedInputStream The input stream.
+     *  @param entryName The entry name.
+     *  @param entryDate The entry date.
+     *  @param isDirectory Flag indicating if is directory.
+     *
+     *  @throws IOException If an error occurs while attempting to
+     *          extract the file.
+     */
+    protected void extractFile( InputStream compressedInputStream, String entryName, Date entryDate, boolean isDirectory )
+        throws IOException
+    {
+        File f = fileUtils.resolveFile( dest, entryName );
+
+        if ( !overwrite && f.exists() && f.lastModified() >= entryDate.getTime() )
+        {
+            log.debug( "Skipping " + f + " as it is up-to-date" );
+            return;
+        }
+        // create intermediary directories - sometimes zip don't add them
+        File dirF = f.getParentFile();
+        //File dirF = fileUtils.getParentFile(f);
+        dirF.mkdirs();
+
+        if ( isDirectory )
+        {
+            f.mkdirs();
+        }
+        else
+        {
+            byte[] buffer = new byte[1024];
+            int length = 0;
+            FileOutputStream fos = null;
+            try
+            {
+                fos = new FileOutputStream( f );
+
+                while ( ( length = compressedInputStream.read( buffer ) ) >= 0 )
+                {
+                    fos.write( buffer, 0, length );
+                }
+
+                fos.close();
+                fos = null;
+            }
+            finally
+            {
+                if ( fos != null )
+                {
+                    try
+                    {
+                        fos.close();
+                    }
+                    catch ( IOException e )
+                    {
+                        log.debug( "WARNING: Cannot close stream!", e );
+                    }
+                }
+            }
+        }
+
+        fileUtils.setFileLastModified( f, entryDate.getTime() );
+    }
+
+    /**
+     * Set the destination directory. File will be unzipped into the destination
+     * directory.
+     *
+     * @param d Path to the directory.
+     */
+    public void setDest( File d )
+    {
+        dest = d;
+    }
+
+    /**
+     * Set the path to zip-file.
+     *
+     * @param s Path to zip-file.
+     */
+    public void setSrc( File s )
+    {
+        source = s;
+    }
+
+    /**
+     * Should we overwrite files in dest, even if they are newer than the
+     * corresponding entries in the archive?
+     *
+     *  @param shouldOverwrite <code>true</code> to indicate that files
+     *         should be overwritten, otherwise <code>false</code>.
+     */
+    public void setOverwrite( boolean shouldOverwrite )
+    {
+        overwrite = shouldOverwrite;
+    }
+
+    /**
+     * @param utils
+     */
+    public void setFileUtils( FileUtils utils )
+    {
+        fileUtils = utils;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/HttpUtils.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/HttpUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/HttpUtils.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,224 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.net.Authenticator;
+import java.net.PasswordAuthentication;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.providers.file.FileWagon;
+import org.apache.maven.wagon.providers.http.HttpWagon;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
+
+/**
+ * Http utils for retrieving files.
+ *
+ * This is now a simple wrapper around Wagon to preserve the interface for old code. Heavily deprecated, will be removed
+ * next release.
+ *
+ * @author costin at dnt.ro
+ * @author gg at grtmail.com (Added Java 1.1 style HTTP basic auth)
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @deprecated please use Wagon instead
+ */
+public class HttpUtils
+{
+    private static final Log log = LogFactory.getLog( HttpUtils.class );
+
+    public static void useProxyUser( final String proxyHost, final String proxyPort, final String proxyUserName,
+                                     final String proxyPassword )
+    {
+        if ( proxyHost != null && proxyPort != null )
+        {
+            System.getProperties().put( "proxySet", "true" );
+            System.getProperties().put( "proxyHost", proxyHost );
+            System.getProperties().put( "proxyPort", proxyPort );
+
+            if ( proxyUserName != null )
+            {
+                Authenticator.setDefault( new Authenticator()
+                {
+                    protected PasswordAuthentication getPasswordAuthentication()
+                    {
+                        return new PasswordAuthentication( proxyUserName, proxyPassword == null ? new char[0]
+                                                                                               : proxyPassword
+                                                                                                   .toCharArray() );
+                    }
+                } );
+            }
+        }
+    }
+
+    public static void getFile( String url, File destinationFile, boolean ignoreErrors, boolean useTimestamp,
+                                String proxyHost, String proxyPort, String proxyUserName, String proxyPassword,
+                                boolean useChecksum )
+        throws IOException
+    {
+        getFile( url, destinationFile, ignoreErrors, useTimestamp, proxyHost, proxyPort, proxyUserName, proxyPassword,
+                 null, null, useChecksum );
+    }
+
+    public static void getFile( String url, File destinationFile, boolean ignoreErrors, boolean useTimestamp,
+                                String proxyHost, String proxyPort, String proxyUserName, String proxyPassword,
+                                String loginHost, String loginDomain, boolean useChecksum )
+        throws IOException
+    {
+        // Get the requested file.
+        getFile( url, destinationFile, ignoreErrors, useTimestamp, proxyHost, proxyPort, proxyUserName, proxyPassword,
+                 loginHost, loginDomain );
+
+        // Get the checksum if requested.
+        if ( useChecksum )
+        {
+            File checksumFile = new File( destinationFile + ".md5" );
+
+            try
+            {
+                getFile( url + ".md5", checksumFile, ignoreErrors, useTimestamp, proxyHost, proxyPort, proxyUserName,
+                         proxyPassword, loginHost, loginDomain );
+            }
+            catch ( Exception e )
+            {
+                // do nothing we will check later in the process
+                // for the checksums.
+            }
+        }
+    }
+
+    public static void getFile( String url, File destinationFile, boolean ignoreErrors, boolean useTimestamp,
+                                String proxyHost, String proxyPort, String proxyUserName, String proxyPassword )
+        throws IOException
+    {
+        getFile( url, destinationFile, ignoreErrors, useTimestamp, proxyHost, proxyPort, proxyUserName, proxyPassword,
+                 null, null );
+    }
+
+    public static void getFile( String url, File destinationFile, boolean ignoreErrors, boolean useTimestamp,
+                                String proxyHost, String proxyPort, String proxyUserName, String proxyPassword,
+                                String loginHost, String loginDomain )
+        throws IOException
+    {
+        //set the timestamp to the file date.
+        long timestamp = -1;
+        if ( useTimestamp && destinationFile.exists() )
+        {
+            timestamp = destinationFile.lastModified();
+        }
+
+        try
+        {
+            getFile( url, destinationFile, timestamp, proxyHost, proxyPort, proxyUserName, proxyPassword, loginHost,
+                     loginDomain );
+        }
+        catch ( IOException ex )
+        {
+            if ( !ignoreErrors )
+            {
+                throw ex;
+            }
+        }
+    }
+
+    public static void getFile( String url, File destinationFile, long timestamp, String proxyHost, String proxyPort,
+                                String proxyUserName, String proxyPassword, String loginHost, String loginDomain )
+        throws IOException
+    {
+        int index = url.lastIndexOf( "/" );
+        String file = url.substring( index + 1 );
+        url = url.substring( 0, index );
+
+        Repository repository = new Repository( "httputils", url );
+
+        Wagon wagon;
+        if ( "http".equals( repository.getProtocol() ) )
+        {
+            wagon = new HttpWagon();
+        }
+        else
+        {
+            wagon = new FileWagon();
+        }
+        wagon.addTransferListener( new BootstrapDownloadMeter() );
+
+        ProxyInfo proxyInfo = null;
+        if ( proxyHost != null )
+        {
+            proxyInfo = new ProxyInfo();
+            proxyInfo.setHost( proxyHost );
+            proxyInfo.setPort( Integer.valueOf( proxyPort ).intValue() );
+            proxyInfo.setUserName( proxyUserName );
+            proxyInfo.setPassword( proxyPassword );
+            proxyInfo.setNtlmHost( loginHost );
+            proxyInfo.setNtlmDomain( loginDomain );
+        }
+
+        try
+        {
+            wagon.connect( repository, proxyInfo );
+            wagon.getIfNewer( file, destinationFile, timestamp );
+        }
+        catch ( Exception e )
+        {
+            throw new IOException( "Transfer failure: " + e );
+        }
+        finally
+        {
+            try
+            {
+                wagon.disconnect();
+            }
+            catch ( ConnectionException e )
+            {
+                log.debug( "Failure to disconnect", e );
+            }
+        }
+    }
+
+    public static String[] parseUrl( String url )
+    {
+        String[] parsedUrl = new String[3];
+        parsedUrl[0] = null;
+        parsedUrl[1] = null;
+        parsedUrl[2] = url;
+
+        // We want to be able to deal with Basic Auth where the username
+        // and password are part of the URL. An example of the URL string
+        // we would like to be able to parse is like the following:
+        //
+        // http://username:password@repository.mycompany.com
+
+        int i = url.indexOf( "@" );
+        if ( i > 0 )
+        {
+            String protocol = url.substring( 0, url.indexOf( "://" ) ) + "://";
+            String s = url.substring( protocol.length(), i );
+            int j = s.indexOf( ":" );
+            parsedUrl[0] = s.substring( 0, j );
+            parsedUrl[1] = s.substring( j + 1 );
+            parsedUrl[2] = protocol + url.substring( i + 1 );
+        }
+
+        return parsedUrl;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/InsertionOrderedSet.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/InsertionOrderedSet.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/InsertionOrderedSet.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,180 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Set class that maintain insertion order (first wins). This is necessary because the only alternatives are
+ * LinkedHashSet (JDK 1.4), or SetUtils.orderedSet (commons-collections-3.0), both of which are problematic for
+ * Maven to require.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: InsertionOrderedSet.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class InsertionOrderedSet
+    implements Set
+{
+    private List order = new ArrayList();
+
+    private Set set = new HashSet();
+
+    public InsertionOrderedSet()
+    {
+    }
+
+    public InsertionOrderedSet( Collection c )
+    {
+        addAll( c );
+    }
+
+    public Iterator iterator()
+    {
+        return new InsertionOrderedSetIterator();
+    }
+
+    public boolean isEmpty()
+    {
+        return set.isEmpty();
+    }
+
+    public int size()
+    {
+        return set.size();
+    }
+
+    public void clear()
+    {
+        set.clear();
+        order.clear();
+    }
+
+    public boolean add( Object o )
+    {
+        if ( !set.contains( o ) )
+        {
+            set.add( o );
+            return order.add( o );
+        }
+        return false;
+    }
+
+    public boolean containsAll( Collection c )
+    {
+        return set.containsAll( c );
+    }
+
+    public boolean addAll( Collection c )
+    {
+        boolean retVal = false;
+
+        for ( Iterator i = c.iterator(); i.hasNext(); )
+        {
+            boolean result = add( i.next() );
+            retVal = retVal || result;
+        }
+        return retVal;
+    }
+
+    public boolean removeAll( Collection c )
+    {
+        order.removeAll( c );
+        return set.removeAll( c );
+    }
+
+    public boolean retainAll( Collection c )
+    {
+        order.retainAll( c );
+        return set.retainAll( c );
+    }
+
+    public boolean contains( Object o )
+    {
+        return set.contains( o );
+    }
+
+    public Object[] toArray()
+    {
+        return order.toArray();
+    }
+
+    public Object[] toArray( Object[] a )
+    {
+        return order.toArray( a );
+    }
+
+    public boolean remove( Object o )
+    {
+        if ( set.remove( o ) )
+        {
+            order.remove( o );
+            return true;
+        }
+        return false;
+    }
+
+    public String toString()
+    {
+        return order.toString();
+    }
+
+    public boolean equals( Object o )
+    {
+        return set.equals( o );
+    }
+
+    public int hashCode()
+    {
+        return set.hashCode();
+    }
+
+    private class InsertionOrderedSetIterator
+        implements Iterator
+    {
+        private Iterator i;
+
+        private Object current = null;
+
+        private InsertionOrderedSetIterator()
+        {
+            i = order.iterator();
+        }
+
+        public boolean hasNext()
+        {
+            return i.hasNext();
+        }
+
+        public Object next()
+        {
+            current = i.next();
+            return current;
+        }
+
+        public void remove()
+        {
+            i.remove();
+            set.remove( current );
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MD5Sum.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MD5Sum.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MD5Sum.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,182 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+
+/**
+ * Encode an MD5 digest into a String. <p>
+ *
+ * The 128 bit MD5 hash is converted into a 32 character long String. Each
+ * character of the String is the hexadecimal representation of 4 bits of the
+ * digest.
+ *
+ * XXX The API here is a mess.  It is combining a static utility class with a
+ *     message digest API. Some methods which should be static are not, presumably
+ *     so Jelly can easily access them.
+ *
+ * @author Remy Maucherat
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Revision: 423634 $ $Date: 2006-07-20 00:13:40 +0200 (tor, 20 jul 2006) $
+ */
+public class MD5Sum
+{
+    /** File that will be checksummed. */
+    private File file;
+
+    /** Checksum */
+    private String checksum;
+
+    /** Hex digits. */
+    private static final char[] hexadecimal = {
+        '0',
+        '1',
+        '2',
+        '3',
+        '4',
+        '5',
+        '6',
+        '7',
+        '8',
+        '9',
+        'a',
+        'b',
+        'c',
+        'd',
+        'e',
+        'f' };
+
+    /** Set the file to perform the checksum on.
+     *
+     *  @param file The file.
+     */
+    public void setFile( File file )
+    {
+        this.file = file;
+    }
+
+    /** Get the file that the checksum will be perform on.
+     *
+     *  @return the file.
+     */
+    public File getFile()
+    {
+        return file;
+    }
+
+    /** Set the checksum
+     *
+     *  @param checksum The checksum.
+     */
+    public void setChecksum( String checksum )
+    {
+        this.checksum = checksum;
+    }
+
+    /** Get the checksum
+     *
+     *  @return The calculated checksum.
+     */
+    public String getChecksum()
+    {
+        return checksum;
+    }
+
+    /**
+     * Encodes the 128 bit (16 bytes) MD5 into a 32 character String.
+     *
+     * @param binaryData Array containing the digest
+     *
+     * @return Encoded MD5, or null if encoding failed
+     */
+    public String encode( byte[] binaryData )
+    {
+
+        if ( binaryData.length != 16 )
+        {
+            return null;
+        }
+
+        char[] buffer = new char[32];
+
+        for ( int i = 0; i < 16; i++ )
+        {
+            int low = ( binaryData[i] & 0x0f );
+            int high = ( ( binaryData[i] & 0xf0 ) >> 4 );
+            buffer[i * 2] = hexadecimal[high];
+            buffer[i * 2 + 1] = hexadecimal[low];
+        }
+
+        return new String( buffer );
+    }
+
+    /** Pull in static content and store it
+     *
+     *  @param file The file to read.
+     *
+     *  @return The bytes of the file.
+     *
+     *  @throws Exception If an error occurs reading in the file's bytes.
+     */
+    public byte[] getBytes( File file )
+        throws Exception
+    {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        InputStream stream = new FileInputStream( file );
+
+        byte buf[] = new byte[1024];
+        int len = 0;
+
+        while ( ( len = stream.read( buf, 0, 1024 ) ) != -1 )
+        {
+            baos.write( buf, 0, len );
+        }
+
+        try
+        {
+            stream.close();
+        }
+        catch ( IOException e )
+        {
+            // Nothing to do
+        }
+
+        return baos.toByteArray();
+    }
+
+    /** Perform the MD5-Sum work.
+     *
+     *  @throws Exception If an error occurs while calculating the sum.
+     */
+    public void execute()
+        throws Exception
+    {
+        if ( !file.exists() )
+        {
+            System.err.println( "Specified file " + file + " doesn't exist." );
+        }
+
+        MessageDigest md5Helper = MessageDigest.getInstance( "MD5" );
+        setChecksum( encode( md5Helper.digest( getBytes( file ) ) ) );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MavenTool.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MavenTool.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/MavenTool.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,257 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.apache.maven.project.Project;
+import org.apache.tools.ant.types.Path;
+
+/**
+ * Context/pull tool for use in MavenSession templates.
+ *
+ * @author <a href="mailto:dlr at collab.net">Daniel Rall</a>
+ */
+public class MavenTool
+{
+    /** The maven project the tool is processing */
+    private Project project;
+
+    /** list of items to be counted. Key is the object, value is a list
+     of objects that have been added that are equal */
+    private Map counted = new HashMap();
+
+    /** the counted items in ascending order of number of times counted */
+    private Map countedItems = null;
+
+    /** the counted items in descending order of number of times counted */
+    private Map countedItemsReversed = null;
+
+    /**
+     * Creates a new instance.
+     */
+    public MavenTool()
+    {
+        // FIXME: Need a path to the project descriptor.
+        //project = MavenUtils.getProject("project.xml");
+    }
+
+    /**
+     * Accessor for the project property.
+     * @return the maven project being processed
+     */
+    public Project getProject()
+    {
+        return project;
+    }
+
+    /**
+     * Resolves a path fragment for the first resource found in
+     * <code>directories</code>.
+     *
+     * <blockquote><code><pre>
+     * #set ($pathFragment =
+     * $maven.resolvePathFragment($context.toolbox.string.basedir, "foo/bar",
+     * ${src.set}))
+     * </pre></code></blockquote>
+     *
+     * @param baseDir The directory to which <code>directories</code>
+     * are relative.
+     * @param resource The path to the resource to find in
+     * <code>directories</code>.
+     * @param directories The list of paths to search for
+     * <code>resource</code> in..
+     * @return The path fragment to <code>resource</code>.
+     */
+    public String resolvePathFragment( String baseDir, String resource, Path directories )
+    {
+        return resolvePathFragment( baseDir, resource, directories.list() );
+    }
+
+    /**
+     * Called by {@link #resolvePathFragment(String, String, Path)}.
+     *
+     * @see #resolvePathFragment(String, String, Path)
+     */
+    protected final String resolvePathFragment( String baseDir, String resource, String[] paths )
+    {
+        String path = null;
+        for ( int i = 0; i < paths.length; i++ )
+        {
+            path = paths[i];
+            File d = new File( baseDir, path );
+            if ( d.isDirectory() && new File( d, resource ).exists() )
+            {
+                break;
+            }
+            else
+            {
+                // Avoid returning a bogus value on the last iteration.
+                path = null;
+            }
+        }
+        if ( path == null )
+        {
+            System.err.println( "Unable to resolve " + resource + " using a base diretory of " + baseDir );
+        }
+        return path;
+    }
+
+    /**
+     * Clear the counter so that there are zero items
+     */
+    public void resetCount()
+    {
+        getCounted().clear();
+    }
+
+    /**
+     * Add an object to the list of counted items.
+     * @param object the item to be added.
+     */
+    public void addToCount( Object object )
+    {
+        List list = null;
+        if ( getCounted().get( object ) == null )
+        {
+            list = new ArrayList();
+        }
+        else
+        {
+            list = (List) getCounted().get( object );
+        }
+        list.add( object );
+        getCounted().put( object, list );
+        if ( getCountedItems() != null )
+        {
+            setCountedItems( null );
+            setCountedItemsReversed( null );
+        }
+    }
+
+    /** Fill the provided sorting map of items from the counted items
+     * @param map a map that will sort the objects added to it
+     */
+    private void fillSortingMap( Map map )
+    {
+        List list = null;
+        Object key = null;
+        for ( Iterator index = counted.keySet().iterator(); index.hasNext(); )
+        {
+            key = index.next();
+            list = (List) counted.get( key );
+            Integer count = new Integer( list.size() );
+            Set items = null;
+            if ( map.containsKey( count ) )
+            {
+                items = (Set) map.get( count );
+            }
+            else
+            {
+                items = new TreeSet();
+            }
+            items.add( key );
+            map.put( count, items );
+        }
+    }
+
+    /**
+     * get a list of counted items with the key being the number of times
+     * counted (in descending order) and the value any arbitrary item that was
+     * counted
+     * @return a sorted map of #times counted -> list of objects
+     */
+    public Map getCountDescending()
+    {
+        if ( getCountedItemsReversed() == null )
+        {
+            setCountedItemsReversed( new TreeMap( Collections.reverseOrder() ) );
+            fillSortingMap( getCountedItemsReversed() );
+        }
+        return getCountedItemsReversed();
+    }
+
+    /**
+     * get a list of counted items with the key being the number of times
+     * counted and the value any arbitrary item that was counted
+     * @return a sorted map of #times counted -> list of objects
+     */
+    public Map getCount()
+    {
+        if ( getCountedItems() == null )
+        {
+            setCountedItems( new TreeMap() );
+            fillSortingMap( getCountedItems() );
+        }
+        return getCountedItems();
+    }
+
+    /** Getter for property counted.
+     * @return Value of property counted.
+     */
+    private Map getCounted()
+    {
+        return counted;
+    }
+
+    /** Getter for property countedItems.
+     * @return Value of property countedItems.
+     */
+    private Map getCountedItems()
+    {
+        return countedItems;
+    }
+
+    /** Setter for property countedItems.
+     * @param countedItems New value of property countedItems.
+     */
+    private void setCountedItems( Map countedItems )
+    {
+        this.countedItems = countedItems;
+    }
+
+    /** Getter for property countedItemsReversed.
+     * @return Value of property countedItemsReversed.
+     */
+    private Map getCountedItemsReversed()
+    {
+        return countedItemsReversed;
+    }
+
+    /** Setter for property countedItemsReverse.
+     * @param countedItemsReversed New value of property countedItemsReverse.
+     */
+    private void setCountedItemsReversed( Map countedItemsReversed )
+    {
+        this.countedItemsReversed = countedItemsReversed;
+    }
+
+    public Integer toInteger( String s )
+    {
+        return Integer.valueOf( s );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ResourceBean.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ResourceBean.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/ResourceBean.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,85 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.net.URL;
+
+/**
+ * A helper bean to load the given URI from the current threads class loader or
+ * the class loader that was used to load this class.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ */
+
+public class ResourceBean
+{
+    private ClassLoader classLoader;
+
+    /**
+     * Attempts to load the given resource from the given name.
+     * The current thrad context class loader will be tried first, then the
+     * class loader used to load this class.
+     *
+     * If the classLoader property on this bean is set then that ClassLoader is
+     * used in preference to any other.
+     *
+     * @param name of the resource to load
+     * @return URL of the resource or null if could not be found
+     */
+    public URL findResource( String name )
+    {
+        URL answer = null;
+        if ( classLoader != null )
+        {
+            answer = classLoader.getResource( name );
+        }
+        // lets try the current threads class loader first
+        if ( answer == null )
+        {
+            ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+            if ( contextClassLoader != null )
+            {
+                answer = contextClassLoader.getResource( name );
+            }
+            if ( answer == null )
+            {
+                answer = getClass().getClassLoader().getResource( name );
+            }
+        }
+        return answer;
+    }
+
+    /**
+     * Returns the classLoader.
+     * @return ClassLoader
+     */
+    public ClassLoader getClassLoader()
+    {
+        return classLoader;
+    }
+
+    /**
+     * Sets the classLoader.
+     * @param classLoader The classLoader to set
+     */
+    public void setClassLoader( ClassLoader classLoader )
+    {
+        this.classLoader = classLoader;
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringInputStream.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringInputStream.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringInputStream.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,109 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+
+/**
+ * Wraps a String as an InputStream. Note that data will be lost for
+ * characters not in ISO Latin 1, as a simple char->byte mapping is assumed.
+ *
+ * @author <a href="mailto:umagesh at apache.org">Magesh Umasankar</a>
+ */
+public class StringInputStream
+    extends InputStream
+{
+    /** Source string, stored as a StringReader */
+    private StringReader in;
+
+    /**
+     * Composes a stream from a String
+     *
+     * @param source The string to read from. Must not be <code>null</code>.
+     */
+    public StringInputStream( String source )
+    {
+        in = new StringReader( source );
+    }
+
+    /**
+     * Reads from the Stringreader, returning the same value. Note that
+     * data will be lost for characters not in ISO Latin 1. Clients
+     * assuming a return value in the range -1 to 255 may even fail on
+     * such input.
+     *
+     * @return the value of the next character in the StringReader
+     *
+     * @exception IOException if the original StringReader fails to be read
+     */
+    public int read()
+        throws IOException
+    {
+        return in.read();
+    }
+
+    /**
+     * Closes the Stringreader.
+     *
+     * @exception IOException if the original StringReader fails to be closed
+     */
+    public void close()
+        throws IOException
+    {
+        in.close();
+    }
+
+    /**
+     * Marks the read limit of the StringReader.
+     *
+     * @param limit the maximum limit of bytes that can be read before the
+     *              mark position becomes invalid
+     */
+    public synchronized void mark( final int limit )
+    {
+        try
+        {
+            in.mark( limit );
+        }
+        catch ( IOException ioe )
+        {
+            throw new RuntimeException( ioe.getMessage() );
+        }
+    }
+
+    /**
+     * Resets the StringReader.
+     *
+     * @exception IOException if the StringReader fails to be reset
+     */
+    public synchronized void reset()
+        throws IOException
+    {
+        in.reset();
+    }
+
+    /**
+     * @see InputStream#markSupported
+     */
+    public boolean markSupported()
+    {
+        return in.markSupported();
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringTool.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringTool.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/StringTool.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,76 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author <a href="mailto:bwalding at jakarta.org">Ben Walding</a>
+ * @version $Id: StringTool.java 423634 2006-07-19 22:13:40Z aheritier $
+ * @todo move to org.apache.maven.util or make a jelly tag
+ */
+public class StringTool
+{
+
+    /**
+     * Splits a string at the last delimiter. If no delimiter is found,
+     * first element is the string, second element is empty string.
+     * @param s the string to be split
+     * @param delim the delimiter
+     * @return String[] a two element array, element 0 = string up to last delim (exclusive), element 1 = string past
+     * last delim (exclusive)
+     */
+    public List splitStringAtLastDelim( String s, String delim )
+    {
+        if ( s == null )
+        {
+            String[] result = { null, null };
+            return Arrays.asList( result );
+        }
+
+        int index = s.lastIndexOf( delim );
+
+        if ( index == -1 )
+        {
+            String[] result = { s, "" };
+            return Arrays.asList( result );
+        }
+        else
+        {
+            String[] result = { s.substring( 0, index ), s.substring( index + 1 ) };
+            return Arrays.asList( result );
+        }
+    }
+
+    /**
+     * <p>Removes all whitespace characters from the start and end of a String.</p>
+     *
+     * <p>This is similar to {@link #trim(String)} but removes whitespace.
+     * Whitespace is defined by {@link Character#isWhitespace(char)}.</p>
+     *
+     * @param s the String to remove characters from, may be null
+     * @return the trimmed String, <code>null</code> if null String input
+     */
+    public static String trim( String s )
+    {
+        return StringUtils.strip( s );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/util/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.util</title>
+</head>
+<body>
+  <p>Utility code.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/ChecksumVerificationException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/ChecksumVerificationException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/ChecksumVerificationException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,51 @@
+package org.apache.maven.verifier;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.MavenException;
+
+/**
+ * Specialized artifact corruption exception.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: ChecksumVerificationException.java 407919 2006-05-19 21:55:30Z ltheussl $
+ */
+public class ChecksumVerificationException
+    extends MavenException
+{
+    /**
+     * Constructs an ChecksumVerificationException with the specified detail message.
+     * @param message Detailed message.
+     */
+    public ChecksumVerificationException( String message )
+    {
+        super( message );
+    }
+
+    /**
+     * Constructs a ChecksumVerificationException with the specified detail message
+     * and the causing Throwable.
+     * @param message Detailed message.
+     * @param cause The Throwable.
+     */
+    public ChecksumVerificationException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/DependencyVerifier.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/DependencyVerifier.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/DependencyVerifier.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,694 @@
+package org.apache.maven.verifier;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.AbstractMavenComponent;
+import org.apache.maven.MavenConstants;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Project;
+import org.apache.maven.repository.Artifact;
+import org.apache.maven.util.BootstrapDownloadMeter;
+import org.apache.maven.util.ConsoleDownloadMeter;
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.events.TransferListener;
+import org.apache.maven.wagon.observers.ChecksumObserver;
+import org.apache.maven.wagon.providers.file.FileWagon;
+import org.apache.maven.wagon.providers.http.HttpWagon;
+import org.apache.maven.wagon.providers.ssh.SftpWagon;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * Make sure that everything that is required for the project to build
+ * successfully is present. We will start by looking at the dependencies
+ * and make sure they are all here before trying to compile.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ *
+ *
+ * @todo Separate out the local settings verifier because this only needs to be run
+ *       once a session, but is currently being run during project verification so
+ *       this is a big waste in the reactor for example.
+ */
+public class DependencyVerifier
+    extends AbstractMavenComponent
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog( DependencyVerifier.class );
+
+    /** List of failed deps. */
+    private List failedDependencies;
+
+    /** Local Repository verifier. */
+    private LocalSettingsVerifier localRepositoryVerifier;
+
+    private static Set resolvedArtifacts = new HashSet();
+
+    /**
+     * Default ctor.
+     * @param project the project to verify
+     */
+    public DependencyVerifier( Project project )
+    {
+        super( project );
+        failedDependencies = new ArrayList();
+        localRepositoryVerifier = new LocalSettingsVerifier( project );
+    }
+
+    /**
+     * Execute the verification process.
+     *
+     * @throws RepoConfigException If an error occurs while verifying basic maven settings.
+     * @throws UnsatisfiedDependencyException If there are unsatisfied dependencies.
+     * @throws ChecksumVerificationException if the download checksum doesn't match the calculated
+     */
+    public void verify()
+        throws RepoConfigException, UnsatisfiedDependencyException, ChecksumVerificationException
+    {
+        localRepositoryVerifier.verifyLocalRepository();
+        satisfyDependencies();
+    }
+
+    /**
+     * Clear the failed dependencies. Required when reusing the
+     * project verifier.
+     */
+    private void clearFailedDependencies()
+    {
+        for ( int i = 0; i < failedDependencies.size(); i++ )
+        {
+            failedDependencies.remove( i );
+        }
+    }
+
+    /**
+     * Check to see that all dependencies are present and if they are
+     * not then download them.
+     *
+     * @throws UnsatisfiedDependencyException If there are unsatisfied dependencies.
+     * @throws ChecksumVerificationException If checksums don't match.
+     */
+    private void satisfyDependencies()
+        throws UnsatisfiedDependencyException, ChecksumVerificationException
+    {
+        // Is the remote repository enabled?
+        boolean remoteRepoEnabled = getProject().getContext().getRemoteRepositoryEnabled().booleanValue();
+
+        // Is the user online?
+        boolean online = getProject().getContext().getOnline().booleanValue();
+
+        if ( !remoteRepoEnabled )
+        {
+            log.warn( getMessage( "remote.repository.disabled.warning" ) );
+        }
+
+        clearFailedDependencies();
+
+        for ( Iterator i = getProject().getArtifacts().iterator(); i.hasNext(); )
+        {
+            Artifact artifact = (Artifact) i.next();
+
+            String path = artifact.getUrlPath();
+            if ( resolvedArtifacts.contains( path ) )
+            {
+                log.debug( "(previously resolved: " + path + ")" );
+                continue;
+            }
+            resolvedArtifacts.add( path );
+
+            // The artifact plain doesn't exist so chalk it up as a failed dependency.
+            if ( !artifact.exists() )
+            {
+                log.debug( "Artifact [" + path + "] not found in local repository" );
+                failedDependencies.add( artifact );
+            }
+            else if ( artifact.isSnapshot() && !Artifact.OVERRIDE_PATH.equals( artifact.getOverrideType() ) )
+            {
+                // The artifact exists but we need to take into account the user
+                // being online and whether the artifact is a snapshot. If the user
+                // is online then snapshots are added to the list of failed dependencies
+                // so that a newer version can be retrieved if one exists. We make
+                // an exception when the user is working offline and let them
+                // take their chances with a strong warning that they could possibly
+                // be using an out-of-date artifact. We don't want to cripple users
+                // when working offline.
+                if ( online )
+                {
+                    failedDependencies.add( artifact );
+                }
+                else
+                {
+                    log.warn( getMessage( "offline.snapshot.warning", artifact.getName() ) );
+                }
+            }
+        }
+
+        // If we have any failed dependencies then we will attempt to download
+        // them for the user if the remote repository is enabled.
+        if ( !failedDependencies.isEmpty() && remoteRepoEnabled && online )
+        {
+            getDependencies();
+        }
+
+        // If we still have failed dependencies after we have tried to
+        // satisfy all dependencies then we have a problem. There might
+        // also be a problem if the use of the remote repository has
+        // been disabled and dependencies just aren't present. In any
+        // case we have a problem.
+        if ( !failedDependencies.isEmpty() )
+        {
+            throw new UnsatisfiedDependencyException( createUnsatisfiedDependenciesMessage() );
+        }
+    }
+
+    /**
+     * Create a message for the user stating the dependencies that are unsatisfied.
+     *
+     * @return The unsatisfied dependency message.
+     */
+    private String createUnsatisfiedDependenciesMessage()
+    {
+        StringBuffer message = new StringBuffer();
+
+        if ( failedDependencies.size() == 1 )
+        {
+            message.append( getMessage( "single.unsatisfied.dependency.error" ) );
+        }
+        else
+        {
+            message.append( getMessage( "multiple.unsatisfied.dependency.error" ) );
+        }
+
+        message.append( "\n\n" );
+
+        for ( Iterator i = failedDependencies.iterator(); i.hasNext(); )
+        {
+            Artifact artifact = (Artifact) i.next();
+            message.append( artifact.getName() );
+
+            String overrideType = artifact.getOverrideType();
+            if ( overrideType != Artifact.OVERRIDE_NONE )
+            {
+                if ( Artifact.OVERRIDE_VERSION.equals( overrideType ) )
+                {
+                    message.append( "; version override doesn't exist: " + artifact.getDependency().getVersion() );
+                }
+                else if ( Artifact.OVERRIDE_PATH.equals( overrideType ) )
+                {
+                    message.append( "; path override doesn't exist: " + artifact.getPath() );
+                }
+            }
+
+            String url = artifact.getDependency().getUrl();
+            if ( StringUtils.isNotEmpty( url ) )
+            {
+                // FIXME: internationalize
+                message.append( " (" ).append( "try downloading from " ).append( url ).append( ")" );
+            }
+            message.append( "\n" );
+        }
+
+        return message.toString();
+    }
+
+    /**
+     *  Try and retrieve the dependencies from the remote repository in
+     *  order to satisfy the dependencies of the project.
+     * @throws ChecksumVerificationException If checksums don't match.
+     */
+    private void getDependencies()
+        throws ChecksumVerificationException
+    {
+        log.debug( "Getting failed dependencies: " + failedDependencies );
+
+        // if there are failed dependencies try to indicate for which project:
+        if ( failedDependencies.size() > 0 )
+        {
+            log.info( getMessage( "satisfy.project.message", getProject().getName() ) );
+        }
+
+        for ( Iterator i = failedDependencies.iterator(); i.hasNext(); )
+        {
+            Artifact artifact = (Artifact) i.next();
+
+            // before we try to download a missing dependency we have to verify
+            // that the dependency is not of the type Artifact.OVERRIDE_PATH,
+            // in which case it can not be downloaded. Just skip this iteration.
+            // Since the dependency won't get removed from the failedDependencies list
+            // an error message will be created.
+            String overrideType = artifact.getOverrideType();
+            if ( Artifact.OVERRIDE_PATH.equals( overrideType ) )
+            {
+                continue;
+            }
+
+            // The directory structure for the project this dependency belongs to
+            // may not exists so attempt to create the project directory structure
+            // before attempting to download the dependency.
+            File directory = artifact.getFile().getParentFile();
+
+            if ( !directory.exists() )
+            {
+                directory.mkdirs();
+            }
+
+            log.info( getMessage( "download.message", artifact.getName() ) );
+
+            if ( getRemoteArtifact( artifact ) )
+            {
+                // The dependency has been successfully downloaded so lets remove
+                // it from the failed dependency list.
+                i.remove();
+            }
+            else
+            {
+                if ( artifact.exists() )
+                {
+                    // The snapshot jar locally exists and not in remote repository
+                    String message = getMessage( "not.existing.artifact.in.repo", artifact.getUrlPath() );
+                    log.info( message );
+                    i.remove();
+                }
+                else
+                {
+                    String warning = getMessage( "failed.download.warning", artifact.getName() );
+                    log.warn( warning );
+                }
+            }
+        }
+    }
+
+    /**
+     * Retrieve a <code>remoteFile</code> from the maven remote repositories
+     * and store it at <code>localFile</code>
+     * @param artifact the artifact to retrieve from the repositories.
+     * @return true if the retrieval succeeds, false otherwise.
+     * @throws ChecksumVerificationException If checksums don't match.
+     */
+    private boolean getRemoteArtifact( Artifact artifact )
+        throws ChecksumVerificationException
+    {
+        boolean artifactFound = false;
+
+        MavenJellyContext context = getProject().getContext();
+
+        ProxyInfo proxyInfo = null;
+        if ( context.getProxyHost() != null )
+        {
+            proxyInfo = new ProxyInfo();
+            proxyInfo.setHost( context.getProxyHost() );
+            try
+            {
+                proxyInfo.setPort( Integer.valueOf( context.getProxyPort() ).intValue() );
+            }
+            catch ( NumberFormatException e )
+            {
+                log.warn( "Ignoring invalid proxy port: '" + context.getProxyPort() + "'" );
+            }
+            proxyInfo.setUserName( context.getProxyUserName() );
+            proxyInfo.setPassword( context.getProxyPassword() );
+            proxyInfo.setNonProxyHosts( (String) context.getVariable( MavenConstants.PROXY_NONPROXYHOSTS ) );
+            proxyInfo.setNtlmHost( (String) context.getVariable( MavenConstants.PROXY_NTLM_HOST ) );
+            proxyInfo.setNtlmDomain( (String) context.getVariable( MavenConstants.PROXY_NTLM_DOMAIN ) );
+        }
+
+        String meterType = (String) context.getVariable( MavenConstants.DOWNLOAD_METER );
+        if ( meterType == null )
+        {
+            meterType = "console";
+        }
+
+        TransferListener listener = null;
+
+        if ( "bootstrap".equals( meterType ) )
+        {
+            listener = new BootstrapDownloadMeter();
+        }
+        else if ( "console".equals( meterType ) )
+        {
+            listener = new ConsoleDownloadMeter();
+        }
+
+        int count = 0;
+
+        for ( Iterator i = context.getMavenRepoRemote().iterator(); i.hasNext(); count++ )
+        {
+            String remoteRepo = (String) i.next();
+
+            Repository repository = new Repository( "repo" + count, remoteRepo.trim() );
+
+            final Wagon wagon = new DefaultWagonFactory().getWagon( repository.getProtocol() );
+
+            if ( listener != null )
+            {
+                wagon.addTransferListener( listener );
+            }
+
+            ChecksumObserver md5ChecksumObserver = null;
+            ChecksumObserver sha1ChecksumObserver = null;
+            try
+            {
+                md5ChecksumObserver = new ChecksumObserver( "MD5" );
+                wagon.addTransferListener( md5ChecksumObserver );
+
+                sha1ChecksumObserver = new ChecksumObserver( "SHA-1" );
+                wagon.addTransferListener( sha1ChecksumObserver );
+            }
+            catch ( NoSuchAlgorithmException e )
+            {
+                throw new ChecksumVerificationException( "Unable to add checksum methods: " + e.getMessage(), e );
+            }
+
+            File destination = artifact.getFile();
+            String remotePath = artifact.getUrlPath();
+            File temp = new File( destination + ".tmp" );
+            temp.deleteOnExit();
+            boolean downloaded = false;
+
+            try
+            {
+                wagon.connect( repository, proxyInfo );
+
+                boolean firstRun = true;
+                boolean retry = true;
+
+                // this will run at most twice. The first time, the firstRun flag is turned off, and if the retry flag
+                // is set on the first run, it will be turned off and not re-set on the second try. This is because the
+                // only way the retry flag can be set is if ( firstRun == true ).
+                while ( firstRun || retry )
+                {
+                    // reset the retry flag.
+                    retry = false;
+
+                    downloaded = wagon.getIfNewer( remotePath, temp, destination.lastModified() );
+                    if ( !downloaded && firstRun )
+                    {
+                        log.info( getMessage( "skip.download.message" ) );
+                    }
+
+                    if ( downloaded )
+                    {
+                        // keep the checksum files from showing up on the download monitor...
+                        if ( listener != null )
+                        {
+                            wagon.removeTransferListener( listener );
+                        }
+
+                        // try to verify the MD5 checksum for this file.
+                        try
+                        {
+                            verifyChecksum( md5ChecksumObserver, destination, temp, remotePath, ".md5", wagon );
+                        }
+                        catch ( ChecksumVerificationException e )
+                        {
+                            // if we catch a ChecksumVerificationException, it means the transfer/read succeeded, but the checksum
+                            // doesn't match. This could be a problem with the server (ibiblio HTTP-200 error page), so we'll
+                            // try this up to two times. On the second try, we'll handle it as a bona-fide error, based on the
+                            // repository's checksum checking policy.
+                            if ( firstRun )
+                            {
+                                log.warn( "*** CHECKSUM FAILED - " + e.getMessage() + " - RETRYING" );
+                                retry = true;
+                            }
+                            else
+                            {
+                                throw new ChecksumVerificationException( e.getMessage(), e.getCause() );
+                            }
+                        }
+                        catch ( ResourceDoesNotExistException md5TryException )
+                        {
+                            log.debug( "MD5 not found, trying SHA1", md5TryException );
+
+                            // if this IS NOT a ChecksumVerificationException, it was a problem with transfer/read of the checksum
+                            // file...we'll try again with the SHA-1 checksum.
+                            try
+                            {
+                                verifyChecksum( sha1ChecksumObserver, destination, temp, remotePath, ".sha1", wagon );
+                            }
+                            catch ( ChecksumVerificationException e )
+                            {
+                                // if we also fail to verify based on the SHA-1 checksum, and the checksum transfer/read
+                                // succeeded, then we need to determine whether to retry or handle it as a failure.
+                                if ( firstRun )
+                                {
+                                    retry = true;
+                                }
+                                else
+                                {
+                                    throw new ChecksumVerificationException( e.getMessage(), e.getCause() );
+                                }
+                            }
+                            catch ( ResourceDoesNotExistException sha1TryException )
+                            {
+                                // this was a failed transfer, and we don't want to retry.
+                                throw new ChecksumVerificationException( "Error retrieving checksum file for "
+                                    + remotePath, sha1TryException );
+                            }
+                        }
+                    }
+
+                    // Artifact was found, continue checking additional remote repos (if any)
+                    // in case there is a newer version (i.e. snapshots) in another repo
+                    artifactFound = true;
+
+                    if ( !artifact.isSnapshot() )
+                    {
+                        break;
+                    }
+
+                    // reinstate the download monitor...
+                    if ( listener != null )
+                    {
+                        wagon.addTransferListener( listener );
+                    }
+
+                    // unset the firstRun flag, so we don't get caught in an infinite loop...
+                    firstRun = false;
+                }
+
+            }
+            catch ( ResourceDoesNotExistException e )
+            {
+                // Multiple repositories may exist, and if the file is not found
+                // in just one of them, it's no problem, and we don't want to
+                // even print out an error.
+                // if it's not found at all, artifactFound will be false, and the
+                // build _will_ break, and the user will get an error message
+                log.debug( "File not found on one of the repos", e );
+            }
+            catch ( Exception e )
+            {
+                // If there are additional remote repos, then ignore exception
+                // as artifact may be found in another remote repo. If there
+                // are no more remote repos to check and the artifact wasn't found in
+                // a previous remote repo, then artifactFound is false indicating
+                // that the artifact could not be found in any of the remote repos
+                //
+                // arguably, we need to give the user better control (another command-
+                // line switch perhaps) of what to do in this case? Maven already has
+                // a command-line switch to work in offline mode, but what about when
+                // one of two or more remote repos is unavailable? There may be multiple
+                // remote repos for redundancy, in which case you probably want the build
+                // to continue. There may however be multiple remote repos because some
+                // artifacts are on one, and some are on another. In this case, you may
+                // want the build to break.
+                //
+                // print a warning, in any case, so user catches on to mistyped
+                // hostnames, or other snafus
+                // FIXME: localize this message
+                log.warn( "Error retrieving artifact from [" + repository.getUrl() + "]: " + e );
+                log.debug( "Error details", e );
+            }
+            finally
+            {
+                try
+                {
+                    wagon.disconnect();
+                }
+                catch ( ConnectionException e )
+                {
+                    log.debug( "Error disconnecting wagon", e );
+                }
+            }
+
+            if ( !temp.exists() && downloaded )
+            {
+                log.debug( "Downloaded file does not exist: " + temp );
+                artifactFound = false;
+            }
+
+            // The temporary file is named destination + ".tmp" and is done this way to ensure
+            // that the temporary file is in the same file system as the destination because the
+            // File.renameTo operation doesn't really work across file systems.
+            // So we will attempt to do a File.renameTo for efficiency and atomicity, if this fails
+            // then we will use a brute force copy and delete the temporary file.
+
+            if ( !temp.renameTo( destination ) && downloaded )
+            {
+                try
+                {
+                    FileUtils.copyFile( temp, destination );
+                    temp.delete();
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "Error copying temporary file to the final destination: " + e.getMessage() );
+                    artifactFound = false;
+                }
+            }
+
+            // don't try another repo if artifact has been found
+            if ( artifactFound )
+            {
+                break;
+            }
+
+        }
+
+        return artifactFound;
+    }
+
+    /**
+     * Creates Wagons. Replace it with a IoC container?
+     */
+    private static class DefaultWagonFactory
+    {
+
+        private final Map map = new HashMap();
+
+        public DefaultWagonFactory()
+        {
+            map.put( "http", HttpWagon.class );
+            map.put( "https", HttpWagon.class );
+            map.put( "sftp", SftpWagon.class );
+            map.put( "file", FileWagon.class );
+        }
+
+        public final Wagon getWagon( final String protocol )
+        {
+            // TODO: don't initialise the wagons all the time - use a session
+            Wagon ret;
+            final Class aClass = (Class) map.get( protocol );
+            if ( aClass == null )
+            {
+                log.info( "Unknown protocol: `" + protocol + "'. Trying file wagon" );
+                ret = new FileWagon();
+            }
+            else
+            {
+                try
+                {
+                    ret = (Wagon) aClass.newInstance();
+                }
+                catch ( final Exception e )
+                {
+                    throw new RuntimeException( e );
+                }
+            }
+
+            return ret;
+        }
+    }
+
+    // ----------------------------------------------------------------------
+    // V E R I F I C A T I O N
+    // ----------------------------------------------------------------------
+
+    /**
+     * Rules for verifying the checksum.
+     *
+     * We attempt to download artifacts and their accompanying md5 checksum
+     * files.
+     */
+    private void verifyChecksum( ChecksumObserver checksumObserver, File destination, File tempDestination,
+                                 String remotePath, String checksumFileExtension, Wagon wagon )
+        throws ResourceDoesNotExistException, TransferFailedException, AuthorizationException,
+        ChecksumVerificationException
+    {
+        try
+        {
+            // grab it first, because it's about to change...
+            String actualChecksum = checksumObserver.getActualChecksum();
+
+            File tempChecksumFile = new File( tempDestination + checksumFileExtension + ".tmp" );
+            tempChecksumFile.deleteOnExit();
+            wagon.get( remotePath + checksumFileExtension, tempChecksumFile );
+
+            String expectedChecksum = FileUtils.fileRead( tempChecksumFile );
+
+            // remove whitespaces at the end
+            expectedChecksum = expectedChecksum.trim();
+
+            // check for 'MD5 (name) = CHECKSUM'
+            if ( expectedChecksum.startsWith( "MD5" ) )
+            {
+                int lastSpacePos = expectedChecksum.lastIndexOf( ' ' );
+                expectedChecksum = expectedChecksum.substring( lastSpacePos + 1 );
+            }
+            else
+            {
+                // remove everything after the first space (if available)
+                int spacePos = expectedChecksum.indexOf( ' ' );
+
+                if ( spacePos != -1 )
+                {
+                    expectedChecksum = expectedChecksum.substring( 0, spacePos );
+                }
+            }
+            if ( expectedChecksum.equals( actualChecksum ) )
+            {
+                File checksumFile = new File( destination + checksumFileExtension );
+                if ( checksumFile.exists() )
+                {
+                    checksumFile.delete();
+                }
+                FileUtils.copyFile( tempChecksumFile, checksumFile );
+            }
+            else
+            {
+                throw new ChecksumVerificationException( "Checksum failed on download: local = '" + actualChecksum
+                    + "'; remote = '" + expectedChecksum + "'" );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new ChecksumVerificationException( "Invalid checksum file", e );
+        }
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,84 @@
+package org.apache.maven.verifier;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import org.apache.maven.AbstractMavenComponent;
+import org.apache.maven.project.Project;
+
+/**
+ * Verify the integrity of the local repository.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: LocalSettingsVerifier.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class LocalSettingsVerifier
+    extends AbstractMavenComponent
+{
+    /**
+     * Default constructor.
+     * @param project the project to verify
+     */
+    public LocalSettingsVerifier( Project project )
+    {
+        super( project );
+    }
+
+    /**
+     * Verify user settings before attempting to verify the project.
+     *
+     * @throws RepoConfigException If an error occurs while trying to verify some basic
+     * maven settings.
+     */
+    public void verifyLocalRepository()
+        throws RepoConfigException
+    {
+        // Get local repo property.
+        String localRepoProp = getProject().getContext().getMavenRepoLocal();
+
+        if ( localRepoProp == null )
+        {
+            // This is not likely to happen any more as it defaults
+            // to ${maven.home}/repository which is set in the driver.properties
+            throw new RepoConfigException( getMessage( "maven.repo.local.unset" ) );
+        }
+
+        File localRepo = new File( localRepoProp );
+
+        if ( !localRepo.exists() )
+        {
+            System.err.println( getMessage( "directory.nonexistant.warning", localRepo ) );
+
+            if ( !localRepo.mkdirs() )
+            {
+                throw new RepoConfigException( getMessage( "cannot.create.directory.warning", localRepo ) );
+            }
+        }
+
+        if ( !localRepo.isDirectory() )
+        {
+            throw new RepoConfigException( getMessage( "not.directory.warning", localRepo ) );
+        }
+
+        if ( !localRepo.canWrite() )
+        {
+            throw new RepoConfigException( getMessage( "not.writable.warning", localRepo ) );
+        }
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/RepoConfigException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/RepoConfigException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/RepoConfigException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,38 @@
+package org.apache.maven.verifier;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.MavenException;
+
+/** Specialized repository configuration exception.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @version $Id: RepoConfigException.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class RepoConfigException
+    extends MavenException
+{
+    /**
+     * Constructs a RepoConfigException with the specified detail message.
+     * @param msg the detail message.
+     */
+    public RepoConfigException( String msg )
+    {
+        super( msg );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+package org.apache.maven.verifier;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.maven.MavenException;
+
+/**
+ * Specialized unsatisfied dependency exception.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id: UnsatisfiedDependencyException.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class UnsatisfiedDependencyException
+    extends MavenException
+{
+    /**
+     * Constructs a UnsatisfiedDependencyException with the specified detail message.
+     * @param message Detailed message.
+     */
+    public UnsatisfiedDependencyException( String message )
+    {
+        super( message );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/verifier/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<html>
+<head>
+  <title>org.apache.maven.verifier</title>
+</head>
+<body>
+  <p>Code that verifies Maven configuration details.</p>
+</body>
+</html>

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Action.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Action.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Action.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,116 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: Action.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Interface for goal-satisfying actions.
+ *
+ *  @see Goal
+ *  @see Goal#setAction
+ *  @see DefaultAction
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public interface Action
+{
+    /** Determine if this <code>Action</code>'s {@link #performAction} method
+     *  should be invoked.
+     *  
+     *  <p>
+     *  This method is called after this <code>Goal</code>'s prerequisites
+     *  have been completely satisfied, and immediately before the possibility
+     *  of invoking <code>performAction()</code>.
+     *  </p>
+     *
+     *  <p>
+     *  If this method returns <code>true</code>, then this <code>Goal</code>'s
+     *  <code>performAction()</code> will be called in order to satisfy this
+     *  <code>Goal</code>.  If this method returns <code>false</code>, then
+     *  this <code>Goal</code> is considered satisfied without invoking the
+     *  <code>performAction()</code> method.
+     *  </p>
+     *
+     *  <p>
+     *  This method is the location to implement intra-goal dependency-checking.
+     *  </p>
+     *
+     *  @see #performAction
+     *
+     *  @return <code>true</code> if this <code>Goal</code>'s <code>performAction()</code>
+     *          method should be immediately invoked, otherwise <code>false</code>.
+     */
+    boolean requiresAction();
+
+    /** Perform the action required to satisfy the <code>Goal</code>.
+     *
+     *  <p>
+     *  Once all prerequisites have been satisfied, the <code>Goal</code>'s
+     *  <code>performAction()</code> method may be invoked, depending on
+     *  the return value of {@link #requiresAction}, in order to satisfy
+     *  this <code>Goal</code>.
+     *
+     *  @throws Exception if an errors occurs during execution.
+     */
+    void performAction( Session session )
+        throws Exception;
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Action.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Callback.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Callback.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Callback.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,137 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: Callback.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Convenience class providing no-op implementations of all
+ *  four callbacks.
+ *
+ *  @see PreGoalCallback
+ *  @see PostGoalCallback
+ *  @see PreActionCallback
+ *  @see PostActionCallback
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class Callback
+    implements PreGoalCallback, PostGoalCallback, PreActionCallback, PostActionCallback
+{
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct.
+     */
+    public Callback()
+    {
+        // intentionally left blank
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** No-op <b>pre-goal</b> callback implementation.
+     *
+     *  @see PreGoalCallback
+     *
+     *  @param goal Goal performing the callback.
+     */
+    public void firePreGoal( Goal goal )
+    {
+        // intentionally left blank.
+    }
+
+    /** No-op <b>post-goal</b> callback implementation.
+     *
+     *  @see PostGoalCallback
+     *
+     *  @param goal Goal performing the callback.
+     */
+    public void firePostGoal( Goal goal )
+    {
+        // intentionally left blank.
+    }
+
+    /** No-op <b>pre-action</b> callback implementation.
+     *
+     *  @see PreActionCallback
+     *
+     *  @param goal Goal performing the callback.
+     */
+    public void firePreAction( Goal goal )
+    {
+        // intentionally left blank
+    }
+
+    /** No-op <b>post-action</b> callback implementation.
+     *
+     *  @see PostActionCallback
+     *
+     *  @param goal Goal performing the callback.
+     */
+    public void firePostAction( Goal goal )
+    {
+        // intentionally left blank
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Callback.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/CyclicGoalChainException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/CyclicGoalChainException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/CyclicGoalChainException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,114 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: CyclicGoalChainException.java 426251 2006-07-27 21:23:33Z ltheussl $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Indicates a dependency cycle within the <code>Goal</code> graph.
+ *
+ *  @see Goal
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class CyclicGoalChainException
+    extends WerkzException
+{
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** The initial goal from which the cycle-check was initiated. */
+    private Goal initialGoal;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Constrct with an initiating goal.
+     *
+     *  @param initialGoal The <code>Goal</code> which initiated
+     *         the cycle check.
+     */
+    public CyclicGoalChainException( Goal initialGoal )
+    {
+        this.initialGoal = initialGoal;
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Retrieve the <code>Goal</code> which initiated the
+     *  dependency cycle check.
+     *
+     *  @return The initiating <code>Goal</code>.
+     */
+    public Goal getInitialGoal()
+    {
+        return this.initialGoal;
+    }
+
+    public String getMessage()
+    {
+        return "A cycle has been detected from the initial goal [" + getInitialGoal().getName() + "]";
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/CyclicGoalChainException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/DefaultAction.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/DefaultAction.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/DefaultAction.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,111 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: DefaultAction.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Abstract convenience <code>Action</code> implementation.
+ *
+ *  <p>
+ *  <code>DefaultAction</code> is simply a partial implementation
+ *  of <code>Action</code> where {@link #requiresAction} returns
+ *  <code>true</code>.
+ *  </p>
+ *
+ *  <p>
+ *  It is abstract in that it not provide an implementation for
+ *  {@link Action#performAction}.
+ *  </p>
+ *
+ *  @see Action
+ *  @see Action#requiresAction
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public abstract class DefaultAction
+    implements Action
+{
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct.
+     */
+    public DefaultAction()
+    {
+        // intentionally left blank
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Determine if this <code>Action</code> requies
+     *  actual effort.
+     *
+     *  @return <code>true</code> in all cases.
+     */
+    public boolean requiresAction()
+    {
+        return true;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/DefaultAction.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Goal.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Goal.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Goal.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,804 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: Goal.java 424476 2006-07-21 22:20:02Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/** Abstract Goal to attain.
+ *
+ *  <p>
+ *  A <code>Goal</code> embodies both an action and the
+ *  precursors for that action. A <code>Goal</code>'s
+ *  precursors will be satisfied before attempting to
+ *  perform the target <code>Goal</code>'s action.  There
+ *  may be a case that once precursors have been satisfied
+ *  there is no further action required to be perform for
+ *  a particular <code>Goal</code>.
+ *  </p>
+ * 
+ * <p>
+ * A <code>Goal</code>'s postcursors are also tracked
+ * so that if a <code>Goal</code>'s state has been changed
+ * and the <code>Goal</code>s ahead of it in the hierarchy 
+ * need to be notified, it can <code>percolate</code> forward
+ * and have it's postcursors satisfied.
+ * </p>
+ * 
+ *  @see WerkzProject
+ *  @see Action
+ *  
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class Goal
+{
+    // ------------------------------------------------------------
+    //     Constants
+    // ------------------------------------------------------------
+
+    /** Empty <code>Goal</code> array. */
+    public static final Goal[] EMPTY_ARRAY = new Goal[0];
+
+    // ------------------------------------------------------------
+    //     Class members
+    // ------------------------------------------------------------
+
+    /** Unique name. */
+    private String name;
+
+    /** Ordered list of precursor <code>Goal</code>s. */
+    private List precursors;
+
+    /** Ordered list of postcursor <code>Goal</code>s. */
+    private List postcursors;
+
+    /** Action to perform. */
+    private Action action;
+
+    /** Pre-goal callbacks. */
+    private List preGoalCallbacks;
+
+    /** Post-goal callbacks. */
+    private List postGoalCallbacks;
+
+    /** Pre-action callbacks. */
+    private List preActionCallbacks;
+
+    /** Post-action callbacks. */
+    private List postActionCallbacks;
+
+    /** Description of the goal (for auto-documenting). */
+    private String description;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct a new <code>Goal</code> with the specified name.
+     *
+     *  @param name The name of the <code>Goal</code>.
+     */
+    public Goal( String name )
+    {
+        this.name = name;
+        this.precursors = Collections.EMPTY_LIST;
+        this.postcursors = Collections.EMPTY_LIST;
+
+        this.preGoalCallbacks = Collections.EMPTY_LIST;
+        this.postGoalCallbacks = Collections.EMPTY_LIST;
+        this.preActionCallbacks = Collections.EMPTY_LIST;
+        this.postActionCallbacks = Collections.EMPTY_LIST;
+    }
+
+    /** Construct a new <code>Goal</code> with the specified name
+     *  and <code>Action</code>.
+     *
+     *  @param name The name of the <code>Goal</code>.
+     *  @param action The <code>Action</code> for this <code>Goal</code>.
+     */
+    public Goal( String name, Action action )
+    {
+        this( name );
+
+        setAction( action );
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Retrieve the name of this <code>Goal</code>.
+     *
+     *  @return This <code>Goal</code>'s name.
+     */
+    public String getName()
+    {
+        return this.name;
+    }
+
+    /** Retrieve the description of this <code>Goal</code>.
+     *
+     *  @return The description of this goal.
+     */
+    public String getDescription()
+    {
+        return this.description;
+    }
+
+    /** Set the description for this <code>Goal</code>.
+     *
+     *  @param description The description of this goal.
+     */
+    public void setDescription( String description )
+    {
+        this.description = description;
+    }
+
+    /** Retrieve the <code>Action</code> of this <code>Goal</code>.
+     *
+     *  @return The <code>Action</code> of this <code>Goal</code>.
+     */
+    public Action getAction()
+    {
+        return this.action;
+    }
+
+    /** Set the <code>Action</code> of this <code>Goal</code>.
+     *
+     *  @param action The <code>Action</code> of this <code>Goal</code>.
+     */
+    public void setAction( Action action )
+    {
+        this.action = action;
+    }
+
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+    //     PRE GOAL
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+
+    /** Add a <b>pre-goal</b> callback to this <code>Goal</code>.
+     *
+     *  @param callback The callback to add.
+     */
+    public void addPreGoalCallback( PreGoalCallback callback )
+    {
+        if ( Collections.EMPTY_LIST.equals( this.preGoalCallbacks ) )
+        {
+            this.preGoalCallbacks = new ArrayList( 3 );
+        }
+
+        this.preGoalCallbacks.add( callback );
+    }
+
+    /** Remove all occurences of a <b>pre-goal</b> callback from this <code>Goal</code>.
+     *
+     *  @param callback The callback to remove.
+     */
+    public void removePreGoalCallback( PreGoalCallback callback )
+    {
+        while ( this.preGoalCallbacks.remove( callback ) )
+        {
+            // intentionally left blank;
+        }
+    }
+
+    /** Retrieve an unmodifiable list of the <b>pre-goal</b> callbacks.
+     *
+     *  @return An unmodifiable <code>List</code> of <code>PreGoalCallback</code>s.
+     */
+    public List getPreGoalCallbacks()
+    {
+        return Collections.unmodifiableList( this.preGoalCallbacks );
+    }
+
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+    //     POST GOAL
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+
+    /** Add a <b>post-goal</b> callback to this <code>Goal</code>.
+     *
+     *  @param callback The callback to add.
+     */
+    public void addPostGoalCallback( PostGoalCallback callback )
+    {
+        if ( Collections.EMPTY_LIST.equals( this.postGoalCallbacks ) )
+        {
+            this.postGoalCallbacks = new ArrayList( 3 );
+        }
+
+        this.postGoalCallbacks.add( callback );
+    }
+
+    /** Remove all occurences of a <b>post-goal</b> callback from this <code>Goal</code>.
+     *
+     *  @param callback The callback to remove.
+     */
+    public void removePostGoalCallback( PostGoalCallback callback )
+    {
+        while ( this.postGoalCallbacks.remove( callback ) )
+        {
+            // intentionally left blank;
+        }
+    }
+
+    /** Retrieve an unmodifiable list of the <b>post-goal</b> callbacks.
+     *
+     *  @return An unmodifiable <code>List</code> of <code>PostGoalCallback</code>s.
+     */
+    public List getPostGoalCallbacks()
+    {
+        return Collections.unmodifiableList( this.postGoalCallbacks );
+    }
+
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+    //     PRE ACTION
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+
+    /** Add a <b>pre-action</b> callback to this <code>Goal</code>.
+     *
+     *  @param callback The callback to add.
+     */
+    public void addPreActionCallback( PreActionCallback callback )
+    {
+        if ( this.preActionCallbacks.equals( Collections.EMPTY_LIST ) )
+        {
+            this.preActionCallbacks = new ArrayList( 3 );
+        }
+
+        this.preActionCallbacks.add( callback );
+    }
+
+    /** Remove all occurences of a <b>pre-action</b> callback from this <code>Goal</code>.
+     *
+     *  @param callback The callback to remove.
+     */
+    public void removePreActionCallback( PreActionCallback callback )
+    {
+        while ( this.preActionCallbacks.remove( callback ) )
+        {
+            // intentionally left blank;
+        }
+    }
+
+    /** Retrieve an unmodifiable list of the <b>pre-action</b> callbacks.
+     *
+     *  @return An unmodifiable <code>List</code> of <code>PreActionCallback</code>s.
+     */
+    public List getPreActionCallbacks()
+    {
+        return Collections.unmodifiableList( this.preActionCallbacks );
+    }
+
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+    //     POST ACTION
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+
+    /** Add a <b>post-action</b> callback to this <code>Goal</code>.
+     *
+     *  @param callback The callback to add.
+     */
+    public void addPostActionCallback( PostActionCallback callback )
+    {
+        if ( this.postActionCallbacks.equals( Collections.EMPTY_LIST ) )
+        {
+            this.postActionCallbacks = new ArrayList( 3 );
+        }
+
+        this.postActionCallbacks.add( callback );
+    }
+
+    /** Remove all occurences of a <b>post-action</b> callback from this <code>Goal</code>.
+     *
+     *  @param callback The callback to remove.
+     */
+    public void removePostActionCallback( PostActionCallback callback )
+    {
+        while ( this.postActionCallbacks.remove( callback ) )
+        {
+            // intentionally left blank;
+        }
+    }
+
+    /** Retrieve an unmodifiable list of the <b>post-action</b> callbacks.
+     *
+     *  @return An unmodifiable <code>List</code> of <code>PostActionCallback</code>s.
+     */
+    public List getPostActionCallbacks()
+    {
+        return Collections.unmodifiableList( this.postActionCallbacks );
+    }
+
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+
+    /** Determine if this <code>Goal</code> has been satisfied
+     *  for the specified <code>Session</code>.
+     *
+     *  @param session The <code>Session</code> context in which
+     *         to test for goal satisfaction.
+     *
+     *  @return <code>true</code> if this <code>Goal</code> has been
+     *          satisfied within the <code>Session</code>, otherwise
+     *          <code>false</code>.
+     */
+    public boolean isSatisfied( Session session )
+    {
+        return session.isGoalSatisfied( this );
+    }
+
+    /** Add a precursor <code>Goal</code> to this <code>Goal</code>.
+     *
+     *  @param precursor The precursor <code>Goal</code> that must
+     *         be satisfied before performing this <code>Goal</code>.
+     *
+     *  @throws CyclicGoalChainException if adding the precursor would
+     *          result in a cyclic dependency.
+     */
+    public void addPrecursor( Goal precursor )
+        throws CyclicGoalChainException
+    {
+        if ( Collections.EMPTY_LIST.equals( this.precursors ) )
+        {
+            this.precursors = new ArrayList();
+        }
+
+        this.precursors.add( precursor );
+
+        try
+        {
+            checkForCycles();
+
+            precursor.addInternalPostcursor( this );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            e.fillInStackTrace();
+            this.precursors.remove( precursor );
+            throw e;
+        }
+    }
+
+    /** Add a postcursor <code>Goal</code> to this <code>Goal</code>.
+     *
+     * @param postcursor The postcursor <code>Goal</code> that 
+     *      depends on this <code>Goal</code>.
+     *
+     * @throws CyclicGoalChainException if adding the postcursor would
+     *      result in a cyclic dependency.
+     */
+    public void addPostcursor( Goal postcursor )
+        throws CyclicGoalChainException
+    {
+        postcursor.addPrecursor( this );
+    }
+
+    /** Adds a postcursor <code>Goal</code> without looping back to the 
+     * <code>postcursor.addPrecursor</code> and entering an infinite loop.
+     * 
+     * @param postcursor The postcursor <code>Goal</code> that is already
+     *      tracking this <code>Goal</goal> as a precursor and is letting this 
+     *      <code>Goal</code> know that it is a postcursor.
+     */
+    private void addInternalPostcursor( Goal postcursor )
+    {
+        if ( Collections.EMPTY_LIST.equals( this.postcursors ) )
+        {
+            this.postcursors = new ArrayList();
+        }
+
+        this.postcursors.add( postcursor );
+    }
+
+    /** Retrieve an unmodifiable <code>List</code> of this <code>Goal</code>'s
+     *  precursor <code>Goal</code>s.
+     *
+     *  @return The <code>List<code> of precursor <code>Goal</code>s.
+     */
+    public List getPrecursors()
+    {
+        return Collections.unmodifiableList( this.precursors );
+    }
+
+    /** Retrive an unmodifiable <code>List</code> of this <code>Goal</code>'s
+     * postcursor <code>Goal</code>s.
+     * 
+     * @return The <code>List</code> of postcursor <code>Goal</code>s.
+     */
+    public List getPostcursors()
+    {
+        return Collections.unmodifiableList( this.postcursors );
+    }
+
+    /** Attempt to attain this <code>Goal</code>'s precursor <code>Goal</code>s.
+     *
+     *  @param session The context in which to attain goals.
+     *
+     *  @throws UnattainableGoalException if unable to satisfy a precursor.
+     *  @throws NoActionDefinitionException if this goal contains no action definition.
+     */
+    void attainPrecursors( Session session )
+        throws UnattainableGoalException, NoActionDefinitionException
+    {
+        Iterator precursorIter = getPrecursors().iterator();
+        Goal eachPrereq = null;
+
+        while ( precursorIter.hasNext() )
+        {
+            eachPrereq = (Goal) precursorIter.next();
+
+            eachPrereq.attain( session );
+        }
+    }
+
+    /** Attempt to attain this <code>Goal</code>'s postcursor <code>Goal</code>s.
+     * 
+     * @param session The context in which to attain goals.
+     * 
+     * @throws UnattainableGoalException if unable to satisfy a postcursor.
+     * @throws NoActionDefinitionException if this goal contains no action definition.
+     */
+    void percolatePostcursors( Session session )
+        throws UnattainableGoalException, NoActionDefinitionException
+    {
+        Iterator postreqIter = getPostcursors().iterator();
+        Goal eachPostreq = null;
+
+        while ( postreqIter.hasNext() )
+        {
+            eachPostreq = (Goal) postreqIter.next();
+
+            eachPostreq.percolate( session );
+        }
+    }
+
+    /** Perform a cyclic dependency check.
+     *
+     *  @throws CyclicGoalChainException if a dependency cycle is discovered.
+     */
+    void checkForCycles()
+        throws CyclicGoalChainException
+    {
+        Set visited = new HashSet();
+
+        checkForCycles( this, visited );
+    }
+
+    /** Perform a cyclic dependency check.
+     *
+     *  @param initialGoal The root <code>Goal</code> initiating the cycle check.
+     *  @param visited The <code>Set</code> of all <code>Goal</code>s visited
+     *         between the root <code>initialGoal</code> and this <code>Goal</code>.
+     *
+     *  @throws CyclicGoalChainException if a cyclic dependency is detected.
+     */
+    void checkForCycles( Goal initialGoal, Set visited )
+        throws CyclicGoalChainException
+    {
+        if ( visited.contains( this ) )
+        {
+            throw new CyclicGoalChainException( initialGoal );
+        }
+
+        visited.add( this );
+
+        Iterator precursorIter = getPrecursors().iterator();
+        Goal eachPrereq = null;
+
+        while ( precursorIter.hasNext() )
+        {
+            eachPrereq = (Goal) precursorIter.next();
+
+            eachPrereq.checkForCycles( initialGoal, new HashSet( visited ) );
+        }
+    }
+
+    /** Attempt to attain this <code>Goal</code>.
+     *
+     *  @param session The context in which to attain goals.
+     *
+     *  @throws UnattainableGoalException if unable to attain this <code>Goal</code>
+     *          or one of its precursor <code>Goal</code>s.
+     *  @throws NoActionDefinitionException if this goal contains no action definition.
+     */
+    public final void attain( Session session )
+        throws UnattainableGoalException, NoActionDefinitionException
+    {
+        if ( session.isGoalSatisfied( this ) )
+        {
+            // session.info( getName() + ":" );
+            // session.info( "" );
+            return;
+        }
+
+        // session.info( getName() + ": checking precursors." );
+
+        attainPrecursors( session );
+
+        fire( session );
+    }
+
+    /** Attempt to percolate this <code>Goal</code> through to its Postcursors.
+     *
+     *  @param session The context in which to percolate goals.
+     *
+     *  @throws UnattainableGoalException if unable to attain this <code>Goal</code>
+     *          or one of its precursor <code>Goal</code>s.
+     *  @throws NoActionDefinitionException if this goal contains no action definition.
+     */
+    public final void percolate( Session session )
+        throws UnattainableGoalException, NoActionDefinitionException
+    {
+        if ( session.isGoalSatisfied( this ) )
+        {
+            return;
+        }
+
+        fire( session );
+
+        percolatePostcursors( session );
+    }
+
+    /** Fires pre-goal callbacks, the <code>Goal</code>'s action, if need be, and 
+     * the post-goal callbacks.
+     *
+     *  @param session The context in which to fire the goal.
+     *
+     *  @throws UnattainableGoalException if unable to attain this <code>Goal</code>
+     *          or one of its precursor <code>Goal</code>s.
+     *  @throws NoActionDefinitionException if this goal contains no action definition.
+     */
+    private final void fire( Session session )
+        throws UnattainableGoalException, NoActionDefinitionException
+    {
+        session.info( getName() + ":" );
+
+        // log.info( "begin goal" );
+
+        try
+        {
+            // session.info( getName() + ": firing pre-goal callbacks." );
+            firePreGoalCallbacks();
+        }
+        catch ( Exception e )
+        {
+            throw new UnattainableGoalException( getName(), e );
+        }
+
+        Action action = getAction();
+
+        if ( action == null )
+        {
+            throw new NoActionDefinitionException( this );
+        }
+
+        if ( action.requiresAction() )
+        {
+            try
+            {
+                // session.info( getName() + ": firing pre-action callbacks." );
+                // log.info( "begin action" );
+                firePreActionCallbacks();
+                // session.info( getName() + ": firing goal action." );
+                getAction().performAction( session );
+                // session.info( getName() + ": firing post-action callbacks." );
+                firePostActionCallbacks();
+                // log.info( "end action" );
+            }
+            catch ( Exception e )
+            {
+                throw new UnattainableGoalException( getName(), e );
+            }
+        }
+
+        try
+        {
+            // session.info( getName() + ": firing post-goal callbacks." );
+            firePostGoalCallbacks();
+        }
+        catch ( Exception e )
+        {
+            throw new UnattainableGoalException( getName(), e );
+        }
+
+        // log.info( "end goal" );
+
+        // session.info( getName() + ": checking done." );
+
+        session.addSatisfiedGoal( this );
+
+        session.info( "" );
+    }
+
+    /** Fire the pre-goal callbacks.
+     *
+     *  @throws Exception if an error occurs while firing a callback.
+     */
+    void firePreGoalCallbacks()
+        throws Exception
+    {
+        Iterator callbackIter = this.preGoalCallbacks.iterator();
+        PreGoalCallback eachCallback = null;
+
+        if ( !callbackIter.hasNext() )
+        {
+            return;
+        }
+
+        // log.info( "begin pre-goal callbacks" );
+
+        while ( callbackIter.hasNext() )
+        {
+            eachCallback = (PreGoalCallback) callbackIter.next();
+
+            eachCallback.firePreGoal( this );
+        }
+
+        // log.info( "end pre-goal callbacks" );
+    }
+
+    /** Fire the post-goal callbacks.
+     *
+     *  @throws Exception if an error occurs while firing a callback.
+     */
+    void firePostGoalCallbacks()
+        throws Exception
+    {
+        Iterator callbackIter = this.postGoalCallbacks.iterator();
+        PostGoalCallback eachCallback = null;
+
+        while ( callbackIter.hasNext() )
+        {
+            eachCallback = (PostGoalCallback) callbackIter.next();
+
+            eachCallback.firePostGoal( this );
+        }
+    }
+
+    /** Fire the pre-action callbacks.
+     *
+     *  @throws Exception if an error occurs while firing a callback.
+     */
+    void firePreActionCallbacks()
+        throws Exception
+    {
+        Iterator callbackIter = this.preActionCallbacks.iterator();
+        PreActionCallback eachCallback = null;
+
+        while ( callbackIter.hasNext() )
+        {
+            eachCallback = (PreActionCallback) callbackIter.next();
+
+            eachCallback.firePreAction( this );
+        }
+    }
+
+    /** Fire the post-action callbacks.
+     *
+     *  @throws Exception if an error occurs while firing a callback.
+     */
+    void firePostActionCallbacks()
+        throws Exception
+    {
+        Iterator callbackIter = this.postActionCallbacks.iterator();
+        PostActionCallback eachCallback = null;
+
+        while ( callbackIter.hasNext() )
+        {
+            eachCallback = (PostActionCallback) callbackIter.next();
+
+            eachCallback.firePostAction( this );
+        }
+    }
+
+    // ------------------------------------------------------------
+    //     java.lang.Object implementation
+    // ------------------------------------------------------------
+
+    /** Retrieve the hash-code of this object.
+     *
+     *  <p>
+     *  The hash-code is derrived <b>only</b> from the name of
+     *  the <code>Goal</code> as returned by {@link #getName}.
+     *  </p>
+     *
+     *  @return The hash-code of this object.
+     */
+    public int hashCode()
+    {
+        return getName().hashCode();
+    }
+
+    /** Determine if two <code>Goal</code> objects are 
+     *  equivelant.
+     *
+     *  <p>
+     *  Equivelancy is determined <b>only</b> from the names
+     *  of the <code>Goal</code>s as return by {@link #getName}.
+     *  </p>
+     *
+     *  @param thatObj The object to compare to this object.
+     *
+     *  @return The hash-code of this object.
+     */
+    public boolean equals( Object thatObj )
+    {
+        Goal that = (Goal) thatObj;
+
+        return this.getName().equals( that.getName() );
+    }
+
+    /** Produce a textual representation suitable for debugging.
+     *
+     *  @return A textual representation suitable for debugging.
+     */
+    public String toString()
+    {
+        return "[Goal: name=\"" + getName() + "\"]" + "; precursor=" + getPrecursors() + "]";
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Goal.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoActionDefinitionException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoActionDefinitionException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoActionDefinitionException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,114 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: NoActionDefinitionException.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Indicates an attempt to attain a goal with no action definition.
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class NoActionDefinitionException
+    extends WerkzException
+{
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** The goal. */
+    private Goal goal;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct.
+     *
+     *  @param goal The goal.
+     */
+    public NoActionDefinitionException( Goal goal )
+    {
+        this.goal = goal;
+    }
+
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** Retrieve the goal.
+     *
+     *  @return The goal.
+     */
+    public Goal getGoal()
+    {
+        return this.goal;
+    }
+
+    /** Retrieve the error message.
+     *
+     *  @return The message.
+     */
+    public String getMessage()
+    {
+        return "Goal [" + getGoal().getName() + "] has no action definition.";
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoActionDefinitionException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoSuchGoalException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoSuchGoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoSuchGoalException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,116 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: NoSuchGoalException.java 426251 2006-07-27 21:23:33Z ltheussl $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Indicates a request to attain an unknown <code>Goal</code>.
+ *
+ *  @see Goal#attain
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class NoSuchGoalException
+    extends WerkzException
+{
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** Name of the unknown goal. */
+    private String goalName;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct with the name of the unknown goal.
+     *
+     *  @param goalName The unknown goal name.
+     */
+    public NoSuchGoalException( String goalName )
+    {
+        this.goalName = goalName;
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Retrieve the unknown goal name.
+     *
+     *  @return The unknown goal name.
+     */
+    public String getGoalName()
+    {
+        return this.goalName;
+    }
+
+    /** Retrieve the error message.
+     *
+     *  @return The error message.
+     */
+    public String getMessage()
+    {
+        return "No goal [" + getGoalName() + "]";
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/NoSuchGoalException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostActionCallback.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostActionCallback.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostActionCallback.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,89 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PostActionCallback.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Interface for callbacks that occur after a <code>Goal</code>'s
+ *  action has been executed.
+ *
+ *  <p>
+ *  This callback is only fired if the <code>Goal</code>'s action
+ *  as defined by {@link Action#performAction} was fired.
+ *  </p>
+ *
+ *  @see Goal#attain
+ *  @see Action#performAction
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public interface PostActionCallback
+{
+    /** Fire the callback.
+     *
+     *  @param goal The <code>Goal</code>.
+     *
+     *  @throws Exception if an error occurs.
+     */
+    void firePostAction( Goal goal )
+        throws Exception;
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostActionCallback.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostGoalCallback.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostGoalCallback.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostGoalCallback.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,84 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PostGoalCallback.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Interface for callbacks that occur after a <code>Goal</code>
+ *  has been completely satisfied.
+ *
+ *  @see Goal#attain
+ *  @see Action#performAction
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public interface PostGoalCallback
+{
+    /** Fire the callback.
+     *
+     *  @param goal The <code>Goal</code>.
+     *
+     *  @throws Exception if an error occurs.
+     */
+    void firePostGoal( Goal goal )
+        throws Exception;
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PostGoalCallback.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreActionCallback.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreActionCallback.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreActionCallback.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,90 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PreActionCallback.java 426251 2006-07-27 21:23:33Z ltheussl $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Interface for callbacks that occur before a <code>Goal</code>'s
+ *  action has been executed.
+ *
+ *  <p>
+ *  This callback will only be fired if the <code>Goal</code>'s
+ *  own action, as defined by {@link Action#performAction} is
+ *  slated to be fired.
+ *  </p>
+ *
+ *  @see Goal#attain
+ *  @see Action#performAction
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public interface PreActionCallback
+{
+    /** Fire the callback.
+     *
+     *  @param goal The <code>Goal</code>.
+     *
+     *  @throws Exception if an error occurs.
+     */
+    void firePreAction( Goal goal )
+        throws Exception;
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreActionCallback.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreGoalCallback.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreGoalCallback.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreGoalCallback.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,93 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PreGoalCallback.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Interface for callbacks that occur after a <code>Goal</code>'s
+ *  prerequisites have been met, but before any <code>Goal</code>-specific
+ *  actions have been taken.
+ *
+ *  <p>
+ *  Callbacks implementing this interface have the opportunity to
+ *  change the state of the environment, potentially causing the
+ *  <code>Goal</code>'s {@link Action#requiresAction} to return a
+ *  different answer.
+ *  </p>
+ *
+ *  @see Goal#attain
+ *  @see Action#requiresAction
+ *  @see Action#performAction
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public interface PreGoalCallback
+{
+    /** Fire the callback.
+     *
+     *  @param goal The <code>Goal</code>.
+     *
+     *  @throws Exception if an error occurs.
+     */
+    void firePreGoal( Goal goal )
+        throws Exception;
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/PreGoalCallback.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Session.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Session.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Session.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,220 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: Session.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/** Goal satisfaction state.
+ *
+ *  <p>
+ *  A <code>Session</code> isolates satisfaction of <code>Goal</code>s
+ *  into an objectified context.  Multiple <code>Session</code>s can
+ *  be deployed simultaneously against a <code>Project</code> or
+ *  arbitrary <code>Goal</code> graph.  Likewise, a single <code>Session</code>
+ *  may be used simultaneous against several <code>Project</code>s
+ *  or <code>Goal</code> graphs.  A caveat with this last idiom
+ *  revolves around <code>Goal</code>'s implementation of equality
+ *  which utilitizes only the <code>Goal</code>'s name.
+ *  </p>
+ *  
+ *  @see WerkzProject
+ *  @see Goal
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class Session
+{
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** Set of <code>Goal</code>s satisfied within this context. */
+    private Set satisfiedGoals;
+
+    /** Set of attributes that can be used during the execution of <code>Action</code>s. */
+    private Map attributes;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct.
+     */
+    public Session()
+    {
+        this.satisfiedGoals = new HashSet();
+        this.attributes = new HashMap();
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Clear and reset this <code>Session</code> so that
+     *  no <code>Goal</code>s are considered satisfied.
+     */
+    public void clear()
+    {
+        this.satisfiedGoals.clear();
+    }
+
+    /** Add a satisfied <code>Goal</code> to this context.
+     *
+     *  @param goal The <code>Goal</code> that is satisfied.
+     */
+    void addSatisfiedGoal( Goal goal )
+    {
+        this.satisfiedGoals.add( goal );
+    }
+
+    /** Remove a satisfied <code>Goal</code> from this context.
+     *
+     *  @param goal The <code>Goal</code> that is no longer satisfied.
+     */
+    void removeSatisfiedGoal( Goal goal )
+    {
+        this.satisfiedGoals.remove( goal );
+    }
+
+    /** Test a <code>Goal</code> to determine if it has been
+     *  satisfied within this context.
+     *
+     *  @param goal The <code>Goal</code> to test.
+     *
+     *  @return <code>true</code> if the <code>Goal</code> has been
+     *          satisfied within this context, otherwise <code>false</code>.
+     */
+    boolean isGoalSatisfied( Goal goal )
+    {
+        return this.satisfiedGoals.contains( goal );
+    }
+
+    /** Set the attributes for this <code>Session</code>.
+     * 
+     *  @param attributes The attributes for this <code>Session</code>.
+     */
+    public void setAttributes( Map attributes )
+    {
+        this.attributes = attributes;
+    }
+
+    /** Get the attributes from this <code>Session</code>.
+     * 
+     *  @return Attributes for this <code>Session</code>.
+     */
+    public Map getAttributes()
+    {
+        return this.attributes;
+    }
+
+    /** Set an attribute for this <code>Session</code>.
+     * 
+     *  @param key Attribute key.
+     *  @param value Attribute value.
+     */
+    public void setAttribute( String key, Object value )
+    {
+        getAttributes().put( key, value );
+    }
+
+    /** Get an attribute from this <code>Session</code>.
+     * 
+     *  @return An attribute from this <code>Session</code>.
+     */
+    public Object getAttribute( String key )
+    {
+        return getAttributes().get( key );
+    }
+
+    /** Log an informative message.
+     *
+     *  @param msg The message.
+     */
+    public void info( String msg )
+    {
+        // intentionally left blank
+    }
+
+    /** Log a warning message.
+     *
+     *  @param msg The message.
+     */
+    public void warn( String msg )
+    {
+        // intentionally left blank
+    }
+
+    /** Log an error message.
+     *
+     *  @param msg The message.
+     */
+    public void error( String msg )
+    {
+        // intentionally left blank
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/Session.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/UnattainableGoalException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/UnattainableGoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/UnattainableGoalException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,143 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: UnattainableGoalException.java 426251 2006-07-27 21:23:33Z ltheussl $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Indicates an error while attempting to satisfy a <code>Goal</code>.
+ *
+ *  @see Goal#attain
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class UnattainableGoalException
+    extends WerkzException
+{
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** Name of goal in which an error occurred. */
+    private String goalName;
+
+    /** Root exception. */
+    private Throwable rootCause;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct with a goal name and root cause.
+     *
+     *  @param goalName The name of the goal in which an error occurred.
+     *  @param rootCause The original error.
+     */
+    public UnattainableGoalException( String goalName, Throwable rootCause )
+    {
+        this.goalName = goalName;
+        this.rootCause = rootCause;
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Retrieve the name of the goal in which the error occurred.
+     *
+     *  @return The name of the goal in which the error occurred.
+     */
+    public String getGoalName()
+    {
+        return this.goalName;
+    }
+
+    /** Retrieve the root cause of the error.
+     *
+     *  @return The root cause.
+     */
+    public Throwable getRootCause()
+    {
+        return this.rootCause;
+    }
+
+    /** Print the stack-trace of this exception.
+     */
+    public void printStackTrace()
+    {
+        super.printStackTrace();
+
+        if ( getRootCause() != null )
+        {
+            getRootCause().printStackTrace();
+        }
+    }
+
+    public String getMessage()
+    {
+        if ( getRootCause() == null )
+        {
+            return "Unable to obtain goal [" + getGoalName() + "] -- No further information available.";
+        }
+
+        return "Unable to obtain goal [" + getGoalName() + "] -- " + getRootCause().getMessage();
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/UnattainableGoalException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzException.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzException.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzException.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,74 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: WerkzException.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+/** Base <code>werkz</code> exception.
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class WerkzException
+    extends Exception
+{
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzProject.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzProject.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzProject.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,361 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: WerkzProject.java 426251 2006-07-27 21:23:33Z ltheussl $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+ 
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ 
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+ 
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+ 
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+ 
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+ */
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/** General <code>Goal</code> manager.
+ *
+ *  <p>
+ *  It is not strictly necessary to maintain a <code>Goal</code>
+ *  graph, it does assist in organizing and administering a
+ *  group of <code>Goal</code>s.
+ *
+ *  @see Goal
+ *
+ *  @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ */
+public class WerkzProject
+{
+    // ------------------------------------------------------------
+    //     Instance members
+    // ------------------------------------------------------------
+
+    /** Goal index. */
+    private Map goals;
+
+    /** Name of the default gual, or null. */
+    private String defaultGoalName;
+
+    // ------------------------------------------------------------
+    //     Constructors
+    // ------------------------------------------------------------
+
+    /** Construct.
+     */
+    public WerkzProject()
+    {
+        this.goals = new HashMap();
+    }
+
+    // ------------------------------------------------------------
+    //     Instance methods
+    // ------------------------------------------------------------
+
+    /** Retrieve a valid execution chain to attain the specified goal.
+     *
+     *  <p>
+     *  This method returns one of possibly many different valid
+     *  execution chains.  All chains will be of the same length.
+     *  This implementation happens to perform a breadth-first
+     *  walk, so the chain will grow from the deepest sections
+     *  to the showllowest instead of plunging/surging upwards.
+     *  <p>
+     *
+     *  <p>
+     *  <pre>
+     *        B - D
+     *      /       \
+     *    A           F
+     *      \       /
+     *        C - E
+     *  </pre>
+     *
+     *  will result in either FEDCBA or FDEBCA but will
+     *  not result in the equally valid FECDBA or FDBECA
+     *  sequences.
+     *  </p>
+     *
+     *  <p>
+     *  The ordering of the array is such that the index
+     *  <code>length - 1</code> (the last index of the array)
+     *  points to the <code>Goal</code> specified as the
+     *  parameter to the method.
+     *  </p>
+     *
+     *  @param name The name of the goal.
+     *
+     *  @return The array of goals in the execution chain, terminating
+     *          with the requested goal as the last member.
+     *
+     *  @throws NoSuchGoalException if the <code>name</code> refers to no known goal.
+     */
+
+    public Goal[] getExecutionChain( String name )
+        throws NoSuchGoalException
+    {
+        Goal goal = getGoal( name );
+
+        LinkedList chain = new LinkedList();
+        LinkedList stack = new LinkedList();
+
+        stack.addLast( goal );
+
+        while ( !stack.isEmpty() )
+        {
+            goal = (Goal) stack.removeFirst();
+
+            if ( chain.contains( goal ) )
+            {
+                continue;
+            }
+
+            chain.addFirst( goal );
+
+            List precursors = goal.getPrecursors();
+
+            for ( Iterator precursorIter = precursors.iterator(); precursorIter.hasNext(); )
+            {
+                Goal eachPrecursor = (Goal) precursorIter.next();
+
+                if ( !chain.contains( eachPrecursor ) )
+                {
+                    stack.addLast( eachPrecursor );
+                }
+            }
+
+        }
+
+        return (Goal[]) chain.toArray( Goal.EMPTY_ARRAY );
+    }
+
+    /** Attempt to attain the specified goal.
+     *
+     *  @param name The name of the goal to attain.
+     *  @param session The context in which to attain goals.
+     *
+     *  @throws NoSuchGoalException if the <code>name</code> refers to no known goal.
+     *  @throws UnattainableGoalException if a precursor or the goal itself had an error.
+     *  @throws NoActionDefinitionException if a goal contains no action definition.
+     */
+    public void attainGoal( String name, Session session )
+        throws NoSuchGoalException, UnattainableGoalException, NoActionDefinitionException
+    {
+        Goal goal = getGoal( name );
+
+        if ( goal == null )
+        {
+            throw new NoSuchGoalException( name );
+        }
+
+        goal.attain( session );
+    }
+
+    /** Attempt to percolate the specified goal.
+     *
+     *  @param name The name of the goal to percolate.
+     *  @param session The context in which to percolate goals.
+     *
+     *  @throws NoSuchGoalException if the <code>name</code> refers to no known goal.
+     *  @throws UnattainableGoalException if a postcursor or the goal itself had an error.
+     *  @throws NoActionDefinitionException if a goal contains no action definition.
+     */
+    public void percolateGoal( String name, Session session )
+        throws NoSuchGoalException, UnattainableGoalException, NoActionDefinitionException
+    {
+        Goal goal = getGoal( name );
+
+        if ( goal == null )
+        {
+            throw new NoSuchGoalException( name );
+        }
+
+        goal.percolate( session );
+    }
+
+    /** Attempt to attain the specified goal.
+     *
+     *  @param name The name of the goal to attain.
+     *
+     *  @throws NoSuchGoalException if the <code>name</code> refers to no known goal.
+     *  @throws UnattainableGoalException if a precursor or the goal itself had an error.
+     *  @throws NoActionDefinitionException if a goal contains no action definition.
+     */
+    public void attainGoal( String name )
+        throws NoSuchGoalException, UnattainableGoalException, NoActionDefinitionException
+    {
+        attainGoal( name, new Session() );
+    }
+
+    /** Attempt to percolate the specified goal.
+     *
+     *  @param name The name of the goal to percolate.
+     *
+     *  @throws NoSuchGoalException if the <code>name</code> refers to no known goal.
+     *  @throws UnattainableGoalException if a postcursor or the goal itself had an error.
+     *  @throws NoActionDefinitionException if a goal contains no action definition.
+     */
+    public void percolateGoal( String name )
+        throws NoSuchGoalException, UnattainableGoalException, NoActionDefinitionException
+    {
+        percolateGoal( name, new Session() );
+    }
+
+    /** Add a <code>Goal</code> to this manager.
+     *
+     *  @param goal The <code>Goal</code> to add.
+     */
+    public void addGoal( Goal goal )
+    {
+        this.goals.put( goal.getName(), goal );
+    }
+
+    /** Retrieve a <code>Goal</code> by name from this manager.
+     *
+     *  @param name The name of the goal to retrieve.
+     *
+     *  @return The <code>Goal</code> associated with the <code>name</code>,
+     *          or <code>null</code> if there is no such <code>Goal</code>.
+     */
+    public Goal getGoal( String name )
+    {
+        return (Goal) this.goals.get( name );
+    }
+
+    /** Retrieve a <code>Goal</code> by name from this manager.
+     *
+     *  @param name The name of the goal to retrieve.
+     *  @param create Flag indicating if a new <code>Goal</code> should
+     *                be created and returned if none currently exists
+     *                bound to <code>name</code>.
+     *
+     *  @return The existing <code>Goal</code> associated with the <code>name</code>,
+     *          or a new <code>Goal</code> if none was previously associated with
+     *          <code>name</code>.
+     */
+    public Goal getGoal( String name, boolean create )
+    {
+        Goal goal = getGoal( name );
+
+        if ( ( goal == null ) && create )
+        {
+            goal = new Goal( name );
+            addGoal( goal );
+        }
+
+        return goal;
+    }
+
+    /** Set the default goal name.
+     *
+     *  @param defaultGoalName The name of the default goal.
+     */
+    public void setDefaultGoalName( String defaultGoalName )
+    {
+        this.defaultGoalName = defaultGoalName;
+    }
+
+    /** Retrieve the default goal name.
+     *
+     *  @return The namee of the default goal, or
+     *          <code>null</code> if not set.
+     */
+    public String getDefaultGoalName()
+    {
+        return this.defaultGoalName;
+    }
+
+    /** Retrieve the default goal.
+     *
+     *  @return The default <code>Goal</code> or
+     *          <code>null</code> if a valid default
+     *          goal name has not been previously
+     *          specified using {@link #setDefaultGoalName}.
+     */
+    public Goal getDefaultGoal()
+    {
+        return getGoal( getDefaultGoalName() );
+    }
+
+    /** Retrieve an unmodifiable collection of all <code>Goal</code>s 
+     *  that are a part of this <code>Project</code>.
+     *
+     *  @return An unmodifiable collection of all <code>Goal</code>s
+     *          that are members of this <code>Project</code>.
+     */
+    public Collection getGoals()
+    {
+        return Collections.unmodifiableCollection( this.goals.values() );
+    }
+
+    /** Produce a textual representation suitable for debugging.
+     *
+     *  @return A textual representation suitable for debugging.
+     */
+    public String toString()
+    {
+        return "[Werkz: goals=" + this.goals + ";]";
+    }
+
+    public void removeGoal( String name )
+    {
+        goals.remove( name );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/WerkzProject.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainGoalTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainGoalTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,197 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: AttainGoalTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.NoActionDefinitionException;
+import org.apache.maven.werkz.NoSuchGoalException;
+import org.apache.maven.werkz.Session;
+import org.apache.maven.werkz.UnattainableGoalException;
+import org.apache.maven.werkz.WerkzProject;
+
+/**
+ * Attains one or more goals.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @version $Revision: 1.4 $
+ */
+public class AttainGoalTag
+    extends WerkzTagSupport
+{
+    /** The goal name. */
+    private String name;
+
+    /** The session. */
+    private Session session;
+
+    /** Construct.
+     */
+    public AttainGoalTag()
+    {
+        // intentionally left blank
+    }
+
+    /** Set the <code>Session</code> to use.
+     *
+     *  @param session The session.
+     */
+    public void setSession( Session session )
+    {
+        this.session = session;
+    }
+
+    /** Retrieve the <code>Session</code> to use, if set.
+     *
+     *  @return The session or null.
+     */
+    public Session getSession()
+    {
+        return this.session;
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+        AttainTag attainTag = (AttainTag) findAncestorWithClass( AttainTag.class );
+
+        Session session = null;
+
+        if ( this.session != null )
+        {
+            session = this.session;
+        }
+        else if ( attainTag == null )
+        {
+            session = new JellySession( output );
+        }
+        else
+        {
+            session = attainTag.getSession();
+        }
+
+        WerkzProject project = getProject();
+
+        if ( project == null )
+        {
+            throw new JellyTagException( "No Project available" );
+        }
+
+        invokeBody( output );
+
+        try
+        {
+            project.attainGoal( getName(), session );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            Throwable root = e.getRootCause();
+
+            if ( root != null )
+            {
+                if ( root instanceof JellyTagException )
+                {
+                    throw (JellyTagException) root;
+                }
+                if ( root instanceof UnattainableGoalException )
+                {
+                    throw new JellyTagException( e );
+                }
+            }
+            else
+            {
+                e.fillInStackTrace();
+                throw new JellyTagException( e );
+            }
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            throw new JellyTagException( e );
+        }
+        catch ( NoSuchGoalException e )
+        {
+            throw new JellyTagException( e );
+        }
+    }
+
+    // Properties
+    //-------------------------------------------------------------------------
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public String getName()
+    {
+        return this.name;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainGoalTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,115 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: AttainTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.werkz.Session;
+
+/**
+ * Attains one or more goals.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @version $Revision: 1.2 $
+ */
+public class AttainTag
+    extends WerkzTagSupport
+{
+
+    /** The Log to which logging calls will be made. */
+    private Log log = LogFactory.getLog( AttainTag.class );
+
+    /** The goal session. */
+    private Session session;
+
+    public AttainTag()
+    {
+        log.debug( "ctor()" );
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+        this.session = new JellySession( output );
+
+        invokeBody( output );
+    }
+
+    // Properties
+    //-------------------------------------------------------------------------
+
+    public Session getSession()
+    {
+        return this.session;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/AttainTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/CallbackTagSupport.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/CallbackTagSupport.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/CallbackTagSupport.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,107 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: CallbackTagSupport.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Abstract base class for all callback tags.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class CallbackTagSupport
+    extends WerkzTagSupport
+{
+
+    /** The Log to which logging calls will be made. */
+    protected Log log = LogFactory.getLog( getClass() );
+
+    /** the name of the target */
+    private String name;
+
+    public CallbackTagSupport()
+    {
+    }
+
+    // Properties
+    //-------------------------------------------------------------------------
+
+    /**
+     * @return the name of the target
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * Sets the name of the target
+     */
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/CallbackTagSupport.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/GoalTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/GoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/GoalTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,224 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: GoalTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import java.util.StringTokenizer;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.werkz.Action;
+import org.apache.maven.werkz.CyclicGoalChainException;
+import org.apache.maven.werkz.DefaultAction;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.Session;
+
+/**
+ * Implements a &lt;target&gt; tag which is similar to the Ant equivalent tag
+ * but is based on the Werkz goal engine.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.3 $
+ */
+public class GoalTag
+    extends WerkzTagSupport
+{
+
+    /** The Log to which logging calls will be made. */
+    private Log log = LogFactory.getLog( GoalTag.class );
+
+    /** the name of the target */
+    private String name;
+
+    private String prereqs;
+
+    private String description;
+
+    public GoalTag()
+    {
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+
+        log.debug( "doTag(..):" + name );
+
+        Goal goal = getProject().getGoal( getName(), true );
+
+        goal.setDescription( this.description );
+        try
+        {
+            addPrereqs( goal );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            throw new JellyTagException( e );
+        }
+
+        Action action;
+
+        action = getAction();
+
+        if ( action == null )
+        {
+            action = new DefaultAction()
+            {
+                public void performAction( Session session )
+                    throws Exception
+                {
+                    performAction();
+                }
+
+                public void performAction()
+                    throws Exception
+                {
+                    log.debug( "Running action of target: " + getName() );
+                    invokeBody( output );
+                }
+            };
+        }
+
+        goal.setAction( action );
+    }
+
+    // Properties
+    //-------------------------------------------------------------------------
+    /**
+     * @return the name of the target
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * Sets the name of the target
+     */
+    public void setName( String name )
+    {
+        log.debug( "setName(" + name + ")" );
+        this.name = name;
+    }
+
+    public void setPrereqs( String prereqs )
+    {
+        this.prereqs = prereqs;
+    }
+
+    public String getPrereqs()
+    {
+        return this.prereqs;
+    }
+
+    public void setDescription( String description )
+    {
+        this.description = description;
+    }
+
+    protected void addPrereqs( Goal goal )
+        throws CyclicGoalChainException
+    {
+        String prereqs = getPrereqs();
+
+        if ( prereqs == null )
+        {
+            return;
+        }
+
+        StringTokenizer tokens = new StringTokenizer( getPrereqs(), "," );
+
+        String eachToken = null;
+        Goal eachPrereq = null;
+
+        while ( tokens.hasMoreTokens() )
+        {
+            eachToken = tokens.nextToken().trim();
+
+            eachPrereq = getProject().getGoal( eachToken, true );
+
+            goal.addPrecursor( eachPrereq );
+        }
+    }
+
+    /**
+     * Subclasses can override this template method to provide a
+     * custom <code>Action</code> implementation. This scenerio will
+     * most likely come into play when you have also created a custom
+     * <code>Session</code> implementation that can be used to provide
+     * parameters during the attainment of a <code>Goal</code>.
+     */
+    protected Action getAction()
+    {
+        return null;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/GoalTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/JellySession.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/JellySession.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/JellySession.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,115 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: JellySession.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.Session;
+import org.xml.sax.SAXException;
+
+public class JellySession
+    extends Session
+{
+    private XMLOutput out;
+
+    public JellySession( XMLOutput out )
+    {
+        this.out = out;
+    }
+
+    public void info( String message )
+    {
+        try
+        {
+            this.out.write( message + "\n" );
+        }
+        catch ( SAXException e )
+        {
+            // ignore
+        }
+    }
+
+    public void warn( String message )
+    {
+        try
+        {
+            this.out.write( message + "\n" );
+        }
+        catch ( SAXException e )
+        {
+            // ignore
+        }
+    }
+
+    public void error( String message )
+    {
+        try
+        {
+            this.out.write( message + "\n" );
+        }
+        catch ( SAXException e )
+        {
+            // ignore
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/JellySession.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostActionTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostActionTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostActionTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,108 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PostActionTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.PostActionCallback;
+
+/**
+ * Implements a &lt;postAction&gt; tag which provides a callback
+ * which is evaluated after an action.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2 $
+ */
+public class PostActionTag
+    extends CallbackTagSupport
+{
+
+    public PostActionTag()
+    {
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+
+        getGoal( getName() ).addPostActionCallback( new PostActionCallback()
+        {
+            public void firePostAction( Goal goal )
+                throws Exception
+            {
+                // lets run the body
+                log.info( "Running post action: " + getName() );
+                invokeBody( output );
+            }
+        } );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostActionTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostGoalTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostGoalTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,108 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PostGoalTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.PostGoalCallback;
+
+/**
+ * Implements a &lt;postGoal&gt; tag which provides a callback
+ * which is evaluated after a goal has executed.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2 $
+ */
+public class PostGoalTag
+    extends CallbackTagSupport
+{
+
+    public PostGoalTag()
+    {
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+
+        getGoal( getName() ).addPostGoalCallback( new PostGoalCallback()
+        {
+            public void firePostGoal( Goal goal )
+                throws Exception
+            {
+                // lets run the body
+                log.info( "Running post goal: " + getName() );
+                invokeBody( output );
+            }
+        } );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PostGoalTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreActionTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreActionTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreActionTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,108 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PreActionTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.PreActionCallback;
+
+/**
+ * Implements a &lt;preAction&gt; tag which provides a callback
+ * which is evaluated before an action.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2 $
+ */
+public class PreActionTag
+    extends CallbackTagSupport
+{
+
+    public PreActionTag()
+    {
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+
+        getGoal( getName() ).addPreActionCallback( new PreActionCallback()
+        {
+            public void firePreAction( Goal goal )
+                throws Exception
+            {
+                // lets run the body
+                log.debug( "Running pre action: " + getName() );
+                invokeBody( output );
+            }
+        } );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreActionTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreGoalTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreGoalTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,108 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: PreGoalTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.PreGoalCallback;
+
+/**
+ * Implements a &lt;preGoal&gt; tag which provides a callback
+ * which is evaluated before a goal.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2 $
+ */
+public class PreGoalTag
+    extends CallbackTagSupport
+{
+
+    public PreGoalTag()
+    {
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+
+        getGoal( getName() ).addPreGoalCallback( new PreGoalCallback()
+        {
+            public void firePreGoal( Goal goal )
+                throws Exception
+            {
+                // lets run the body
+                log.debug( "Running pre goal: " + getName() );
+                invokeBody( output );
+            }
+        } );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/PreGoalTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/ProjectTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/ProjectTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/ProjectTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,135 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: ProjectTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.jelly.tags.ant.AntTagLibrary;
+import org.apache.maven.werkz.WerkzProject;
+
+/**
+ * The root tag of a Project definition.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2 $
+ */
+public class ProjectTag
+    extends WerkzTagSupport
+{
+
+    /** the project */
+    private WerkzProject project;
+
+    private String defaultGoalName;
+
+    public ProjectTag()
+    {
+        super( true );
+    }
+
+    /**
+     * @return the project instance
+     */
+    public WerkzProject getProject()
+    {
+        if ( project == null && context != null )
+        {
+            // we may be invoked inside a child script, so lets try find the parent project
+            project = (WerkzProject) context.findVariable( "org.apache.commons.jelly.werkz.Project" );
+            if ( project == null )
+            {
+                project = new WerkzProject();
+                context.setVariable( "org.apache.commons.jelly.werkz.Project", project );
+            }
+        }
+        return project;
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        // force project to be lazily constructed
+
+        getProject().setDefaultGoalName( this.defaultGoalName );
+
+        org.apache.tools.ant.Project antProject = AntTagLibrary.getProject( context );
+
+        // allow access to Ant methods via the project class
+        context.setVariable( "project", antProject );
+
+        invokeBody( output );
+    }
+
+    public void setDefault( String defaultGoalName )
+    {
+        this.defaultGoalName = defaultGoalName;
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/ProjectTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/UseGoalsTag.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/UseGoalsTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/UseGoalsTag.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,160 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: UseGoalsTag.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.MissingAttributeException;
+import org.apache.commons.jelly.XMLOutput;
+import org.apache.maven.werkz.Goal;
+
+/**
+ * This tag outputs a sorted Map of Maps all of the goals, indexed by their prefix and their
+ * goal name. This is output to a variable. This map of maps makes it easy to navigate the
+ * available Goals.
+ * <p>
+ * So if the goals is output to a variable called 'g' then you can access a specific goal via
+ * a Jexl expression ${g.java.compile} or to find all the 'java' goals you can use ${g.java} which
+ * returns a sorted Map.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2 $
+ */
+public class UseGoalsTag
+    extends WerkzTagSupport
+{
+    /** the name of the variable to export */
+    private String var;
+
+    public UseGoalsTag()
+    {
+    }
+
+    // Tag interface
+    //-------------------------------------------------------------------------
+
+    /**
+     * Evaluate the body to register all the various goals and pre/post conditions
+     * then run all the current targets
+     */
+    public void doTag( final XMLOutput output )
+        throws JellyTagException
+    {
+        if ( var == null )
+        {
+            throw new MissingAttributeException( "var" );
+        }
+
+        Map answer = createMap();
+
+        Iterator iter = getProject().getGoals().iterator();
+        while ( iter.hasNext() )
+        {
+            Goal goal = (Goal) iter.next();
+            String name = goal.getName();
+            String prefix = name;
+            int idx = name.indexOf( ":" );
+            if ( idx >= 0 )
+            {
+                prefix = name.substring( 0, idx );
+                name = name.substring( idx + 1 );
+            }
+            else
+            {
+                name = "[default]";
+            }
+
+            Map map = (Map) answer.get( prefix );
+            if ( map == null )
+            {
+                map = createMap();
+                answer.put( prefix, map );
+            }
+            map.put( name, goal );
+        }
+
+        context.setVariable( var, answer );
+    }
+
+    // Properties
+    //-------------------------------------------------------------------------
+    /**
+     * Sets the variable for which the Map of Map of goals will be exported
+     */
+    public void setVar( String var )
+    {
+        this.var = var;
+    }
+
+    /**
+     * Factory method to create a new sorted map
+     */
+    protected Map createMap()
+    {
+        return new TreeMap();
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/UseGoalsTag.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagLibrary.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,89 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: WerkzTagLibrary.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.TagLibrary;
+
+/** Implements a bunch of tags that are useful for working with Werkz.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.1 $
+ */
+public class WerkzTagLibrary
+    extends TagLibrary
+{
+
+    public WerkzTagLibrary()
+    {
+        registerTag( "project", ProjectTag.class );
+        registerTag( "goal", GoalTag.class );
+        registerTag( "preGoal", PreGoalTag.class );
+        registerTag( "postGoal", PostGoalTag.class );
+        registerTag( "preAction", PreActionTag.class );
+        registerTag( "postAction", PostActionTag.class );
+        registerTag( "attain", AttainTag.class );
+        registerTag( "attainGoal", AttainGoalTag.class );
+        registerTag( "useGoals", UseGoalsTag.class );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagLibrary.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagSupport.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagSupport.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagSupport.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,133 @@
+package org.apache.maven.werkz.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+/*
+ $Id: WerkzTagSupport.java 423634 2006-07-19 22:13:40Z aheritier $
+
+ Copyright 2002 (C) The Werken Company. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices.  Redistributions must also contain a
+ copy of this document.
+
+ 2. Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. The name "werkz" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Werken Company.  For written permission,
+ please contact bob at werken.com.
+
+ 4. Products derived from this Software may not be called "werkz"
+ nor may "werkz" appear in their names without prior written
+ permission of The Werken Company. "werkz" is a registered
+ trademark of The Werken Company.
+
+ 5. Due credit should be given to "the werkz project"
+ ( http://werkz.werken.com/ ).
+
+ THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.TagSupport;
+import org.apache.maven.werkz.Goal;
+import org.apache.maven.werkz.WerkzProject;
+
+/**
+ * The abstract base class for Werkz child tags
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version $Revision: 1.2.2.1 $
+ */
+public abstract class WerkzTagSupport
+    extends TagSupport
+{
+
+    public WerkzTagSupport( boolean trim )
+    {
+        super( trim );
+    }
+
+    public WerkzTagSupport()
+    {
+    }
+
+    // Implementation methods
+    //-------------------------------------------------------------------------
+
+    /**
+     * @return the goal of the given name or
+     *  throws a JellyExceptoin if the goal could not be found
+     */
+    protected Goal getGoal( String name )
+        throws JellyTagException
+    {
+        WerkzProject project = getProject();
+        if ( project == null )
+        {
+            throw new JellyTagException( "Must use this tag inside a <maven:project> tag" );
+        }
+
+        // #### allow lazy creation of callbacks before the goal is defined...
+        Goal goal = project.getGoal( name, true );
+        if ( goal == null )
+        {
+            throw new JellyTagException( "No such target name: " + name );
+        }
+        return goal;
+    }
+
+    /**
+     * @return the goal manager instance
+     */
+    protected WerkzProject getProject()
+    {
+        WerkzProject answer = null;
+        ProjectTag tag = (ProjectTag) findAncestorWithClass( ProjectTag.class );
+        if ( tag != null )
+        {
+            answer = tag.getProject();
+        }
+        if ( answer == null )
+        {
+            answer = (WerkzProject) context.findVariable( "org.apache.commons.jelly.werkz.Project" );
+        }
+        return answer;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/jelly/WerkzTagSupport.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/overview.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/overview.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/overview.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,6 @@
+
+<html>
+<body>
+	<b><code>werkz</code></b> is a framework for goal-oriented processes.
+</body>
+</html>


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/overview.html
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/package.html
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/package.html	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,15 @@
+
+<html>
+	<head>
+		<title>
+			org.apache.maven.werkz.*
+		</title>
+	</head>
+
+	<body>
+		<p>
+		The <code><b>werkz</b></code> goal-oriented process framework.
+		</p>
+	</body>
+
+</html>


Property changes on: branches/maven1/upstream/1.1~beta3/src/java/org/apache/maven/werkz/package.html
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/man/maven.1
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/man/maven.1	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/man/maven.1	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,144 @@
+.\" Process this file with
+.\" groff -man -Tascii foo.1
+.\"
+.TH MAVEN 1 "MAY 2004" Linux "User Manuals"
+.SH NAME
+maven \- builds a project
+.SH SYNOPSIS
+\fB maven\fR [\fIoptions\fR] [\fIgoal\fR [\fIgoal2\fR [\fIgoal3\fR] ...]]
+
+.SH DESCRIPTION
+.B Maven
+is a Java project management and project comprehension tool. Maven is
+based on the concept of a project object model (\fBPOM\fR) in that all the 
+artifacts produced by Maven are a result of consulting a well defined model for
+your project. Builds, documentation, source metrics, and source cross-references
+are all controlled by your POM.
+
+Maven has many goals , but in a nutshell Maven aims to make the developer's
+life easier by providing a well defined project structure, well defined
+development processes to follow, and a coherent body of documentation that
+keeps your developers and clients apprised of what's happening with your
+project. Maven alleviates a lot of what most developers consider drudgery and
+lets them get on with the task at hand. This is essential in OSS projects where
+there aren't many people dedicated to the task of documenting and propagating
+the critical information about your project which is necessary in order to
+attract potential new developers and clients.
+
+.SH OPTIONS
+Options must be given before the list of goals to execute.
+.TP
+\fB\-X\fR, \fB\-\-debug\fR
+Produce execution debug output
+.TP
+\fB\-D\fR, \fB\-\-define\fR \fIarg\fR
+Define a system property.
+arg must be in the form: 
+.br
+maven.property.name=value
+.TP
+\fB\-d\fR, \fB\-\-dir\fR \fIarg\fR
+Set the effective working directory.
+.TP
+\fB\-E\fR, \fB\-\-emacs\fR
+Produce logging information without adornments.
+.TP
+\fB\-e\fR, \fB\-\-exception\fR
+Produce exception stack traces.
+.TP
+\fB\-f\fR, \fB\-\-find\fR \fIarg\fR
+Set the project file and effective working directory by finding the project.
+file.
+.TP
+\fB\-g\fR, \fB\-\-goals\fR
+Display available goals.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display help information.
+.TP
+\fB\-i\fR, \fB\-\-info\fR
+Display system information.
+.TP
+\fB\-b\fR, \fB\-\-nobanner\fR
+Suppress the logo banner.
+.TP
+\fB\-o\fR, \fB\-\-offline\fR
+Build is happening offline.
+.TP
+\fB\-p\fR, \fB\-\-pom\fR \fIarg\fR
+Set the project file.
+.TP
+\fB\-q\fR, \fB\-\-quitet\fR \fIarg\fR
+Reduce execution output.
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Display the version of \fBmaven\fR we are using.
+.SH FILES
+.I ./build.properties
+.RS
+Project wide configuration file.
+.RE
+.I ~/build.properties
+.RS
+Per user configuration file.
+.SH ENVIRONMENT
+.IP MAVEN_HOME
+\fBMaven\fR's home directory.
+.br
+.IP MAVEN_REPO
+\fBMaven\fR's local repository.
+.SH BUGS
+Probably. They can be found/added here:
+.br
+\fBhttp://jira.codehaus.org/BrowseProject.jspa?id=10030
+.SH MAILING-LISTS
+\fBUsers\fR:      maven-users at apache.org
+.br
+\fBDevelopers\fR: maven-dev at apache.org
+.SH AUTHORS
+Juancarlo Anez <juanco at apache.org>
+.br
+Stephane Bailliez <sbailliez at apache.org>
+.br
+Jeff Brekke <brekke at apache.org>
+.br
+Tom Copeland <tcopeland at apache.org>
+.br
+Eric Dobbs <eric at dobbse.net>
+.br
+dIon Gillard <dion at multitask.com.au>
+.br
+Pete Kazmier <pete-apache-dev at kazmier.com>
+.br
+Peter Lynch <plynch at apache.org>
+.br
+Glenn McAllister <glenn at somanetworks.com>
+.br
+Bob McWhirter <bob at werken.com>
+.br
+Geir Magnusson Jr. <geirm at optonline.net>
+.br
+Vincent Massol <vmassol at octo.com>
+.br
+Stéphane Mor <stephanemor at yahoo.fr>
+.br
+Kasper Nielsen <apache at kav.dk>
+.br
+Daniel Rall <dlr at finemaltcoding.com>
+.br
+Kurt Schrader <kschrader at karmalab.org>
+.br
+James Strachan <james_strachan at yahoo.co.uk>
+.br
+James Taylor <james at jamestaylor.org>
+.br
+Emmanuel Venisse <evenisse at ifrance.com>
+.br
+Jason van Zyl <jason at zenplex.com>
+.br
+Ben Walding <jakarta at walding.com>
+.SH CVS HEADER
+$Id: maven.1 169211 2005-05-09 01:23:02Z brett $
+.SH AUTHOR
+This man page was originally written Stephane Mor <stephanemor at yahoo.fr>
+and updated by Trygve Laugstoel <trygvis at apache.org>

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,72 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=WARNING: Failed to download ${1}.
+remote.repository.disabled.warning=The use of the remote repository has been disabled.
+directory.nonexistant.warning=Directory ${1} does not exist. Attempting to create.
+not.directory.warning=${1} is not a directory.
+not.writable.warning=${1} is not writable.
+cannot.create.directory.warning=Unable to create directory ${1}
+maven.repo.local.unset.warning=maven.repo.local is not set.
+single.unsatisfied.dependency.error=The build cannot continue because of the following unsatisfied dependency:
+multiple.unsatisfied.dependency.error=The build cannot continue because of the following unsatisfied dependencies:
+offline.snapshot.warning=You are working offline so the build will continue, but ${1} may be out of date!
+download.message=Attempting to download ${1}.
+skip.download.message=Skipping download as local copy is up to date!
+satisfy.project.message=Trying to get missing/snapshot dependencies required by ${1}:
+plugin.loading.error=The plugin ${1} could not be loaded.
+empty.descriptor.error=The ${1} file you specified has zero length.
+checksum.verification.error=The follow artifact is corrupt: ${1}.
+not.existing.artifact.in.repo=Artifact ${1} doesn't exist in remote repository, but it exists locally.
+
+# For org.apache.maven.cli.App
+build.failed=BUILD FAILED
+build.successful=BUILD SUCCESSFUL
+build.no.pom.found=WARNING: No pom file was found, assuming default settings!
+build.unknownGoalException=Goal '${1}' does not exist in this project.
+build.noSuchGoalException=A plugin has attempted to use a goal that does not exist.
+build.noActionDefinitionException=Reference made to goal '${1}' which has no definition.
+# Important : 12 characters before ${1}
+build.jellyException.file=File...... ${1}
+build.jellyException.element=Element... ${1}
+build.jellyException.line=Line...... ${1}
+build.jellyException.column=Column.... ${1}
+build.internalError=INTERNAL ERROR
+build.final.memory=Final Memory : ${1}
+build.total.time=Total time   : ${1}
+build.finished.time=Finished at  : ${1}
+displayBugReportHelp.line1=You have encountered an unknown error running Maven. 
+displayBugReportHelp.line2=Please help us to correct this problem by following these simple steps:
+displayBugReportHelp.line3=- read the Maven FAQ at ${1}
+displayBugReportHelp.line4=- run the same command again with the '-e' parameter, eg 'maven -e jar'
+displayBugReportHelp.line5=- search the maven-user archives for the error at ${1}
+displayBugReportHelp.line6=- post the output of maven -e to JIRA at ${1} (you must sign up first)
+displayBugReportHelp.line7=- run 'maven --info' and post the output as the environment to the bug above
+displayProjectHelp.title=Project Goals
+displayInfo.info1=Installed plugins :\u0020
+displayInfo.info2=Home Build properties :\u0020
+displayInfo.error=Exception reading build.properties :\u0020
+printConsoleMavenHeader.error=Unable to load driver properties :\u0020
+displayGoals.title=Available [Plugins] / Goals
+displayGoals.title.pluginOnly.null=Available plugins
+displayGoals.title.pluginOnly.notNull=Goals in\u0020
+displayGoals.defaultGoal=Default goal:\u0020
+displayGoalsWithoutDescriptions.info=Undocumented goals :\u0020
+formatTime.minutes=\u0020minutes\u0020
+formatTime.seconds=\u0020seconds\u0020

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_el.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_el.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_el.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# \u00c5\u00eb\u00e5\u00e3\u00ea\u00f4\u00de\u00f2 \u00d3\u00f7\u00e5\u00e4\u00df\u00ef\u00f5
+# --------------------------------------------------------------------------
+failed.download.warning=\u00d0\u00f1\u00ef\u00f3\u00f9\u00f7\u00de! \u00c1\u00e4\u00fd\u00ed\u00e1\u00f4\u00f9\u00ed \u00e7 \u00ec\u00e5\u00f4\u00e1\u00f6\u00ef\u00f1\u00dc \u00f4\u00ef\u00f5 ${1}!
+remote.repository.disabled.warning=\u00c7 \u00f7\u00f1\u00de\u00f3\u00e7 \u00e1\u00f0\u00ef\u00ec\u00e1\u00ea\u00f1\u00f5\u00f3\u00ec\u00dd\u00ed\u00f9\u00ed \u00e1\u00f0\u00ef\u00e8\u00e7\u00ea\u00fe\u00ed \u00dd\u00f7\u00e5\u00e9 \u00e1\u00f0\u00e5\u00ed\u00e5\u00f1\u00e3\u00ef\u00f0\u00ef\u00e9\u00e7\u00e8\u00e5\u00df..
+directory.nonexistant.warning=\u00cf \u00ea\u00e1\u00f4\u00dc\u00eb\u00ef\u00e3\u00ef\u00f2 ${1} \u00e4\u00e5\u00ed \u00f5\u00f0\u00dc\u00f1\u00f7\u00e5\u00e9! \u00c4\u00ef\u00ea\u00e9\u00ec\u00dc\u00e6\u00f9 \u00e4\u00e7\u00ec\u00e9\u00ef\u00fd\u00f1\u00e3\u00e7\u00f3\u00e7...
+not.directory.warning=${1} \u00e4\u00e5\u00ed \u00e5\u00df\u00ed\u00e1\u00e9 \u00ea\u00e1\u00f4\u00dc\u00eb\u00ef\u00e3\u00ef\u00f2!
+not.writable.warning=\u00c1\u00e4\u00fd\u00ed\u00e1\u00f4\u00f9\u00ed \u00e7 \u00e4\u00e9\u00e5\u00e3\u00e3\u00f1\u00e1\u00f6\u00de \u00f3\u00f4\u00ef ${1}!
+cannot.create.directory.warning=\u00c1\u00e4\u00fd\u00ed\u00e1\u00f4\u00f9\u00ed \u00e7 \u00e4\u00e7\u00ec\u00e9\u00ef\u00f5\u00f1\u00e3\u00e5\u00df\u00e1 \u00f4\u00ef\u00fd \u00ea\u00e1\u00f4\u00e1\u00eb\u00fc\u00e3\u00ef\u00f5 ${1}!
+maven.repo.local.unset.warning=maven.repo.local \u00e4\u00e5\u00ed \u00dd\u00f7\u00e5\u00e9 \u00ef\u00f1\u00e9\u00f3\u00f4\u00e5\u00df.
+single.unsatisfied.dependency.error= \u00c7 \u00e4\u00e9\u00e1\u00e4\u00e9\u00ea\u00e1\u00f3\u00df\u00e1 \u00e4\u00e5\u00ed \u00ec\u00f0\u00ef\u00f1\u00e5\u00df \u00ed\u00e1 \u00f3\u00f5\u00ed\u00e5\u00f7\u00e9\u00f3\u00f4\u00e5\u00df! \u00cb\u00e5\u00df\u00f0\u00e5\u00e9 \u00e7 \u00e1\u00ea\u00fc\u00eb\u00ef\u00f5\u00e8\u00e7 \u00e5\u00ee\u00dc\u00f1\u00f4\u00e7\u00f3\u00e5\u00e9:
+multiple.unsatisfied.dependency.error=\u00c7 \u00e4\u00e9\u00e1\u00e4\u00e9\u00ea\u00e1\u00f3\u00df\u00e1 \u00e4\u00e5\u00ed \u00ec\u00f0\u00ef\u00f1\u00e5\u00df \u00ed\u00e1 \u00f3\u00f5\u00ed\u00e5\u00f7\u00e9\u00f3\u00f4\u00e5\u00df! \u00cb\u00e5\u00df\u00f0\u00ef\u00f5\u00ed \u00e7 \u00e1\u00ea\u00fc\u00eb\u00ef\u00f5\u00e8\u00e5\u00f2 \u00e5\u00ee\u00e1\u00f1\u00f4\u00de\u00f3\u00e5\u00e9\u00f2:
+offline.snapshot.warning=\u00c5\u00f1\u00e3\u00dc\u00e6\u00e5\u00f3\u00e1\u00e9 \u00e1\u00f0\u00ef\u00f3\u00f5\u00ed\u00e4\u00e5\u00e4\u00ef\u00ec\u00dd\u00ed\u00ef\u00f2! \u00c7 \u00e4\u00e9\u00e1\u00e4\u00e9\u00ea\u00e1\u00f3\u00df\u00e1 \u00e8\u00e1 \u00f3\u00f5\u00ed\u00e5\u00f7\u00df\u00f3\u00e5\u00e9 \u00e1\u00eb\u00eb\u00dc \u00e5\u00df\u00ed\u00e1\u00e9 \u00e4\u00f5\u00ed\u00e1\u00f4\u00fe\u00ed  ${1} \u00ed\u00e1 \u00ec\u00e7\u00ed \u00e5\u00df\u00ed\u00e1\u00e9 \u00e5\u00ed\u00e7\u00ec\u00e5\u00f1\u00f9\u00ec\u00dd\u00ed\u00ef!
+download.message=\u00d0\u00f1\u00f9\u00f3\u00f0\u00e1\u00e8\u00fe \u00ed\u00e1 \u00ec\u00e5\u00f4\u00e1\u00f6\u00dd\u00f1\u00f9 ${1}.
+plugin.loading.error=\u00c1\u00e4\u00fd\u00ed\u00e1\u00f4\u00f9\u00ed \u00ed\u00e1 \u00f6\u00ef\u00f1\u00f4\u00f9\u00e8\u00e5\u00df \u00f4\u00ef plugin ${1}!
+empty.descriptor.error=\u00d4\u00ef \u00e1\u00f1\u00f7\u00e5\u00df\u00ef ${1} \u00f0\u00ef\u00fd \u00ea\u00e1\u00e8\u00ef\u00f1\u00df\u00f3\u00e1\u00f4\u00e5 \u00dd\u00f7\u00e5\u00e9 \u00ec\u00dd\u00e3\u00e5\u00e8\u00ef\u00f2 \u00ec\u00e7\u00e4\u00dd\u00ed.

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_es.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_es.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_es.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,34 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Verificador de Proyecto
+# --------------------------------------------------------------------------
+failed.download.warning=\u00a1ATENCION!: \u00a1Imposible descargar ${1}!
+remote.repository.disabled.warning=El uso de repositorios remotos est\u00e1 desactivado..
+directory.nonexistant.warning=\u00a1El directorio ${1} no existe! Intentando crear...
+not.directory.warning=\u00a1${1} no es un directorio!
+not.writable.warning=\u00a1Imposible escribir en ${1}!
+cannot.create.directory.warning=\u00a1Imposible crear el directorio ${1}!
+maven.repo.local.unset.warning=\u00a1maven.repo.local no est\u00e1 definido!
+single.unsatisfied.dependency.error=\u00a1El proceso no puede seguir! Falta la siguiente dependencia:
+multiple.unsatisfied.dependency.error=\u00a1El proceso no puede seguir! Faltan las siguientes dependencias:
+offline.snapshot.warning=\u00a1Est\u00e1s trabajando fuera de linea! \u00a1El proceso seguir\u00e1, pero es posible que ${1} no est\u00e9 actualizado!
+download.message=Intentando descargar ${1}.
+plugin.loading.error=\u00a1No se ha podido cargar el plugin ${1}!
+empty.descriptor.error=El fichero especificado, ${1} , tiene longitud cero.
+checksum.verification.error=El siguiente artefacto est\u00e1 corrupto: ${1}.
+not.existing.artifact.in.repo=El artefacto ${1} no existe en el repositorio remoto, pero existe en el local.

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_fr.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_fr.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_fr.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,72 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=ATTENTION: Impossible de t\u00e9l\u00e9charger ${1}.
+remote.repository.disabled.warning=L'utilisation du d\u00e9p\u00f4t distant est d\u00e9sactiv\u00e9e.
+directory.nonexistant.warning=Le r\u00e9pertoire ${1} n'existe pas. Tentative de cr\u00e9ation.
+not.directory.warning=${1} n'est pas un r\u00e9pertoire.
+not.writable.warning=Impossible d'\u00e9crire sur ${1}.
+cannot.create.directory.warning=Impossible de cr\u00e9er le r\u00e9pertoire ${1}.
+maven.repo.local.unset.warning=maven.repo.local n'est pas d\u00e9fini.
+single.unsatisfied.dependency.error=Le processus ne peut continuer \u00e0 cause de la d\u00e9pendance manquante suivante:
+multiple.unsatisfied.dependency.error=Le processus ne peut continuer \u00e0 cause des d\u00e9pendances manquantes suivantes:
+offline.snapshot.warning=Vous travaillez hors-connexion, alors le processus va continuer, mais ${1} peut ne pas \u00eatre \u00e0 jour!
+download.message=Tentative de t\u00e9l\u00e9chargement de ${1}.
+skip.download.message=T\u00e9l\u00e9chargement pass\u00e9 car la copie locale est \u00e0 jour!
+satisfy.project.message=Tentative de t\u00e9l\u00e9chargement des d\u00e9pandances manquantes/snapshot requis par ${1}:
+plugin.loading.error=Impossible de charger le plugin ${1}.
+empty.descriptor.error=Le fichier ${1} que vous avez sp\u00e9cifi\u00e9 est vide.
+checksum.verification.error=L'artefact suivant est corrompu: ${1}.
+not.existing.artifact.in.repo=L'artefact ${1} n'existe pas dans le d\u00e9p\u00f4t distant, mais se trouve dans le r\u00e9pertoire local.
+
+# For org.apache.maven.cli.App
+build.failed=LA CONSTRUCTION A \u00c8CHOU\u00c8
+build.successful=LA CONSTRUCTION A R\u00c8USSIE
+build.no.pom.found=ATTENTION: Aucun fichier pom a \u00e9t\u00e9 trouv\u00e9, utilisant les param\u00E8tres par d\u00E9faut!
+build.unknownGoalException=Le but '${1}' n'existe pas dans ce projet.
+build.noSuchGoalException=Un plugin a essay\u00E9 d'employer un but qui n'existe pas. 
+build.noActionDefinitionException=R\u00E9f\u00E9rence faite au but '${1}' n'a aucune d\u00E9finition.
+# Important : 12 characters before ${1}
+build.jellyException.file=Fichier... ${1}
+build.jellyException.element=\u00c8lement... ${1}
+build.jellyException.line=Ligne..... ${1}
+build.jellyException.column=Colonne... ${1}
+build.internalError=ERREUR INTERNE
+build.final.memory=M\u00E9moire Finale : ${1}
+build.total.time=Temps total    : ${1}
+build.finished.time=Fini le        : ${1}
+displayBugReportHelp.line1=Vous avez rencontr\u00E9 une erreur inconnue en ex\u00E9cutant Maven.
+displayBugReportHelp.line2=Svp aidez-nous \u00E0 corriger ce probl\u00E8me en suivant ces \u00E9tapes :
+displayBugReportHelp.line3=- lisez la FAQ de Maven \u00E0 ${1}
+displayBugReportHelp.line4=- ex\u00E9cutez la m\u00EAme commande avec le param\u00E8tre '-e', par exemple 'maven -e jar'
+displayBugReportHelp.line5=- recherchez l'erreur dans les archives \u00E0 ${1}
+displayBugReportHelp.line6=- poster la sortie de maven -e sur JIRA \u00E0 ${1} (vous devez vous enregistez d'abord)
+displayBugReportHelp.line7=- ex\u00E9cutez 'maven --info' et poster la sortie ainsi que l'environment pour le bug ci-dessus
+displayProjectHelp.title=Buts du projet
+displayInfo.info1=Plugins install\u00E9s :\u0020
+displayInfo.info2=Propri\u00E9t\u00E9s maison pour la construction :\u0020
+displayInfo.error=Exception lors de la lecture de build.properties :\u0020
+printConsoleMavenHeader.error=Incapable de charger les propri\u00E9t\u00E9s du driver :\u0020
+displayGoals.title=Disponible [Plugins] / Buts
+displayGoals.title.pluginOnly.null=Plugins disponible
+displayGoals.title.pluginOnly.notNull=Buts dans\u0020
+displayGoals.defaultGoal=But par d\u00E9faut:\u0020
+displayGoalsWithoutDescriptions.info=Buts non document\u00E9 :\u0020
+formatTime.minutes=\u0020minutes\u0020
+formatTime.seconds=\u0020secondes\u0020

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_it.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_it.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_it.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,33 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=ATTENZIONE: non e' riuscito il download di ${1}.
+remote.repository.disabled.warning=L'uso del repository remoto e' stato disabilitato.
+directory.nonexistant.warning=La directory ${1} non esiste. Tento di crearla.
+not.directory.warning=${1} non e' una directory.
+not.writable.warning=${1} non e' scrivibile.
+cannot.create.directory.warning=Impossibile creare la directory ${1}
+maven.repo.local.unset.warning=maven.repo.local non e' impostata.
+single.unsatisfied.dependency.error=La build non puo' continuare perche' non stata soddisfatta la seguente dipendenza:
+multiple.unsatisfied.dependency.error=La build non puo' continuare perche' non sono state soddisfatte le seguenti dipendenze:
+offline.snapshot.warning=Siccome stai lavorando offline la build puo' continuare, ma ${1} potrebbe essere vecchio!
+download.message=Sto tentando il download di ${1}.
+plugin.loading.error=Il plugin ${1} non puo' essere caricato.
+empty.descriptor.error=Il file ${1} che hai specificato ha lunghezza zero.
+checksum.verification.error=Il seguente artifact e' corrotto: ${1}.

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_ja.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_ja.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_ja.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,33 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=\u8b66\u544a\uff1a${1} \u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+remote.repository.disabled.warning=\u30ea\u30e2\u30fc\u30c8\u306b\u3042\u308b\u30ec\u30dd\u30b8\u30c8\u30ea\u306e\u4f7f\u7528\u304c\u4e0d\u53ef\u80fd\u3067\u3057\u305f\u3002
+directory.nonexistant.warning=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u300c${1}\u300d\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u3092\u8a66\u307f\u3066\u3044\u307e\u3059\u3002
+not.directory.warning=\u300c${1}\u300d\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+not.writable.warning=\u300c${1}\u300d\u306f\u66f8\u304d\u8fbc\u307f\u53ef\u80fd\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+cannot.create.directory.warning=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u300c${1}\u300d\u306e\u4f5c\u6210\u304c\u51fa\u6765\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+maven.repo.local.unset.warning=maven.repo.local \u304c\u30bb\u30c3\u30c8\u3055\u308c\u3066\u304a\u308a\u307e\u305b\u3093\u3002
+single.unsatisfied.dependency.error=\u30d3\u30eb\u30c9\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u7d9a\u3051\u308b\u4e8b\u304c\u51fa\u6765\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u6e80\u305f\u3055\u308c\u3066\u3044\u306a\u3044\u70ba\u3067\u3059\uff1a
+multiple.unsatisfied.dependency.error=\u30d3\u30eb\u30c9\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u7d9a\u3051\u308b\u4e8b\u304c\u51fa\u6765\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u6e80\u305f\u3055\u308c\u3066\u3044\u306a\u3044\u70ba\u3067\u3059\uff1a
+offline.snapshot.warning=\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u4f5c\u696d\u3057\u3066\u3044\u308b\u70ba\u3001\u30d3\u30eb\u30c9\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u5f15\u304d\u7d9a\u3044\u3066\u884c\u308f\u308c\u307e\u3059\u304c\u3001\u300c${1}\u300d\u304c\u53e4\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01
+download.message=\u300c${1}\u300d\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u8a66\u307f\u3066\u3044\u307e\u3059\u3002
+plugin.loading.error=\u30d7\u30e9\u30b0\u30a4\u30f3\u300c${1}\u300d\u304c\u30ed\u30fc\u30c9\u51fa\u6765\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+empty.descriptor.error=\u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u300c${1}\u300d\u306e\u30b5\u30a4\u30ba\u304c\uff10\u3067\u3059\u3002
+checksum.verification.error=\u4ee5\u4e0b\u306e\u7269\u304c\u58ca\u308c\u3066\u3044\u307e\u3059\uff1a${1}

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_nl.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_nl.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_nl.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=WAARSCHUWING: Kan ${1} niet downloaden.
+remote.repository.disabled.warning=Het gebruik van de remote repository is uitgezet.
+directory.nonexistant.warning=Directory ${1} bestaat niet. Probeer hem aan te maken.
+not.directory.warning=${1} is geen  directory.
+not.writable.warning=${1} is niet schrijfbaar.
+cannot.create.directory.warning=Kan ${1} directory niet aanmaken
+maven.repo.local.unset.warning=maven.repo.local is niet ingesteld.
+single.unsatisfied.dependency.error=Het bouwen kan niet doorgaan, omdat de volgende afhankelijkheid niet achterhaald kan worden:
+multiple.unsatisfied.dependency.error=Het bouwen kan niet doorgaan, omdat de volgende afhankelijkheden niet achterhaald kunnen worden:
+offline.snapshot.warning=Je werkt offline, dus het bouwen gaat verder, maar ${1} kan eventueel niet up-to-date zijn!
+download.message=Probeer ${1} te downloaden.
+plugin.loading.error=De ${1} plugin kan niet worden geladen.
+empty.descriptor.error=The ${1} file you specified has zero length.

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_no.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_no.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_no.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=ADVARSEL: Mislykket nedlasting av ${1}.
+remote.repository.disabled.warning=Bruk av fjernlager er deaktivert.
+directory.nonexistant.warning=Mappen ${1} finnes ikke. Fors\u00f8ker \u00e5 opprette.
+not.directory.warning=${1} er ikke en mappe.
+not.writable.warning=Kan ikke skirve til ${1}.
+cannot.create.directory.warning=Kan ikke opprette mappen ${1}.
+maven.repo.local.unset.warning=maven.repo.local er ikke definert.
+single.unsatisfied.dependency.error=Byggeprosessen kan ikke fortsette p\u00e5 grunn av f\u00f8lgende mislykkede avhengighet:
+multiple.unsatisfied.dependency.error=The build cannot continue because of the following unsatisfied dependencies:
+offline.snapshot.warning=Du arbeider frakoblet. Byggeprosessen vil fortsette, men ${1} kan bli utdatert!
+download.message=Fors\u00f8ker \u00e5 laste ned ${1}.
+plugin.loading.error=Plugin ${1} kunne ikke lastes.
+empty.descriptor.error=The ${1} file you specified has zero length.

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_pl.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_pl.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_pl.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# Project Verifier
+# --------------------------------------------------------------------------
+failed.download.warning=UWAGA: Nie uda\u0142o si\u0119 sci\u0105gn\u0105\u0107 ${1}.
+remote.repository.disabled.warning=Korzystanie ze zdalnego repozytorium jest wy\u0142\u0105czone.
+directory.nonexistant.warning=Katalog ${1} nie istnieje. Pr\u00f3buj\u0119 utworzy\u0107.
+not.directory.warning=${1} nie jest katalogiem.
+not.writable.warning=Nie mo\u017cesz zapisa\u0107 ${1}.
+cannot.create.directory.warning=Nie mo\u017cesz utworzy\u0107 katalogu ${1}.
+maven.repo.local.unset.warning=maven.repo.local nie jest zdefiniowane.
+single.unsatisfied.dependency.error=Budownaie przerwane z powodu nast\u0119puj\u0105cej niespe\u0142nionej zale\u017cno\u015bci: 
+multiple.unsatisfied.dependency.error=Budownaie przerwane z powodu nast\u0119puj\u0105cych niespe\u0142nionych zale\u017cno\u015bci: 
+offline.snapshot.warning=Pracujesz w trybie offline, wi\u0119c budowanie b\u0119dzie kontunuowane, cho\u0107 ${1} mo\u017ce by\u0107 nieaktualny!
+download.message=Pr\u00f3buj\u0119 \u015bci\u0105gn\u0105\u0107 ${1}.
+plugin.loading.error=Nie uda\u0142o si\u0119 za\u0142adowa\u0107 pluginu ${1}.
+empty.descriptor.error=The ${1} file you specified has zero length.

Added: branches/maven1/upstream/1.1~beta3/src/messages/messages_zh_CN.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/messages/messages_zh_CN.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/messages/messages_zh_CN.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,33 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# \u00cf\u00ee\u00c4\u00bf\u00d1\u00e9\u00d6\u00a4
+# --------------------------------------------------------------------------
+failed.download.warning=\u00be\u00af\u00b8\u00e6\u00a3\u00ba ${1} \u00cf\u00c2\u00d4\u00d8\u00ca\u00a7\u00b0\u00dc\u00a1\u00a3
+remote.repository.disabled.warning=\u00bd\u00fb\u00d6\u00b9\u00ca\u00b9\u00d3\u00c3\u00d4\u00b6\u00b3\u00cc\u00d7\u00ca\u00d4\u00b4\u00b2\u00d6\u00bf\u00e2\u00a1\u00a3
+directory.nonexistant.warning=\u00c4\u00bf\u00c2\u00bc ${1} \u00b2\u00bb\u00b4\u00e6\u00d4\u00da\u00a1\u00a3 \u00b3\u00a2\u00ca\u00d4\u00d0\u00c2\u00bd\u00a8\u00d6\u00d0\u00a1\u00ad\u00a1\u00ad
+not.directory.warning=${1} \u00b2\u00bb\u00ca\u00c7\u00c4\u00bf\u00c2\u00bc\u00a1\u00a3
+not.writable.warning=${1} \u00d6\u00bb\u00b6\u00c1\u00a1\u00a3
+cannot.create.directory.warning=\u00b4\u00b4\u00bd\u00a8\u00c4\u00bf\u00c2\u00bc ${1} \u00ca\u00a7\u00b0\u00dc\u00a1\u00a3
+maven.repo.local.unset.warning=\u00c3\u00bb\u00d3\u00d0\u00c9\u00e8\u00d6\u00c3 maven.repo.local \u00ca\u00f4\u00d0\u00d4\u00a1\u00a3
+single.unsatisfied.dependency.error=\u00d3\u00c9\u00d3\u00da\u00d2\u00d4\u00cf\u00c2\u00b5\u00c4\u00d2\u00c0\u00c0\u00b5\u00c8\u00b1\u00c9\u00d9\u00a3\u00ac\u00b4\u00b4\u00bd\u00a8\u00b2\u00bb\u00c4\u00dc\u00bd\u00f8\u00d0\u00d0\u00a3\u00ba
+multiple.unsatisfied.dependency.error=\u00d3\u00c9\u00d3\u00da\u00d2\u00d4\u00cf\u00c2\u00b5\u00c4\u00d2\u00c0\u00c0\u00b5\u00c8\u00b1\u00c9\u00d9\u00a3\u00ac\u00b4\u00b4\u00bd\u00a8\u00b2\u00bb\u00c4\u00dc\u00bd\u00f8\u00d0\u00d0\u00a3\u00ba
+offline.snapshot.warning=\u00c0\u00eb\u00cf\u00df\u00ca\u00b1\u00b4\u00b4\u00bd\u00a8\u00a3\u00ac\u00bf\u00c9\u00c4\u00dc  ${1} \u00b9\u00fd\u00c6\u00da\u00a3\u00a1
+download.message=\u00b3\u00a2\u00ca\u00d4\u00cf\u00c2\u00d4\u00d8 ${1}\u00a1\u00ad\u00a1\u00ad
+plugin.loading.error=\u00d7\u00b0\u00c8\u00eb plugin ${1} \u00ca\u00a7\u00b0\u00dc\u00a1\u00a3
+empty.descriptor.error=\u00ce\u00c4\u00bc\u00fe ${1} \u00b5\u00c4\u00b3\u00a4\u00b6\u00c8\u00ce\u00aa0\u00a1\u00a3
+checksum.verification.error=\u00d2\u00d4\u00cf\u00c2\u00d7\u00ca\u00d4\u00b4\u00d2\u00d1\u00b1\u00bb\u00c6\u00c6\u00bb\u00b5\u00a3\u00ba${1}\u00a1\u00a3

Added: branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-1/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-1/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+
+  <id>extend-project-1</id>
+  <name>Extended Project 1</name>
+
+  <dependencies>
+  </dependencies>
+
+  <build>
+    <sourceDirectory>${basedir}/../../../../src/java</sourceDirectory>
+    <unitTestSourceDirectory>${basedir}/../../../../src/test</unitTestSourceDirectory>
+    <integrationUnitTestSourceDirectory>${basedir}/../../../../src/test</integrationUnitTestSourceDirectory>
+    <aspectSourceDirectory>${basedir}/../../../../src/java</aspectSourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>${basedir}/../../../../src/messages</directory>
+        <includes>
+          <include>**/*.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-2/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/basedir/extend-2/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>../project.xml</extend>
+
+  <id>extend-project-2</id>
+  <name>Extended Project 2</name>
+
+  <dependencies>
+  </dependencies>
+
+  <build>
+    <sourceDirectory>../../../../src/java</sourceDirectory>
+    <unitTestSourceDirectory>../../../../src/test</unitTestSourceDirectory>
+    <integrationUnitTestSourceDirectory>../../../../src/test</integrationUnitTestSourceDirectory>
+    <aspectSourceDirectory>../../../../src/java</aspectSourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>../../../../src/messages</directory>
+        <includes>
+          <include>**/*.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/basedir/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/basedir/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/basedir/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <id>base-project</id>
+  <groupId>maven</groupId>
+  <name>Base Project</name>
+
+  <dependencies>
+  </dependencies>
+
+  <build>
+    <sourceDirectory>extend-1</sourceDirectory>
+    <unitTestSourceDirectory>extend-1</unitTestSourceDirectory>
+    <integrationUnitTestSourceDirectory>extend-1</integrationUnitTestSourceDirectory>
+    <aspectSourceDirectory>extend-1</aspectSourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>extend-2</directory>
+        <includes>
+          <include>**/*.xml</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/checksum/input.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/checksum/input.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project-child2.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project-child2.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project-child2.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project-child.xml</extend>
+  
+  <id>child</id>
+  <name>Child Project</name>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/extend/child_project/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+maven.xdoc.date=right
+myProperty2=myValue2

Added: branches/maven1/upstream/1.1~beta3/src/test/extend/project-child.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/extend/project-child.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/extend/project-child.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../../../project.xml</extend>
+  
+  <id>super-extendo</id>
+  <groupId>groupId</groupId>
+  <name>Super Extendo</name>
+
+  <siteAddress>theSiteAddress</siteAddress>
+  <siteDirectory>theSiteDirectory</siteDirectory>
+
+  <dependencies>
+    <dependency>
+      <id>child-dep1</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+
+    <unitTest>
+      <includes>
+        <include>**/*Test*.java</include>
+      </includes>
+      <excludes>
+        <exclude>**/TestAll.java</exclude>
+        <exclude>**/*Abstract*.java</exclude>
+      </excludes>
+    </unitTest>
+
+    <sourceModifications>
+      <sourceModification>
+        <className>java.util.logging.Logger</className>
+        <excludes>
+          <exclude>**/Jdk14Logger.java</exclude>
+        </excludes>
+      </sourceModification>
+    </sourceModifications>
+
+  </build>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/extend/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/extend/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/extend/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,19 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+maven.jarResources.basedir = conf/java
+maven.xdoc.date = left
+myProperty=myValue

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/JAXPTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/JAXPTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/JAXPTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,84 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import junit.framework.TestCase;
+
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * Tests to check JAXP is correctly configured and classes are being loaded
+ */
+public class JAXPTest
+    extends TestCase
+{
+
+    /**
+     * Constructor for JAXPTest.
+     * @param name test name
+     */
+    public JAXPTest( String name )
+    {
+        super( name );
+    }
+
+    /**
+     * test the jaxp property for the sax parser (org.xml.sax.parser)
+     * returns the piccolo parser
+     * @throws Exception if any problems occur
+     */
+    public void testSAXParser()
+        throws Exception
+    {
+        // the sax parser should be piccolo
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+        factory.setNamespaceAware( true );
+        SAXParser parser = factory.newSAXParser();
+        assertTrue( "Wrong sax parser", parser.getClass().getName().startsWith( "com.bluecast.xml." ) );
+    }
+
+    /**
+     * test the jaxp property for the XML Reader (org.xml.sax.driver)
+     * returns the correct XMLReader
+     * @throws Exception if any problems occur
+     */
+    public void testXMLReader()
+        throws Exception
+    {
+        XMLReader reader = XMLReaderFactory.createXMLReader();
+        assertTrue( "Wrong xml reader", reader.getClass().getName().startsWith( "com.bluecast.xml." ) );
+    }
+
+    /**
+     * Test that the DocumentBuilderFactory comes from Xerces
+     */
+    public void testDocumentBuilderFactory()
+        throws Exception
+    {
+        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+        factory.setNamespaceAware( true );
+        DocumentBuilder builder = factory.newDocumentBuilder();
+        assertTrue( "Wrong document builder", builder.getClass().getName().startsWith( "org.apache.xerces.jaxp." ) );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/MavenUtilsTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/MavenUtilsTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/MavenUtilsTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,245 @@
+package org.apache.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.jelly.MavenJellyContext;
+
+/**
+ * Test cases for various MavenUtils methods.
+ *
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ * @author others
+ * @version $Id: MavenUtilsTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenUtilsTest
+    extends TestCase
+{
+    public MavenUtilsTest( String testName )
+    {
+        super( testName );
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite( MavenUtilsTest.class );
+    }
+
+    public void testMergeMaps()
+    {
+        Map dominantMap = new HashMap();
+        dominantMap.put( "a", "a" );
+        dominantMap.put( "b", "b" );
+        dominantMap.put( "c", "c" );
+        dominantMap.put( "d", "d" );
+        dominantMap.put( "e", "e" );
+        dominantMap.put( "f", "f" );
+
+        Map recessiveMap = new HashMap();
+        recessiveMap.put( "a", "invalid" );
+        recessiveMap.put( "b", "invalid" );
+        recessiveMap.put( "c", "invalid" );
+        recessiveMap.put( "x", "x" );
+        recessiveMap.put( "y", "y" );
+        recessiveMap.put( "z", "z" );
+
+        Map result = MavenUtils.mergeMaps( dominantMap, recessiveMap );
+
+        // We should have 9 elements
+        assertEquals( 9, result.keySet().size() );
+
+        // Check the elements.
+        assertEquals( "a", result.get( "a" ) );
+        assertEquals( "b", result.get( "b" ) );
+        assertEquals( "c", result.get( "c" ) );
+        assertEquals( "d", result.get( "d" ) );
+        assertEquals( "e", result.get( "e" ) );
+        assertEquals( "f", result.get( "f" ) );
+        assertEquals( "x", result.get( "x" ) );
+        assertEquals( "y", result.get( "y" ) );
+        assertEquals( "z", result.get( "z" ) );
+    }
+
+    public void testMergeMapArray()
+    {
+        // Test empty array of Maps
+        Map result0 = MavenUtils.mergeMaps( new Map[] {} );
+
+        assertNull( result0 );
+
+        // Test with an array with a single element.
+        Map map1 = new HashMap();
+        map1.put( "a", "a" );
+
+        Map result1 = MavenUtils.mergeMaps( new Map[] { map1 } );
+
+        assertEquals( "a", result1.get( "a" ) );
+
+        // Test with an array with two elements.
+        Map map2 = new HashMap();
+        map2.put( "a", "aa" );
+        map2.put( "b", "bb" );
+
+        Map result2 = MavenUtils.mergeMaps( new Map[] { map1, map2 } );
+
+        assertEquals( "a", result2.get( "a" ) );
+        assertEquals( "bb", result2.get( "b" ) );
+
+        // Now swap the dominant order.
+        Map result3 = MavenUtils.mergeMaps( new Map[] { map2, map1 } );
+
+        assertEquals( "aa", result3.get( "a" ) );
+        assertEquals( "bb", result3.get( "b" ) );
+
+        // Test with an array with three elements.
+        Map map3 = new HashMap();
+        map3.put( "a", "aaa" );
+        map3.put( "b", "bbb" );
+        map3.put( "c", "ccc" );
+
+        Map result4 = MavenUtils.mergeMaps( new Map[] { map1, map2, map3 } );
+
+        assertEquals( "a", result4.get( "a" ) );
+        assertEquals( "bb", result4.get( "b" ) );
+        assertEquals( "ccc", result4.get( "c" ) );
+
+        // Now swap the dominant order.
+        Map result5 = MavenUtils.mergeMaps( new Map[] { map3, map2, map1 } );
+
+        assertEquals( "aaa", result5.get( "a" ) );
+        assertEquals( "bbb", result5.get( "b" ) );
+        assertEquals( "ccc", result5.get( "c" ) );
+    }
+
+    public void testMavenPropertiesLoading()
+    {
+        // Mimic MavenSession properties loading. Properties listed
+        // in dominant order.
+        Properties systemProperties = new Properties();
+        Properties userBuildProperties = new Properties();
+        Properties projectBuildProperties = new Properties();
+        Properties projectProperties = new Properties();
+        Properties driverProperties = new Properties();
+
+        // System properties
+        systemProperties.setProperty( "maven.foo", "/projects/maven" );
+
+        // User build properties
+        userBuildProperties.setProperty( "maven.username", "jvanzyl" );
+        userBuildProperties.setProperty( "maven.repo.remote.enabled", "false" );
+        userBuildProperties.setProperty( "maven.repo.local", "/opt/maven/repository" );
+
+        // Project build properties
+        projectBuildProperties.setProperty( "maven.final.name", "maven" );
+
+        String mavenRepoRemote = "http://www.ibiblio.org/maven,http://foo/bar";
+
+        // Project properties
+        projectProperties.setProperty( "maven.repo.remote", mavenRepoRemote );
+
+        String basedir = "/home/jvanzyl/projects/maven";
+        String oldBasedir = System.getProperty( "basedir" );
+        System.getProperties().remove( "basedir" );
+
+        // Driver properties
+        driverProperties.setProperty( "maven.build.src", "${basedir}/src" );
+        driverProperties.setProperty( "maven.build.dir", "${basedir}/target" );
+        driverProperties.setProperty( "maven.build.dest", "${maven.build.dir}/classes" );
+        driverProperties.setProperty( "maven.repo.remote", "http://www.ibiblio.org/maven" );
+        driverProperties.setProperty( "maven.final.name", "maven-1.0" );
+        driverProperties.setProperty( "maven.repo.remote.enabled", "true" );
+        driverProperties.setProperty( "maven.repo.local", "${mavenHome}/repository" );
+
+        Map result = MavenUtils.mergeMaps( new Map[] {
+            systemProperties,
+            userBuildProperties,
+            projectBuildProperties,
+            projectProperties,
+            driverProperties } );
+
+        MavenJellyContext context = new MavenJellyContext();
+        context.setVariable( "basedir", basedir );
+        MavenUtils.integrateMapInContext( result, context );
+
+        // Values that should be taken from systemProperties.
+        assertEquals( "/projects/maven", (String) context.getVariable( "maven.foo" ) );
+
+        // Values that should be taken from userBuildProperties.
+        assertEquals( "/opt/maven/repository", (String) context.getVariable( "maven.repo.local" ) );
+        assertEquals( "false", (String) context.getVariable( "maven.repo.remote.enabled" ) );
+        assertEquals( "jvanzyl", (String) context.getVariable( "maven.username" ) );
+
+        // Values take from projectBuildProperties.
+        assertEquals( "maven", (String) context.getVariable( "maven.final.name" ) );
+
+        // Values take from projectProperties.
+        assertEquals( mavenRepoRemote, (String) context.getVariable( "maven.repo.remote" ) );
+
+        // Values taken from driver properties.
+        assertEquals( basedir + "/target", (String) context.getVariable( "maven.build.dir" ) );
+        assertEquals( basedir + "/src", (String) context.getVariable( "maven.build.src" ) );
+        assertEquals( basedir + "/target/classes", (String) context.getVariable( "maven.build.dest" ) );
+
+        System.setProperty( "basedir", oldBasedir );
+    }
+
+    /**
+     * Test makeAbsolutePath.
+     * @throws Exception if there was a problem
+     */
+    public void testMakeAbsolutePath()
+        throws Exception
+    {
+        String basedir = System.getProperty( "basedir" );
+        File basedirFile = new File( basedir ).getCanonicalFile();
+        assertEquals( "Check relative path", new File( basedir + "/project.xml" ).getCanonicalPath(), MavenUtils
+            .makeAbsolutePath( basedirFile, "project.xml" ) );
+        assertEquals( "Check unix relative path", new File( basedir + "/src/test/basedir/project.xml" )
+            .getCanonicalPath(), MavenUtils.makeAbsolutePath( basedirFile, "src/test/basedir/project.xml" ) );
+        assertEquals( "Check absolute path outside basedir", new File( "/www/docs/index.html" ).getCanonicalPath(),
+                      MavenUtils.makeAbsolutePath( basedirFile, new File( "/www/docs/index.html" ).getCanonicalPath() ) );
+    }
+
+    /**
+     * Test makeRelativePath.
+     * @throws Exception if there was a problem
+     */
+    public void testMakeRelativePath()
+        throws Exception
+    {
+        String basedir = new File( System.getProperty( "basedir" ) ).getCanonicalPath();
+        File basedirFile = new File( basedir ).getCanonicalFile();
+        assertEquals( "Check relative path", "project.xml", MavenUtils.makeRelativePath( basedirFile, new File( basedir
+            + "/project.xml" ).getCanonicalPath() ) );
+        assertEquals( "Check unix relative path", "src" + File.separatorChar + "test" + File.separatorChar + "basedir"
+            + File.separatorChar + "project.xml", MavenUtils.makeRelativePath( basedirFile, new File( basedir
+            + "/src/test/basedir/project.xml" ).getCanonicalPath() ) );
+        assertEquals( "Check absolute path outside basedir", new File( "/www/docs/index.html" ).getCanonicalPath(),
+                      MavenUtils.makeRelativePath( basedirFile, new File( "/www/docs/index.html" ).getCanonicalPath() ) );
+
+        assertEquals( "Check absolute path == basedir", ".", MavenUtils.makeRelativePath( basedirFile, basedir ) );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,237 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.project.Project;
+
+/**
+ * @author <a href="bwalding at jakarta.org">Ben Walding</a>
+ * @version $Id: DependencyResolverTest.java 424472 2006-07-21 22:00:31Z aheritier $
+ */
+public class DependencyResolverTest
+    extends TestCase
+{
+    private WerkzDependencyResolver dri;
+
+    public void testSimple1()
+        throws Exception
+    {
+        List projects = DependencyResolverTestData.getTestSimple1();
+        testSimple1Source( dri, projects );
+        testSimple1Binary( dri, projects );
+    }
+
+    public void testSimple2()
+        throws Exception
+    {
+        List projects = DependencyResolverTestData.getTestSimple2();
+        testSimple2( dri, projects );
+    }
+
+    public void testSimple3()
+        throws Exception
+    {
+        List projects = DependencyResolverTestData.getTestSimple3();
+        testSimple3( dri, projects );
+    }
+
+    public void testComplex()
+        throws Exception
+    {
+        List projects = DependencyResolverTestData.getTestComplex();
+        testComplex( dri, projects );
+    }
+
+    public void testCycle()
+        throws Exception
+    {
+        List projects = DependencyResolverTestData.getTestCycle();
+        testCycle( dri, projects );
+    }
+
+    public void testCycle( DependencyResolverInterface dri, List projects )
+        throws Exception
+    {
+        DependencyResolver dr = new DependencyResolver( dri );
+        dr.setProjects( projects );
+        try
+        {
+            dr.getSortedDependencies( true );
+            fail( "Shouldn't be able to resolve cycles" );
+        }
+        catch ( Exception e )
+        {
+            //Success
+        }
+
+        try
+        {
+            dr.getSortedDependencies( false );
+            fail( "Shouldn't be able to resolve cycles" );
+        }
+        catch ( Exception e )
+        {
+            //Success
+        }
+    }
+
+    public void testSimple1Source( DependencyResolverInterface dri, List projects )
+        throws Exception
+    {
+        DependencyResolver dr = new DependencyResolver( dri );
+        dr.setProjects( projects );
+
+        assertEquals( "test1.sorted", "b:b,e:e,n:n,j:j", listify( dri.getSortedDependencies( true ) ) );
+
+        projects = dr.getSortedDependencies( true );
+        assertBefore( projects, "b:b", "e:e" );
+        assertBefore( projects, "e:e", "n:n" );
+        assertBefore( projects, "n:n", "j:j" );
+
+        Project e = DependencyResolver.getProject( projects, "e:e" );
+        assertEquals( "test1.sorted", "b:b,e:e", listify( dri.getSortedDependencies( e, true ) ) );
+        Project n = DependencyResolver.getProject( projects, "n:n" );
+        assertEquals( "test1.sorted", "b:b,e:e,n:n", listify( dri.getSortedDependencies( n, true ) ) );
+        Project j = DependencyResolver.getProject( projects, "j:j" );
+        assertEquals( "test1.sorted", "b:b,e:e,n:n,j:j", listify( dri.getSortedDependencies( j, true ) ) );
+    }
+
+    /**
+     * @todo THIS IS A DUPLICATE of testSimple1Source
+     * @param dri dependency resolver
+     * @param projects list of projects to resolve
+     * @throws Exception when anything happens
+     */
+    public void testSimple1Binary( DependencyResolverInterface dri, List projects )
+        throws Exception
+    {
+        testSimple1Source( dri, projects );
+    }
+
+    public void testSimple2( DependencyResolverInterface dri, List projects )
+        throws Exception
+    {
+        dri.setProjects( projects );
+        projects = dri.getSortedDependencies( true );
+
+        assertEquals( "test3.sorted", "th:th,eq:eq,ui:ui,ck:ck,br:br,ow:ow,nf:nf,ox:ox", listify( dri
+            .getSortedDependencies( true ) ) );
+        Project eq = DependencyResolver.getProject( projects, "eq:eq" );
+        assertEquals( "test3.sorted", "th:th,eq:eq", listify( dri.getSortedDependencies( eq, true ) ) );
+        Project ck = DependencyResolver.getProject( projects, "ck:ck" );
+        assertEquals( "test3.sorted", "th:th,eq:eq,ui:ui,ck:ck", listify( dri.getSortedDependencies( ck, true ) ) );
+        Project ow = DependencyResolver.getProject( projects, "ow:ow" );
+        assertEquals( "test3.sorted", "th:th,eq:eq,ui:ui,ck:ck,br:br,ow:ow",
+                      listify( dri.getSortedDependencies( ow, true ) ) );
+    }
+
+    public void testSimple3( DependencyResolverInterface dri, List projects )
+        throws Exception
+    {
+        dri.setProjects( projects );
+        projects = dri.getSortedDependencies( true );
+
+        assertEquals( "test2.sorted", "th:th,eq:eq,ui:ui,ck:ck,br:br,ow:ow,nf:nf,ox:ox", listify( dri
+            .getSortedDependencies( true ) ) );
+        Project eq = DependencyResolver.getProject( projects, "eq:eq" );
+        assertEquals( "test3.sorted", "th:th,eq:eq", listify( dri.getSortedDependencies( eq, true ) ) );
+        Project ck = DependencyResolver.getProject( projects, "ck:ck" );
+        assertEquals( "test3.sorted", "th:th,eq:eq,ui:ui,ck:ck", listify( dri.getSortedDependencies( ck, true ) ) );
+        Project ow = DependencyResolver.getProject( projects, "ow:ow" );
+        assertEquals( "test3.sorted", "th:th,eq:eq,ui:ui,ck:ck,br:br,ow:ow",
+                      listify( dri.getSortedDependencies( ow, true ) ) );
+    }
+
+    public void testComplex( DependencyResolverInterface dri, List projects )
+        throws Exception
+    {
+        dri.setProjects( projects );
+        //System.out.println("Source DepResolver:" + dri.getClass().getName());
+        projects = dri.getSortedDependencies( true );
+        //dumpList(projects);
+        assertEquals( "SourceDep.size()", projects.size(), 12 );
+        assertBefore( projects, "tyre:tyre", "car:car" );
+        assertBefore( projects, "rubber:rubber", "tyre:tyre" );
+        assertBefore( projects, "beer:beer", "driver:driver" );
+
+        //System.out.println("Binary DepResolver:" + dri.getClass().getName());
+        projects = dri.getSortedDependencies( false );
+        //dumpList(projects);
+        assertEquals( "SourceDep.size()", projects.size(), 5 );
+        assertBefore( projects, "hops:hops", "beer:beer" );
+        assertBefore( projects, "tyre:tyre", "car:car" );
+        assertBefore( projects, "beer:beer", "driver:driver" );
+
+    }
+
+    public void dumpList( List projects )
+    {
+        Iterator iter = projects.iterator();
+        while ( iter.hasNext() )
+        {
+            Project project = (Project) iter.next();
+            System.out.println( project.getId() );
+        }
+    }
+
+    public void assertBefore( List projects, String first, String second )
+    {
+        assertTrue( first + " earlier than " + second, getIndex( projects, first ) < getIndex( projects, second ) );
+    }
+
+    public int getIndex( List projects, String id )
+    {
+        for ( int i = 0; i < projects.size(); i++ )
+        {
+            Project p = (Project) projects.get( i );
+            if ( p.getId().equals( id ) )
+            {
+                return i;
+            }
+        }
+        throw new IllegalArgumentException( "No such project: " + id );
+    }
+
+    public String listify( List projects )
+    {
+        StringBuffer buf = new StringBuffer();
+        Iterator iter = projects.iterator();
+        while ( iter.hasNext() )
+        {
+            Project project = (Project) iter.next();
+            buf.append( project.getId() );
+            if ( iter.hasNext() )
+            {
+                buf.append( "," );
+            }
+        }
+        return buf.toString();
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        dri = new WerkzDependencyResolver();
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTest.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTestData.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTestData.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/DependencyResolverTestData.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,122 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.apache.maven.project.Dependency;
+import org.apache.maven.project.Project;
+
+/**
+ * @author  Ben Walding
+ * @version $Id: DependencyResolverTestData.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class DependencyResolverTestData
+{
+
+    public static List getTestSimple1()
+    {
+        List results = new ArrayList();
+        results.add( createProject( "j:j", "n:n" ) );
+        results.add( createProject( "n:n", "e:e" ) );
+        results.add( createProject( "e:e", "b:b" ) );
+        results.add( createProject( "b:b", "" ) );
+        return results;
+    }
+
+    public static List getTestSimple2()
+    {
+        List results = new ArrayList();
+        results.add( createProject( "ox:ox", "nf:nf" ) );
+        results.add( createProject( "nf:nf", "ow:ow" ) );
+        results.add( createProject( "ow:ow", "br:br" ) );
+        results.add( createProject( "br:br", "ck:ck" ) );
+        results.add( createProject( "ck:ck", "ui:ui" ) );
+        results.add( createProject( "ui:ui", "eq:eq" ) );
+        results.add( createProject( "eq:eq", "th:th" ) );
+        results.add( createProject( "th:th", "" ) );
+        results.add( createProject( "ox:ox", "nf:nf" ) );
+        results.add( createProject( "ox:ox", "nf:nf" ) );
+        return results;
+    }
+
+    public static List getTestSimple3()
+    {
+        List results = new ArrayList();
+        results.add( createProject( "ox:ox", "nf:nf" ) );
+        results.add( createProject( "ui:ui", "eq:eq" ) );
+        results.add( createProject( "ow:ow", "br:br" ) );
+        results.add( createProject( "ck:ck", "ui:ui" ) );
+        results.add( createProject( "nf:nf", "ow:ow" ) );
+        results.add( createProject( "eq:eq", "th:th" ) );
+        results.add( createProject( "br:br", "ck:ck" ) );
+        results.add( createProject( "th:th", "" ) );
+        return results;
+    }
+
+    public static List getTestCycle()
+    {
+        List results = new ArrayList();
+        results.add( createProject( "a:a", "b:b" ) );
+        results.add( createProject( "b:b", "c:c" ) );
+        results.add( createProject( "c:c", "a:a" ) );
+        return results;
+    }
+
+    public static List getTestComplex()
+    {
+        List results = new ArrayList();
+        results.add( createProject( "tyre:tyre", "rubber:rubber" ) );
+        results.add( createProject( "car:car", "petrol:petrol,driver:driver,key:key,tyre:tyre" ) );
+        results.add( createProject( "car:car", "" ) );
+        results.add( createProject( "driver:driver", "wallet:wallet,license:license,key:key" ) );
+        results.add( createProject( "driver:driver", "beer:beer" ) );
+        results.add( createProject( "beer:beer", "water:water,hops:hops,malt:malt" ) );
+        results.add( createProject( "hops:hops", "" ) );
+        return results;
+    }
+
+    private static Project createProject( String id )
+    {
+        Project p = new Project();
+        p.setId( id );
+        return p;
+    }
+
+    private static Dependency createDependency( String id )
+    {
+        Dependency d = new Dependency();
+        d.setId( id );
+        return d;
+    }
+
+    private static Project createProject( String id, String dependencies )
+    {
+        StringTokenizer depToks = new StringTokenizer( dependencies, ",", false );
+        Project p = createProject( id );
+        while ( depToks.hasMoreTokens() )
+        {
+            String token = depToks.nextToken();
+            Dependency d = createDependency( token );
+            p.addDependency( d );
+        }
+        return p;
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/RootRelativePathTagTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/RootRelativePathTagTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/RootRelativePathTagTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,99 @@
+package org.apache.maven.jelly.tags.maven;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link RootRelativePathTag}.
+ * 
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @version $Id: RootRelativePathTagTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class RootRelativePathTagTest
+    extends TestCase
+{
+    /**
+     * The tag to test
+     */
+    private RootRelativePathTag tag;
+
+    /**
+     * @see TestCase#setUp()
+     */
+    protected void setUp()
+    {
+        tag = new RootRelativePathTag();
+    }
+
+    public void testComputePathOk()
+        throws Exception
+    {
+        tag.setPath( "c:/apps/myproject/path/subproject2" );
+        tag.setRootdir( new File( "c:/apps/myproject" ) );
+        String result = tag.computePath();
+        assertEquals( "./../..", result );
+    }
+
+    public void testComputePathWithEndingSeparator()
+        throws Exception
+    {
+        tag.setPath( "c:/apps/myproject/path/subproject2" );
+        tag.setRootdir( new File( "c:/apps/myproject/" ) );
+        String result = tag.computePath();
+        assertEquals( "./../..", result );
+    }
+
+    public void testComputePathOk2()
+        throws Exception
+    {
+        tag.setPath( "c:/apps/myproject" );
+        tag.setRootdir( new File( "c:/apps/myproject" ) );
+        String result = tag.computePath();
+        assertEquals( ".", result );
+    }
+
+    public void testComputePathOk3()
+        throws Exception
+    {
+        tag.setPath( "c:\\apps\\myproject\\path\\subproject2" );
+        tag.setRootdir( new File( "c:\\apps\\myproject" ) );
+        String result = tag.computePath();
+        assertEquals( "./../..", result );
+    }
+
+    public void testComputePathWhenPathNotSubsetRootdir()
+        throws Exception
+    {
+        tag.setPath( "c:/apps/myproject/path/subproject2" );
+        tag.setRootdir( new File( "c:/somethingelse" ) );
+
+        try
+        {
+            tag.computePath();
+            fail( "should have thrown an exception" );
+        }
+        catch ( IOException expected )
+        {
+            assertTrue( true );
+        }
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/jelly/tags/maven/RootRelativePathTagTest.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,73 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.MavenException;
+
+/**
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: PluginCacheManagerTest.java,v 1.1 2002/12/31 07:10:06 jvanzyl
+ *      Exp $
+ */
+public class PluginCacheManagerTest
+    extends TestCase
+{
+    private static String PLUGIN_SCRIPT = System.getProperty( "basedir" )
+        + "/src/test/java/org/apache/maven/plugin/plugin.jelly";
+
+    /**
+     * Constructor.
+     *
+     * @param name Name of the test.
+     */
+    public PluginCacheManagerTest( String name )
+    {
+        super( name );
+    }
+
+    /**
+     * Test the plugin cache builder.
+     */
+    public void testPluginGraphBuilder()
+        throws FileNotFoundException, IOException, MavenException
+    {
+        PluginCacheManager pgb = new PluginCacheManager();
+        JellyScriptHousing housing = new JellyScriptHousing( new File( PLUGIN_SCRIPT ).getParentFile(), null );
+        FileInputStream fis = new FileInputStream( new File( PLUGIN_SCRIPT ) );
+        housing.parse( pgb, PLUGIN_SCRIPT, fis );
+        fis.close();
+
+        assertEquals( "Generate docs in APT format>xdoc:generate-from-pom", pgb.getGoalCache()
+            .getProperty( "apt:generate" ) );
+
+        assertEquals( "plugin", pgb.getPluginCache().getProperty( "apt:generate" ) );
+
+        assertEquals( "plugin", pgb.getDynaTagLibCache().getProperty( "aptdoc" ) );
+
+        assertEquals( "plugin", pgb.getCallbackCache().getProperty( "xdoc:transform.pre" ) );
+
+        assertEquals( "plugin", pgb.getCallbackCache().getProperty( "foo.post" ) );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginManagerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/PluginManagerTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,281 @@
+package org.apache.maven.plugin;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.MavenConstants;
+import org.apache.maven.MavenSession;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.jelly.MavenJellyContext;
+import org.apache.maven.project.Project;
+
+import com.werken.forehead.Forehead;
+
+/**
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ *
+ */
+public class PluginManagerTest
+    extends TestCase
+{
+
+    /** instance being tested */
+    private PluginManager pluginManager;
+
+    /** project to test with */
+    private Project project;
+
+    /** directory for fake data */
+    private static final String FAKE_BASE = "/target/PluginManagerTest/";
+
+    private static String FS = File.separator;
+
+    /** source base */
+    private static final String SOURCE_BASE = FS + "src" + FS + "test" + FS + "java" + FS + "org" + FS + "apache" + FS
+        + "maven" + FS + "plugin" + FS;
+
+    /** base directory */
+    private String basedir;
+
+    /** fake maven.home */
+    private String fakeHome;
+
+    /**
+     * Constructor for PluginManagerTest.
+     * @param name the name of the test case
+     */
+    public PluginManagerTest( String name )
+    {
+        super( name );
+    }
+
+    /**
+     * Set up the test case
+     * @throws Exception when any error occurs
+     */
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        basedir = System.getProperty( "user.dir" );
+        assertNotNull( basedir );
+
+        // 1) need to fake out maven home, so that the unpacked plugin dir in the test
+        //    directory
+        fakeHome = basedir + SOURCE_BASE + "maven.home";
+        System.setProperty( "maven.home", fakeHome );
+
+        MavenJellyContext context = MavenUtils.createContext( new File( basedir ) );
+        assertNotNull( context );
+
+        // 2) need to fake out maven home local
+        String fakeHomeLocal = basedir + FAKE_BASE + "maven.home.local";
+        new File( fakeHomeLocal ).mkdirs();
+        context.setVariable( MavenConstants.MAVEN_HOME_LOCAL, fakeHomeLocal );
+
+        // 3) Need to fake out unpacked plugins dir so that the plugins are
+        //    unpacked locally in the test directory
+        String fakeUnpackedPlugins = basedir + FAKE_BASE + "maven.plugin.unpacked.dir";
+        new File( fakeUnpackedPlugins ).mkdirs();
+        context.setVariable( MavenConstants.MAVEN_UNPACKED_PLUGINS_DIR, fakeUnpackedPlugins );
+
+        // fake forehead up - must be done before MavenSession creation
+        FileInputStream fis = new FileInputStream( basedir + SOURCE_BASE + "forehead.conf" );
+        Forehead.getInstance().config( fis );
+        fis.close();
+
+        // setup maven session
+        MavenSession mavenSession = new MavenSession();
+        mavenSession.setRootContext( context );
+        File projectFile = new File( basedir + "/src/test/touchstone-build/project.xml" );
+
+        // set the project being run
+        MavenSession.setRootDescriptorFile( projectFile );
+
+        project = MavenUtils.getProject( projectFile, context );
+
+        // This seems like a glitch in the context assembly that doesn't affect the real world, so work around it
+        project.getContext().setMavenRepoLocal( fakeHomeLocal + "/repository" );
+
+        assertNotNull( project );
+
+        pluginManager = mavenSession.getPluginManager();
+    }
+
+    /**
+     * Delete the fake directory
+     * @throws Exception when any error occurs
+     * @todo uncomment
+     */
+    public void tearDown()
+        throws Exception
+    {
+        //        try
+        //        {
+        //            // clean up directories
+        //            String fake = basedir + FAKE_BASE;
+        //            FileUtils.deleteDirectory(fake);
+        //        }
+        //        catch (IOException e)
+        //        {
+        //            // ignore
+        //        }
+    }
+
+    /**
+     * Make sure the plugin manager has loaded the plugins from the directory specified
+     * @throws Exception when any error occurs
+     */
+    public void testLoading()
+        throws Exception
+    {
+        assertNotNull( pluginManager );
+        pluginManager.initialize();
+        assertTrue( "clean plugin is not loaded properly", pluginManager.getGoalNames().contains( "clean" ) );
+        assertTrue( "clean plugin is not loaded properly", pluginManager.getGoalNames().contains( "clean:clean" ) );
+        assertTrue( "clean plugin is not loaded properly", pluginManager.getGoalNames().contains( "clean:original" ) );
+    }
+
+    /**
+     * Make sure the plugin manager can install a plugin
+     * @throws Exception when any error occurs
+     */
+    public void testInstall()
+        throws Exception
+    {
+        installPlugin( "maven-java-plugin-1.3.jar" );
+
+        assertTrue( "java plugin is not loaded properly", pluginManager.getGoalNames().contains( "java:compile" ) );
+    }
+
+    /**
+     * Make sure the plugin manager can install a plugin twice without bad
+     * effects.
+     * @throws Exception when any error occurs
+     */
+    public void testInstallTwice()
+        throws Exception
+    {
+        installPlugin( "maven-java-plugin-1.3.jar" );
+
+        assertTrue( "java plugin is not loaded properly", pluginManager.getGoalNames().contains( "java:compile" ) );
+
+        installPlugin( "maven-java-plugin-1.3.jar" );
+
+        assertTrue( "java plugin is not loaded properly", pluginManager.getGoalNames().contains( "java:compile" ) );
+    }
+
+    /**
+     * Make sure the plugin manager can upgrade a plugin
+     * @throws Exception when any error occurs
+     * @todo what is a valid way to check the correct plugin will be used?
+     */
+    public void testUpgrade()
+        throws Exception
+    {
+        installPlugin( "maven-clean-plugin-1.2-SNAPSHOT.jar" );
+
+        assertTrue( "upgraded clean plugin is not loaded properly", pluginManager.getGoalNames()
+            .contains( "clean:other" ) );
+        //assertFalse("original clean plugin is not removed properly",
+        //pluginManager.getGoalNames().contains("clean:original"));
+    }
+
+    /**
+     * Make sure the plugin manager can downgrade a plugin
+     * @throws Exception when any error occurs
+     * @todo what is a valid way to check the correct plugin will be used?
+     */
+    public void testDowngrade()
+        throws Exception
+    {
+        installPlugin( "maven-clean-plugin-1.0.jar" );
+
+        assertTrue( "downgraded clean plugin is not loaded properly", pluginManager.getGoalNames()
+            .contains( "clean:first" ) );
+        //assertFalse("original clean plugin is not removed properly",
+        //pluginManager.getGoalNames().contains("clean:original"));
+    }
+
+    /**
+     * install a plugin
+     * @param name the file name of the plugin to install relative to the source base
+     * @throws Exception when any error occurs
+     */
+    private void installPlugin( String name )
+        throws Exception
+    {
+        assertNotNull( pluginManager );
+        pluginManager.initialize();
+        File pluginToInstall = new File( basedir + SOURCE_BASE + name );
+        pluginManager.installPlugin( pluginToInstall, project );
+    }
+
+    /**
+     * delete a plugin
+     * @param name the file name of the plugin to install relative to the source base
+     * @throws Exception when any error occurs
+     */
+    private void deletePlugin( String name )
+        throws Exception
+    {
+        File plugin = new File( fakeHome + "/plugins/" + name );
+        if ( plugin.exists() )
+        {
+            plugin.delete();
+        }
+    }
+
+    /**
+     *  Test extracted plugins are loaded from maven.home - for the bootstrap.
+     *  @throws Exception on failure
+     */
+    public void testExtractedPluginInMavenHome()
+        throws Exception
+    {
+        assertNotNull( pluginManager );
+        pluginManager.initialize();
+
+        assertTrue( "check extracted jar plugin is loaded", pluginManager.getGoalNames().contains( "jar:jar" ) );
+    }
+
+    /**
+     * Test plugin property substitution.
+     */
+    public void testPluginPropertySubstitution()
+        throws Exception
+    {
+        assertNotNull( pluginManager );
+        pluginManager.initialize();
+        pluginManager.setupBaseContext( project );
+
+        MavenJellyContext context = pluginManager.getPluginContext( "maven-jar-plugin" );
+        assertNotNull( "check context exists", context );
+
+        assertEquals( "check plugin.resources", fakeHome + FS + "plugins" + FS + "jar" + FS + "plugin-resources",
+                      ( (File) context.getVariable( "plugin.resources" ) ).getAbsolutePath() );
+        assertEquals( "check plugin property",
+                      fakeHome + FS + "plugins" + FS + "jar" + FS + "plugin-resources/foo.bar", context
+                          .getVariable( "maven.jar.foo" ) );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/forehead.conf
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/forehead.conf	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/forehead.conf	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,10 @@
+
++user.dir
+
+=[root.maven] org.apache.maven.cli.App
+
+[root]
+    ${user.dir}
+
+[root.maven]
+    ${user.dir}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.0.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.0.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.2-SNAPSHOT.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.2-SNAPSHOT.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-java-plugin-1.3.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven-java-plugin-1.3.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Ant-Version: Apache Ant 1.5.3 
+Created-By: Apache Jakarta Maven
+Built-By: jvanzyl
+Package: org.apache.maven
+Build-Jdk: 1.4.1_02
+Extension-Name: maven-jar-plugin
+Specification-Version: 
+Specification-Vendor: Apache Software Foundation
+Specification-Title: Create jar files
+Implementation-Version: 1.3
+Implementation-Vendor: Apache Software Foundation
+Implementation-Vendor-Id: 
+


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,247 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<project 
+  xmlns:j="jelly:core"
+  xmlns:ant="jelly:ant"
+  xmlns:license="license"
+  xmlns:maven="jelly:maven"
+  xmlns:deploy="deploy"
+  xmlns:util="jelly:util"
+  xmlns:doc="doc">
+
+  <!-- ================================================================== -->
+  <!-- J A R                                                              -->
+  <!-- ================================================================== -->
+  <goal name="jar" prereqs="jar:jar" 
+    description="Create the deliverable jar file."/>
+    
+  <goal name="jar:jar"
+        description="Create the deliverable jar file."
+        prereqs="test:test">
+
+    <ant:available property="maven.jar.manifest.available" 
+      file="${maven.jar.manifest}"/>
+
+    <!-- See http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html -->
+    <!-- See http://java.sun.com/j2se/1.4.1/docs/guide/jar/jar.html -->
+    <ant:jar
+      jarfile="${maven.build.dir}/${maven.final.name}.jar"
+      basedir="${maven.build.dest}"
+      index="${maven.jar.index}"
+      compress="${maven.jar.compress}"
+      excludes="${maven.jar.excludes}"> 
+      
+      <j:if test="${maven.jar.manifest.available}">
+        <ant:setProperty name="manifest" value="${maven.jar.manifest}" />
+      </j:if>
+
+      <j:set var="licenseFileName"><license:fileName/></j:set>
+      <util:file name="${licenseFileName}" var="licenseFile"/>
+      <ant:metainf dir="${licenseFile.canonicalFile.parent}">
+        <ant:include name="${licenseFile.canonicalFile.name}"/>
+      </ant:metainf>
+      <ant:manifest>
+        <ant:attribute name="Built-By" value="${user.name}"/>
+        <ant:attribute name="Created-By" value="Apache Jakarta Maven"/>
+        <ant:attribute name="Package" value="${pom.package}"/>
+        <ant:attribute name="Build-Jdk" value="${java.version}"/>
+        <!-- added supplementary entries -->
+        <ant:attribute name="Extension-Name" value="${pom.artifactId}"/>
+        <ant:attribute name="Specification-Version" value="${pom.specificationVersion}"/>
+        <ant:attribute name="Specification-Vendor" value="${pom.organization.name}"/>
+        <ant:attribute name="Specification-Title" value="${pom.shortDescription}"/>
+        <ant:attribute name="Implementation-Version" value="${pom.currentVersion}"/>
+        <ant:attribute name="Implementation-Vendor" value="${pom.organization.name}"/>
+        <ant:attribute name="Implementation-Vendor-Id" value="${pom.organization.identifier}"/>
+        <j:set var="mainclass" value="${pom.getPluginContext('maven-java-plugin').getVariable('maven.jar.mainclass')}"/>
+        <j:if test="${!empty(mainclass)}">
+            <ant:attribute name="Main-Class" value="${mainclass}"/>
+        </j:if>
+        
+        <j:if test="${maven.jar.manifest.extensions.add == 'true'}">
+          <j:set var="extensionList" value=""/>
+          <j:forEach var="artifact" items="${pom.artifacts}">
+            <j:set var="dep" value="${artifact.dependency}"/>
+            <j:set var="extensionList" value="${extensionList} ${dep.artifactId}"/>
+          </j:forEach>
+
+		  <j:if test="${extensionList.length() != 0}">        
+            <j:set var="extensionList" value="${extensionList.substring(1)}"/>
+            <ant:attribute name="Extension-List" value="${extensionList}"/>
+          </j:if>
+
+          <j:forEach var="artifact" items="${pom.artifacts}">
+            <j:set var="dep" value="${artifact.dependency}"/>
+	        <ant:attribute name="${dep.artifactId}-Extension-Name" value="${dep.artifactId}"/>
+            <ant:attribute name="${dep.artifactId}-Implementation-Version" value="${dep.version}"/>
+            <ant:attribute name="${dep.artifactId}-Implementation-URL" value="http://www.ibiblio.org/maven${artifact.urlPath}"/>
+          </j:forEach>        
+        </j:if>
+
+        <j:if test="${context.getVariable('maven.jar.manifest.attributes.list') != null}">
+            <util:tokenize var="attributeList" delim="," trim="true">${maven.jar.manifest.attributes.list}</util:tokenize>
+            <j:forEach var="attribute" items="${attributeList}">
+                <j:set var="name" value="maven.jar.manifest.attribute.${attribute}"/>
+                <j:set var="value" value="${context.findVariable(name)}"/>
+                <ant:attribute name="${attribute}" value="${value}"/>
+            </j:forEach>
+        </j:if>
+
+        <j:if test="${context.getVariable('maven.jar.manifest.groups.list') != null}">
+            <util:tokenize var="groupList" delim="," trim="true">${maven.jar.manifest.groups.list}</util:tokenize>
+            <j:forEach var="group" items="${groupList}">
+                <j:set var="nameVar" value="maven.jar.manifest.${group}.name"/>
+                <j:set var="groupName" value="${context.findVariable(nameVar)}"/>
+                <j:set var="attributeListVar" value="maven.jar.manifest.${group}.attributes.list"/>
+                <j:set var="groupAttributes" value="${context.findVariable(attributeListVar)}"/>
+                <util:tokenize var="attributeList" delim="," trim="true">${groupAttributes}</util:tokenize>
+                <ant:section name="${groupName}">
+                    <j:forEach var="attribute" items="${attributeList}">
+                        <j:set var="name" value="maven.jar.manifest.${group}.attribute.${attribute}"/>
+                        <j:set var="value" value="${context.findVariable(name)}"/>
+                        <ant:attribute name="${attribute}" value="${value}"/>
+                    </j:forEach>
+                </ant:section>
+            </j:forEach>
+         </j:if>
+      </ant:manifest>
+    </ant:jar>
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- S N A P S H O T  J A R                                             -->
+  <!-- ================================================================== -->
+
+  <goal
+    name="jar:snapshot"
+    description="Create a snapshot jar, ie 'id-YYYYMMDD.hhmmss.jar'">
+
+    <maven:snapshot project="${pom}"/>    
+
+    <j:set var="maven.final.name" value="${snapshotSignature}"/>
+    <ant:echo>Building snapshot JAR: ${maven.final.name}</ant:echo>
+    
+    <attainGoal name="jar:jar"/>
+    
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- D E P L O Y  S N A P S H O T                                       -->
+  <!-- ================================================================== -->
+
+  <goal
+    name="jar:deploy-snapshot"
+    description="Deploy a snapshot jar to the remote repository">
+
+    <maven:user-check user="${maven.username}"/>
+    <attainGoal name="jar:snapshot"/>
+    <ant:property name="maven.jar.to.deploy" value="${maven.final.name}.jar"/>
+    <ant:property name="dir" 
+      value="${maven.repo.central.directory}/${pom.artifactDirectory}/jars"/>
+    
+    <util:replace var="jarToDeploy" oldChar="\" newChar="/">${maven.build.dir}/${maven.jar.to.deploy}</util:replace>
+    <util:replace var="forwardSlashBaseDir" oldChar="\" newChar="/" value="${basedir}"/>
+    <j:if test="${!forwardSlashBaseDir.endsWith('/')}">
+      <j:set var="base" value="${forwardSlashBaseDir}/" />
+    </j:if>
+    <j:set var="relativePath">${jarToDeploy.substring(base.length())}</j:set>
+    
+    <deploy:artifact
+      artifact="${relativePath}"
+      type="jars"
+      assureDirectoryCommand="mkdir -p"
+      siteCommand="cd @deployDirectory@; chmod g+w ${maven.jar.to.deploy}; chgrp ${maven.remote.group} ${maven.jar.to.deploy}; ln -sf ${maven.jar.to.deploy} ${pom.artifactId}-SNAPSHOT.jar; echo ${snapshotVersion} > ${pom.artifactId}-snapshot-version"
+    />
+                    
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- D E P L O Y  J A R                                                 -->
+  <!-- ================================================================== -->
+
+  <goal
+    name="jar:deploy"
+    description="Deploy a jar to the remote repository">
+
+    <maven:user-check user="${maven.username}"/>
+    <attainGoal name="jar:jar"/>
+    <ant:property name="maven.jar.to.deploy" value="${maven.final.name}.jar"/>
+    
+    <j:set var="sl" value="/"/>
+    <util:replace var="jarToDeploy" oldChar="\" newChar="/">${maven.build.dir}/${maven.jar.to.deploy}</util:replace>
+    <util:replace var="forwardSlashBaseDir" oldChar="\" newChar="/" value="${basedir}"/>
+    <j:if test="${!forwardSlashBaseDir.endsWith('/')}">
+      <j:set var="base" value="${forwardSlashBaseDir}/" />
+    </j:if>
+    <j:set var="relativePath">${jarToDeploy.substring(base.length())}</j:set>
+
+    <deploy:artifact
+      artifact="${relativePath}"
+      type="jars"
+      assureDirectoryCommand="mkdir -p"
+      siteCommand="cd @deployDirectory@; chmod g+w ${maven.jar.to.deploy}; chgrp ${maven.remote.group} ${maven.jar.to.deploy}"
+    />
+
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- I N S T A L L   J A R                                              -->
+  <!-- ================================================================== -->
+
+  <goal name="jar:install" prereqs="jar:jar"
+    description="Install the jar in the local repository">
+    
+    <ant:echo>
+    id = '${pom.artifactId}'
+    groupId = '${pom.groupId}'
+    artifactDirectory = '${pom.artifactDirectory}'
+    </ant:echo>
+    
+    <ant:property name="jardir__" value="${maven.repo.local}/${pom.artifactDirectory}/jars"/>
+    <ant:mkdir dir="${jardir__}"/>    
+    <ant:copy 
+      file="${maven.build.dir}/${maven.final.name}.jar"
+      todir="${jardir__}"
+      overwrite="true"
+    />
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- I N S T A L L  S N A P S H O T                                       -->
+  <!-- ================================================================== -->
+
+  <goal
+    name="jar:install-snapshot" prereqs="jar:snapshot"
+    description="Install a snapshot jar in the local repository">
+
+    <ant:property name="jardir__" value="${maven.repo.local}/${pom.artifactDirectory}/jars"/>
+    <ant:mkdir dir="${jardir__}"/>
+    <ant:copy
+      file="${maven.build.dir}/${maven.final.name}.jar"
+      tofile="${jardir__}/${pom.artifactId}-SNAPSHOT.jar"
+      overwrite="true"
+    />
+    <ant:copy
+      file="${maven.build.dir}/${maven.final.name}.jar"
+      tofile="${jardir__}/${maven.final.name}.jar"
+    />
+  </goal>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# P L U G I N P R O P E R T I E S
+# -------------------------------------------------------------------
+maven.jar.manifest.extensions.add=false
+maven.jar.excludes = **/package.html
+maven.jar.index=false
+maven.jar.compress=true
+maven.remote.group=maven
+maven.jar.foo=${plugin.resources}/foo.bar


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,19 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# P R O J E C T  P R O P E R T I E S
+# -------------------------------------------------------------------


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<project>
+  <extend>../project.xml</extend>
+  <pomVersion>3</pomVersion>
+  <id>maven-jar-plugin</id>
+  <name>Maven Jar Plug-in</name>
+  <currentVersion>1.3</currentVersion>
+  <description/>
+  <shortDescription>Create jar files</shortDescription>
+  <url>http://maven.apache.org/plugins/jar/</url>
+  <siteDirectory>/www/maven.apache.org/plugins/jar/</siteDirectory>
+  <repository>
+    <connection>scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:maven/src/plugins-build/jar/</connection>
+    <url>http://cvs.apache.org/viewcvs/maven/src/plugins-build/jar/</url>
+  </repository>
+  <developers/>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/maven-clean-plugin-1.1-SNAPSHOT.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/maven.home/plugins/maven-clean-plugin-1.1-SNAPSHOT.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/plugin/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<!--
+  - Maven plugin to transform Almost Plain Text documents into xdocs, which
+  - can then be transformed into pages on the maven generated site. 
+  -
+  - Note: currently documents in subdirectories are not handled correctly.
+  -->
+
+<project xmlns:j="jelly:core" 
+         xmlns:u="jelly:util" 
+         xmlns:define="jelly:define"
+         xmlns:aptdoc="aptdoc">
+
+  <define:taglib uri="aptdoc">
+    <define:jellybean name="convert" 
+      className="org.apache.maven.aptdoc.AptToXdocConvertor"
+      method="doExecute" />
+  </define:taglib>
+
+  <goal name="apt:generate" prereqs="xdoc:generate-from-pom"
+    description="Generate docs in APT format">
+
+    <j:set var="srcDir" value="${maven.aptdoc.src.dir}"/>
+
+    <j:if test="${!srcDir.equals('NOT_SET')}">
+
+      <!-- Create a file scanner over the source documents -->
+
+      <fileScanner var="inFiles">
+        <fileset dir="${srcDir}">
+          <patternset>
+            <include name="**/*.apt"/>
+          </patternset>
+        </fileset>
+      </fileScanner>
+
+      <!-- Create a mapper to map to the target filenames -->
+
+      <j:new var="mapper" className="org.apache.tools.ant.util.GlobPatternMapper"/>
+      <j:setProperties object="${mapper}" from="*.apt" to="*.xml"/>
+
+      <!-- Convert each source document -->
+
+      <j:forEach var="inFile" items="${inFiles.iterator()}">
+
+        <j:set var="outFile" value="${maven.gen.docs}/${mapper.mapFileName( inFile.name ).0}"/>
+       
+        <aptdoc:convert
+            input="${inFile}"
+            output="${outFile}"/>
+
+      </j:forEach>
+
+    </j:if>
+
+  </goal>
+
+  <!-- apt:generate should run before xdoc:transform -->
+  <preGoal name="xdoc:transform">
+    <attainGoal name="apt:generate"/>
+  </preGoal>
+
+  <postGoal name="foo">
+    <!-- Do something -->
+  </postGoal>
+
+  <goal name="compileGoal">
+    <attainGoal name="java:compile"/>
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/BasedirTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/BasedirTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/BasedirTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,103 @@
+package org.apache.maven.project;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.MavenUtils;
+
+/**
+ * Test the semantics of basedir inside project.xml.
+ *
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ * @version $Id: BasedirTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class BasedirTest
+    extends TestCase
+{
+    /**
+     * Test relative paths.
+     */
+    public void testRelativePaths()
+        throws Exception
+    {
+        String basedir = System.getProperty( "basedir" );
+        Project p = MavenUtils.getProject( new File( basedir, "src/test/basedir/extend-2/project.xml" ) );
+        assertEquals( "check group ID", p.getGroupId(), "maven" );
+        assertEquals( "check source directory", p.getBuild().getSourceDirectory(), new File( basedir, "src/java" )
+            .getCanonicalPath() );
+        assertEquals( "check unit test source directory", p.getBuild().getUnitTestSourceDirectory(),
+                      new File( basedir, "src/test" ).getCanonicalPath() );
+        assertEquals( "check iutest source directory", p.getBuild().getIntegrationUnitTestSourceDirectory(),
+                      new File( basedir, "src/test" ).getCanonicalPath() );
+        assertEquals( "check aspect source directory", p.getBuild().getAspectSourceDirectory(), new File( basedir,
+                                                                                                          "src/java" )
+            .getCanonicalPath() );
+    }
+
+    /**
+     * Test basedir relative paths.
+     */
+    public void testRelativePathsWithBasedir()
+        throws Exception
+    {
+        String basedir = System.getProperty( "basedir" );
+        Project p = MavenUtils.getProject( new File( basedir, "src/test/basedir/extend-1/project.xml" ) );
+        assertEquals( "check group ID", p.getGroupId(), "maven" );
+        assertEquals( "check source directory", new File( p.getBuild().getSourceDirectory() ).getCanonicalPath(),
+                      new File( basedir, "src/java" ).getCanonicalPath() );
+        assertEquals( "check unit test source directory", new File( p.getBuild().getUnitTestSourceDirectory() )
+            .getCanonicalPath(), new File( basedir, "src/test" ).getCanonicalPath() );
+        assertEquals( "check iutest source directory", new File( p.getBuild().getIntegrationUnitTestSourceDirectory() )
+            .getCanonicalPath(), new File( basedir, "src/test" ).getCanonicalPath() );
+        assertEquals( "check aspect source directory", new File( p.getBuild().getAspectSourceDirectory() )
+            .getCanonicalPath(), new File( basedir, "src/java" ).getCanonicalPath() );
+    }
+
+    /**
+     * Test relative paths (no ..).
+     */
+    public void testRelativePathsForwards()
+        throws Exception
+    {
+        String basedir = System.getProperty( "basedir" );
+        Project p = MavenUtils.getProject( new File( basedir, "src/test/basedir/project.xml" ) );
+        assertEquals( "check group ID", p.getGroupId(), "maven" );
+        assertEquals( "check source directory", p.getBuild().getSourceDirectory(),
+                      new File( basedir, "src/test/basedir/extend-1" ).getCanonicalPath() );
+        assertEquals( "check unit test source directory", p.getBuild().getUnitTestSourceDirectory(),
+                      new File( basedir, "src/test/basedir/extend-1" ).getCanonicalPath() );
+        assertEquals( "check iutest source directory", p.getBuild().getIntegrationUnitTestSourceDirectory(),
+                      new File( basedir, "src/test/basedir/extend-1" ).getCanonicalPath() );
+        assertEquals( "check aspect source directory", p.getBuild().getAspectSourceDirectory(),
+                      new File( basedir, "src/test/basedir/extend-1" ).getCanonicalPath() );
+    }
+
+    /**
+     * Generate the test suite.
+     * @return the test suite
+     */
+    public static Test suite()
+    {
+        return new TestSuite( BasedirTest.class );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/LegacyIdTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/LegacyIdTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/LegacyIdTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,258 @@
+package org.apache.maven.project;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.MavenUtils;
+
+/**
+ * Test the semantics of ids inside project.xml.
+ *
+ * @author Brett Porter <a href="mailto:brett at apache.org">brett at apache.org</a>
+ * @version $Id: LegacyIdTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class LegacyIdTest
+    extends TestCase
+{
+    /**
+     * Test for legacyToStandardId
+     */
+    public void testLegacyToStandardId()
+    {
+        // test 'ant' -> 'ant:ant'
+        String legacyId = "ant";
+        String standardId = "ant:ant";
+        assertEquals( "Single id conversion failed", standardId, Project.legacyToStandardId( legacyId ) );
+
+        // test 'ant:ant' unchanged
+        legacyId = "ant:ant";
+        assertEquals( "Standard id conversion failed", standardId, Project.legacyToStandardId( legacyId ) );
+
+        // test 'ant+optional' -> ant:ant-optional
+        legacyId = "ant+optional";
+        standardId = "ant:ant-optional";
+        assertEquals( "Plus format id conversion failed", standardId, Project.legacyToStandardId( legacyId ) );
+    }
+
+    /**
+     * Test for legacyToDependencyKey
+     */
+    public void testLegacyToDependencyId()
+    {
+        Project project = new Project();
+        addDependency( project, "ant", "ant", "jar" );
+        addDependency( project, "ant", "ant-optional", "jar" );
+        addDependency( project, "ant", "ant-windows", "dll" );
+
+        // test 'ant' -> 'ant:ant:jar'
+        String legacyId = "ant";
+        String standardId = "ant:ant:jar";
+        assertEquals( "Single id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+
+        // test 'ant:ant' -> 'ant:ant:jar'
+        legacyId = "ant:ant";
+        assertEquals( "Standard id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+
+        // test 'ant+optional' -> ant:ant-optional:jar
+        legacyId = "ant+optional";
+        standardId = "ant:ant-optional:jar";
+        assertEquals( "Plus format id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+
+        // test 'ant:ant:jar' unchanged
+        legacyId = "ant:ant:jar";
+        standardId = "ant:ant:jar";
+        assertEquals( "Standard id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+
+        // test 'ant:ant:tld' unchanged
+        legacyId = "ant:ant:tld";
+        standardId = "ant:ant:tld";
+        assertEquals( "Standard id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+
+        // test 'ant:ant-windows' gets correct one
+        legacyId = "ant:ant-windows";
+        standardId = "ant:ant-windows:dll";
+        assertEquals( "Standard id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+
+        // test 'ant:ant-windows:dll' unchanged
+        legacyId = "ant:ant-windows:dll";
+        standardId = "ant:ant-windows:dll";
+        assertEquals( "Standard id conversion failed", standardId, project.legacyToDependencyKey( legacyId ) );
+    }
+
+    private static void addDependency( Project project, String groupId, String artifactId, String type )
+    {
+        Dependency dep = new Dependency();
+        dep.setId( groupId + ":" + artifactId );
+        dep.setGroupId( groupId );
+        dep.setArtifactId( artifactId );
+        dep.setType( type );
+        dep.setVersion( "1.0-SNAPSHOT" );
+        project.addDependency( dep );
+    }
+
+    public void testIdOnly()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/test-id-only.xml" ) );
+        assertEquals( "check id", "artifactId:artifactId", p.getId() );
+        assertEquals( "check artifact id", "artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "artifactId", p.getGroupId() );
+        assertEquals( "check id", "artifactId:artifactId", p.getId() );
+    }
+
+    public void testGroupIdAndArtifactId()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/test-group-id-and-artifact-id.xml" ) );
+        assertEquals( "check id", "groupId:artifactId", p.getId() );
+        assertEquals( "check artifact id", "artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "groupId", p.getGroupId() );
+        assertEquals( "check id", "groupId:artifactId", p.getId() );
+    }
+
+    public void testGroupIdAndIdAsArtifactId()
+        throws Exception
+    {
+        Project p = MavenUtils
+            .getProject( new File( System.getProperty( "basedir" ),
+                                   "src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml" ) );
+        assertEquals( "check id", "groupId:artifactId", p.getId() );
+        assertEquals( "check artifact id", "artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "groupId", p.getGroupId() );
+        assertEquals( "check id", "groupId:artifactId", p.getId() );
+    }
+
+    public void testExtendNone()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/extend/test-none.xml" ) );
+        assertEquals( "check group id", "base-groupId", p.getGroupId() );
+    }
+
+    public void testExtendIdOnly()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/extend/test-id-only.xml" ) );
+        assertEquals( "check id", "base-groupId:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "base-groupId", p.getGroupId() );
+        assertEquals( "check id", "base-groupId:extend-artifactId", p.getId() );
+    }
+
+    public void testExtendArtifactIdOnly()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/extend/test-artifact-id-only.xml" ) );
+        assertEquals( "check id", "base-groupId:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "base-groupId", p.getGroupId() );
+        assertEquals( "check id", "base-groupId:extend-artifactId", p.getId() );
+    }
+
+    public void testExtendArtifactIdOnlyOverMatching()
+        throws Exception
+    {
+        Project p = MavenUtils
+            .getProject( new File( System.getProperty( "basedir" ),
+                                   "src/test/test-data/pom/extend/test-artifact-id-only-over-matching.xml" ) );
+        assertEquals( "check id", "base-id:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "base-id", p.getGroupId() );
+        assertEquals( "check id", "base-id:extend-artifactId", p.getId() );
+    }
+
+    public void testExtendArtifactIdOnlyOverDifferent()
+        throws Exception
+    {
+        Project p = MavenUtils
+            .getProject( new File( System.getProperty( "basedir" ),
+                                   "src/test/test-data/pom/extend/test-artifact-id-only-over-different.xml" ) );
+        assertEquals( "check id", "base-groupId:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "base-groupId", p.getGroupId() );
+        assertEquals( "check id", "base-groupId:extend-artifactId", p.getId() );
+    }
+
+    public void testExtendIdOverrideGroupId()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/extend/test-id-override-groupid.xml" ) );
+        assertEquals( "check id", "extend-artifactId:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "extend-artifactId", p.getGroupId() );
+        assertEquals( "check id", "extend-artifactId:extend-artifactId", p.getId() );
+    }
+
+    public void testExtendGroupIdAndArtifactId()
+        throws Exception
+    {
+        Project p = MavenUtils
+            .getProject( new File( System.getProperty( "basedir" ),
+                                   "src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml" ) );
+        assertEquals( "check id", "extend-groupId:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "extend-groupId", p.getGroupId() );
+        assertEquals( "check id", "extend-groupId:extend-artifactId", p.getId() );
+    }
+
+    public void testExtendGroupIdAndIdAsArtifactId()
+        throws Exception
+    {
+        Project p = MavenUtils
+            .getProject( new File( System.getProperty( "basedir" ),
+                                   "src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml" ) );
+        assertEquals( "check id", "extend-groupId:extend-artifactId", p.getId() );
+        assertEquals( "check artifact id", "extend-artifactId", p.getArtifactId() );
+        assertEquals( "check group id", "extend-groupId", p.getGroupId() );
+        assertEquals( "check id", "extend-groupId:extend-artifactId", p.getId() );
+    }
+
+    public void testDependencies()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( System.getProperty( "basedir" ),
+                                                     "src/test/test-data/pom/dependencies.xml" ) );
+        assertEquals( "check id", "ant:ant", p.getDependency( "ant:ant" ).getId() );
+        assertEquals( "check id with +", "ant:ant-optional", p.getDependency( "ant:ant-optional" ).getId() );
+        assertEquals( "check id with -", "ant-optional:ant-optional", p.getDependency( "ant-optional:ant-optional" )
+            .getId() );
+        assertEquals( "check id with id and artifactId", "groupId:artifactId", p.getDependency( "groupId:artifactId" )
+            .getId() );
+    }
+
+    /**
+     * Generate the test suite.
+     *
+     * @return the test suite
+     */
+    public static Test suite()
+    {
+        return new TestSuite( LegacyIdTest.class );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,163 @@
+package org.apache.maven.project;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.MavenUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+public class ProjectInheritanceTest
+    extends TestCase
+{
+    private String TEST_DOCUMENT = null;
+
+    private String TEST_DOCUMENT2 = null;
+
+    private String baseDir;
+
+    private String FS = null;
+
+    public ProjectInheritanceTest( String testName )
+    {
+        super( testName );
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite( ProjectInheritanceTest.class );
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        baseDir = System.getProperty( "basedir" );
+        assertNotNull( "The system property basedir was not defined.", baseDir );
+        String fs = System.getProperty( "file.separator" );
+        assertNotNull( "The system property file.separator was not defined.", fs );
+        FS = fs;
+        TEST_DOCUMENT = baseDir + "/src/test/extend/project-child.xml";
+        TEST_DOCUMENT2 = baseDir + "/src/test/extend/child_project/project-child2.xml";
+    }
+
+    public void testProjectMapping()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( TEST_DOCUMENT ) );
+
+        // Make sure the groupId is inherited correctly.
+        assertEquals( "groupId", p.getGroupId() );
+
+        assertEquals( "Super Extendo", p.getName() );
+        assertEquals( "groupId:super-extendo", p.getId() );
+        assertEquals( "Apache Software Foundation", p.getOrganization().getName() );
+        assertEquals( "http://www.apache.org/", p.getOrganization().getUrl() );
+
+        //Test siteAddress / siteDirectory
+        assertEquals( "theSiteAddress", p.getSiteAddress() );
+        assertEquals( "theSiteDirectory", p.getSiteDirectory() );
+
+        // Test Dependencies
+        assertEquals( "child-dep1:child-dep1", ( (Dependency) p.getDependencies().get( 0 ) ).getId() );
+        assertEquals( "1.0", ( (Dependency) p.getDependencies().get( 0 ) ).getVersion() );
+
+        baseDir = new File( p.getContext().findVariable( "basedir" ).toString() ).getCanonicalPath();
+        // Test Source Directories
+        assertEquals( baseDir + FS + "src" + FS + "java", p.getBuild().getSourceDirectory() );
+        // Unit Test Source Directories
+        assertEquals( baseDir + FS + "src" + FS + "test" + FS + "java", p.getBuild().getUnitTestSourceDirectory() );
+
+        // Test Aspect Source Directories
+        //assertEquals("src/aspect", p.getBuild().getAspectSourceDirectory());
+
+        String iuSrc = p.getBuild().getIntegrationUnitTestSourceDirectory();
+        assertTrue( "Should be empty in maven's project descriptor: [" + iuSrc + "]", StringUtils.isEmpty( iuSrc ) );
+
+        // Unit Test patterns
+        List unitTestIncludes = p.getBuild().getUnitTest().getIncludes();
+        List unitTestExcludes = p.getBuild().getUnitTest().getExcludes();
+
+        assertEquals( "**/*Test*.java", (String) unitTestIncludes.get( 0 ) );
+        assertEquals( "**/TestAll.java", (String) unitTestExcludes.get( 0 ) );
+        assertEquals( "**/*Abstract*.java", (String) unitTestExcludes.get( 1 ) );
+
+        SourceModification sm0 = (SourceModification) p.getBuild().getSourceModifications().get( 0 );
+        assertEquals( "java.util.logging.Logger", sm0.getClassName() );
+        assertEquals( "**/Jdk14Logger.java", (String) sm0.getExcludes().get( 0 ) );
+
+        // Test Versions
+        Version v0 = (Version) p.getVersions().get( 0 );
+        assertEquals( "b1", v0.getId() );
+        assertEquals( "1.0-b1", v0.getName() );
+        assertEquals( "MAVEN_1_0_B1", v0.getTag() );
+
+        // Test the version map
+        Version v4 = p.getVersionById( "b4" );
+        assertEquals( "b4", v4.getId() );
+        assertEquals( "1.0-b4", v4.getName() );
+        assertEquals( "MAVEN_1_0_B4", v4.getTag() );
+    }
+
+    public void testProjectMappingExtends()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( TEST_DOCUMENT2 ) );
+
+        // Make sure the groupId is inherited correctly.
+        assertEquals( "groupId", p.getGroupId() );
+
+        assertEquals( "Child Project", p.getName() );
+        assertEquals( "groupId:child", p.getId() );
+
+        // Test organization inheritance.
+        assertNotNull( p.getOrganization() );
+        assertEquals( "Apache Software Foundation", p.getOrganization().getName() );
+        assertEquals( "http://www.apache.org/", p.getOrganization().getUrl() );
+
+        // Test siteAddress / siteDirectory
+        assertEquals( "theSiteAddress", p.getSiteAddress() );
+        assertEquals( "theSiteDirectory", p.getSiteDirectory() );
+
+        boolean found = false;
+        List resources = p.getBuild().getResources();
+        for ( Iterator i = resources.iterator(); i.hasNext(); )
+        {
+            Resource r = (Resource) i.next();
+            File dir = new File( p.getFile().getParent(), "src" + FS + "messages" ).getCanonicalFile();
+            if ( r.getDirectory().equals( dir.getPath() ) )
+            {
+                assertEquals( "check target path", "org/apache/maven/messages", r.getTargetPath() );
+                assertEquals( "check includes", Arrays.asList( new String[] { "messages*.properties" } ), r
+                    .getIncludes() );
+                assertEquals( "check excludes", Collections.EMPTY_LIST, r.getExcludes() );
+                found = true;
+            }
+        }
+        assertTrue( "Check found resources for src/messages", found );
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLFormatterTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLFormatterTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLFormatterTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,94 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * @author Ben Walding
+ *
+ */
+public class DVSLFormatterTest
+    extends TestCase
+{
+
+    public void testFormatNumberSimple()
+    {
+        testFormat( "1", "1", "0" );
+        //        testFormat("1.0", "1", "0.0");
+        //        testFormat("1.00", "1", "0.00");
+        //        testFormat("1.000", "1", "0.000");
+        //        testFormat("1.0000", "1", "0.0000");
+        //
+        //        testFormat("1.10", "1.10", "0.00");
+        //        testFormat("1.100", "1.1000", "0.000");
+        //        testFormat("1.123", "1.1234", "0.000");
+        //        testFormat("1.1234", "1.1234", "0.0000");
+    }
+
+    public void testFormatNumberNegative()
+    {
+        testFormat( "-1", "-1", "0" );
+        //        testFormat("-1.0", "-1", "0.0");
+        //        testFormat("-1.00", "-1", "0.00");
+        //        testFormat("-1.000", "-1", "0.000");
+        //        testFormat("-1.0000", "-1", "0.0000");
+        //
+        //        testFormat("-1.10", "-1.10", "0.00");
+        //        testFormat("-1.100", "-1.1000", "0.000");
+        //        testFormat("-1.123", "-1.1234", "0.000");
+        //        testFormat("-1.1234", "-1.1234", "0.0000");
+    }
+
+    public void testFormatNumberPercent()
+    {
+        testFormat( "100%", "1", "0%" );
+        //        testFormat("100.0%", "1", "0.0%");
+        //        testFormat("100.00%", "1", "0.00%");
+        //        testFormat("100.000%", "1", "0.000%");
+        //        testFormat("100.0000%", "1", "0.0000%");
+        //
+        //        testFormat("-110.00%", "-1.10", "0.00%");
+        //        testFormat("-110.000%", "-1.1000", "0.000%");
+        //        testFormat("-112.340%", "-1.1234", "0.000%");
+        //        testFormat("-112.3400%", "-1.1234", "0.0000%");
+
+        testFormat( "-100%", "-1", "0%" );
+        //        testFormat("-100.0%", "-1", "0.0%");
+        //        testFormat("-100.00%", "-1", "0.00%");
+        //        testFormat("-100.000%", "-1", "0.000%");
+        //        testFormat("-100.0000%", "-1", "0.0000%");
+        //
+        //        testFormat("-110.00%", "-1.10", "0.00%");
+        //        testFormat("-110.000%", "-1.1000", "0.000%");
+        //        testFormat("-112.340%", "-1.1234", "0.000%");
+        //        testFormat("-112.3400%", "-1.1234", "0.0000%");
+    }
+
+    protected void testFormat( String expected, String value, String pattern )
+    {
+        String actual = DVSLFormatter.formatNumber( value, pattern );
+        String function = "DVSLFormatter.formatNumber(" + value + "," + pattern + ")";
+        if ( !actual.equals( expected ) )
+        {
+            System.out.println( function + "  Actual: " + actual + ", Expected: " + expected );
+        }
+        assertEquals( function, expected, actual );
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLPathToolTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLPathToolTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/DVSLPathToolTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,240 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for <code>DVSLPathTool</code>.
+ *
+ * @author <a href="mailto:pete-apache-dev at kazmier.com">Pete Kazmier</a>
+ * @version $Id: DVSLPathToolTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class DVSLPathToolTest
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public DVSLPathToolTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( DVSLPathToolTest.class );
+    }
+
+    /**
+     * Tests <code>DVSLPathTool.getDirectoryComponent</code>.
+     */
+    public void testGetDirectoryComponent()
+    {
+        String[] test = { "file1.xml", "ref/file1", "/home/test/file2.vm", "d1\\d2\\d3\\file", "/d1/d2/" };
+
+        String[] expected = { ".", "ref", "/home/test", "d1\\d2\\d3", "/d1/d2" };
+
+        for ( int i = 0; i < test.length; i++ )
+        {
+            assertEquals( expected[i], DVSLPathTool.getDirectoryComponent( test[i] ) );
+        }
+    }
+
+    /**
+     * Tests <code>DVSLPathTool.getRelativePath</code>.
+     */
+    public void testGetRelativePath()
+    {
+        TestArgs[] tests = {
+            new TestArgs( "", "/home/www/html", "", "../.." ),
+            new TestArgs( "/", "/home/www/html", "../..", "../.." ),
+            new TestArgs( "", "/home/www/html/", "", "../.." ),
+            new TestArgs( "/", "/home/www/html/", "../..", "../.." ),
+            new TestArgs( "", "home/www/html", "", "../.." ),
+            new TestArgs( "/", "home/www/html", "", "../.." ),
+            new TestArgs( "", "home/www/html/", "", "../.." ),
+            new TestArgs( "/", "home/www/html/", "", "../.." ),
+            new TestArgs( "/", "/home", ".", "." ),
+            new TestArgs( "/usr/local", null, "", "" ),
+            new TestArgs( null, "/usr/local", "", ".." ),
+            new TestArgs( null, null, "", "" ),
+            new TestArgs( "/home/kaz", "/home/kaz", "", ".." ),
+            new TestArgs( "/home/kaz", "/home/kaz/", "", ".." ),
+            new TestArgs( "/home/kaz/", "/home/kaz", "", ".." ),
+            new TestArgs( "/home/kaz/", "/home/kaz/", "", ".." ),
+            new TestArgs( "/home/kaz", "/home/kaz/file.html", ".", "../.." ),
+            new TestArgs( "/home/kaz/", "/home/kaz/file.html", ".", "../.." ),
+            new TestArgs( "/home/kaz", "/home/kaz/howto/jeff.html", "..", "../../.." ),
+            new TestArgs( "/home/", "/home/kaz/howto/images/", "../..", "../../.." ),
+            new TestArgs( "/home/", "/home/kaz/howto/jeff.html", "../..", "../../.." ),
+            new TestArgs( "/home/", "/home/kaz/howto/u/y/z/jeff.html", "../../../../..", "../../../../../.." ),
+            new TestArgs( "/home/boston", "/usr/local/where/am/i", "", "../../../.." ),
+            new TestArgs( "home/boston", "/usr/local/where/am/i", "", "../../../.." ),
+            new TestArgs( "home/boston", "home/boston/where/am/i", "../..", "../../../.." ),
+            new TestArgs( "", "\\home\\www\\html", "", "../.." ),
+            new TestArgs( "\\", "\\home\\www\\html", "../..", "../.." ),
+            new TestArgs( "", "\\home\\www\\html\\", "", "../.." ),
+            new TestArgs( "\\", "\\home\\www\\html\\", "../..", "../.." ),
+            new TestArgs( "", "home\\www\\html", "", "../.." ),
+            new TestArgs( "\\", "home\\www\\html", "", "../.." ),
+            new TestArgs( "", "home\\www\\html\\", "", "../.." ),
+            new TestArgs( "\\", "home\\www\\html\\", "", "../.." ),
+            new TestArgs( "\\", "\\home", ".", "." ),
+            new TestArgs( "\\usr\\local", null, "", "" ),
+            new TestArgs( null, "\\usr\\local", "", ".." ),
+            new TestArgs( null, null, "", "" ),
+            new TestArgs( "\\home\\kaz", "\\home\\kaz", "", ".." ),
+            new TestArgs( "\\home\\kaz", "\\home\\kaz\\", "", ".." ),
+            new TestArgs( "\\home\\kaz\\", "\\home\\kaz", "", ".." ),
+            new TestArgs( "\\home\\kaz\\", "\\home\\kaz\\", "", ".." ),
+            new TestArgs( "\\home\\kaz", "\\home\\kaz\\file.html", ".", "../.." ),
+            new TestArgs( "\\home\\kaz\\", "\\home\\kaz\\file.html", ".", "../.." ),
+            new TestArgs( "\\home\\kaz", "\\home\\kaz\\howto\\jeff.html", "..", "../../.." ),
+            new TestArgs( "\\home\\", "\\home\\kaz\\howto\\images\\", "../..", "../../.." ),
+            new TestArgs( "\\home\\", "\\home\\kaz\\howto\\jeff.html", "../..", "../../.." ),
+            new TestArgs( "\\home\\", "\\home\\kaz\\howto\\u\\y\\z\\jeff.html", "../../../../..", "../../../../../.." ),
+            new TestArgs( "\\home\\boston", "\\usr\\local\\where\\am\\i", "", "../../../.." ),
+            new TestArgs( "home\\boston", "\\usr\\local\\where\\am\\i", "", "../../../.." ),
+            new TestArgs( "home\\boston", "home\\boston\\where\\am\\i", "../..", "../../../.." ),
+            new TestArgs( "/x/y/z/", "/x/y/z/a\\b\\c", ".", "../../.." ),
+            new TestArgs( "/x/y/z/", "\\x\\y\\z\\a\\b\\c", "", "../../../../.." ),
+            new TestArgs( "\\x\\y\\z", "\\x\\y\\z\\a/b\\c", "..", "../../../.." ),
+            new TestArgs( "\\x\\y\\z/", "\\x\\y\\z/\\a/b\\c", "..", "../../../.." ),
+            new TestArgs( "D:/a/b", "D:/a/b/c", ".", "../../.." ),
+            new TestArgs( "d:/a/b", "D:/a/b/c.html", ".", "../../.." ), };
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            assertEquals( tests[i].toString(), tests[i].expected, DVSLPathTool.getRelativePath( tests[i].basedir,
+                                                                                                tests[i].filename ) );
+        }
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            assertEquals( tests[i].toString(), tests[i].expectedNoBase, DVSLPathTool
+                .getRelativePath( tests[i].filename ) );
+        }
+    }
+
+    /**
+     * Value object for a relative path test case.  This class is used
+     * when testing the <code>getRelativePath(basedir, filename)</code>
+     * and <code>getRelativePath(filename)</code> methods.  The expected
+     * results for each method are different which is the reason that
+     * both expected values are stored as part of the class.
+     *
+     * @author <a href="mailto:pete-apache-dev at kazmier.com">Pete Kazmier</a>
+     * @version
+     * $Id: DVSLPathToolTest.java 423634 2006-07-19 22:13:40Z aheritier $
+     */
+    private static class TestArgs
+    {
+        /** base directory for tests */
+        private String basedir;
+
+        /** the file to test*/
+        private String filename;
+
+        /**
+         * expected result when calling <code>getRelativePath(basedir,
+         * filename)</code>.
+         */
+        private String expected;
+
+        /**
+         * expected result when calling <code>getRelativePath(filename)</code>.
+         */
+        private String expectedNoBase;
+
+        /**
+         * Constructor.
+         *
+         * @param b The base directory.
+         * @param f The filename.
+         * @param e The expected result when calling
+         * <code>getRelativePath(basedir, filename)</code>.
+         * @param enb The expected result when calling
+         * <code>getRelativePath(filename)</code>.
+         */
+        TestArgs( String b, String f, String e, String enb )
+        {
+            basedir = b;
+            filename = f;
+            expected = e;
+            expectedNoBase = enb;
+        }
+
+        /**
+         * Provide detailed information regarding the test case which
+         * can be used as part of the JUnit error message in the event
+         * of a unit test failure.
+         *
+         * @return A string describing the test parameters.
+         */
+        public String toString()
+        {
+            StringBuffer sb = new StringBuffer();
+            sb.append( "Basedir: " );
+            sb.append( basedir );
+            sb.append( " Filename: " );
+            sb.append( filename );
+            return sb.toString();
+        }
+    }
+
+    public void testUppercaseDrive()
+    {
+        assertEquals( "c:/b/", "C:/b/", DVSLPathTool.uppercaseDrive( "c:/b/" ) );
+        assertEquals( "c:", "C:", DVSLPathTool.uppercaseDrive( "c:" ) );
+        assertEquals( ".", ".", DVSLPathTool.uppercaseDrive( "." ) );
+        assertEquals( "null", null, DVSLPathTool.uppercaseDrive( null ) );
+
+    }
+
+    public void testCalculateLink( String expected, String link, String relativePath )
+    {
+        String actual = DVSLPathTool.calculateLink( link, relativePath );
+        String function = "DVSLPathTool.calculateLink(" + link + "," + relativePath + ")";
+        if ( !expected.equals( actual ) )
+        {
+            System.out.println( "Function:" + function );
+            System.out.println( "Actual:" + actual );
+            System.out.println( "Expected:" + expected );
+        }
+        assertEquals( function, expected, actual );
+    }
+
+    public void testCalculateLink()
+    {
+        testCalculateLink( "/bob.html", "/absolute//bob.html", ".." );
+        testCalculateLink( "http://crazyhorse.com", "/absolute/http://crazyhorse.com", ".." );
+        testCalculateLink( "http://crazyhorse.com", "http://crazyhorse.com", ".." );
+        testCalculateLink( "../index.html", "/index.html", ".." );
+        testCalculateLink( "index.html", "/index.html", "." );
+        testCalculateLink( "../other-module/index.html", "../other-module/index.html", "." );
+        testCalculateLink( "../../other-module/index.html", "../other-module/index.html", ".." );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,119 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import junit.framework.TestCase;
+
+public class EnhancedStringTokenizerTest
+    extends TestCase
+{
+    public EnhancedStringTokenizerTest( String name )
+    {
+        super( name );
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+    }
+
+    protected void tearDown()
+        throws Exception
+    {
+    }
+
+    public void testSimple()
+    {
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer( "a,b,c,d,,e,,,f,,,,,g", "," );
+        checkTokens( tok );
+    }
+
+    /**
+     * @param tok The tokenizer to check
+     */
+    private void checkTokens( EnhancedStringTokenizer tok )
+    {
+        assertEquals( "Token 1", "a", tok.nextToken() );
+        assertEquals( "Token 2", "b", tok.nextToken() );
+        assertEquals( "Token 3", "c", tok.nextToken() );
+        assertEquals( "Token 4", "d", tok.nextToken() );
+        assertEquals( "Token 5", "", tok.nextToken() );
+        assertEquals( "Token 6", "e", tok.nextToken() );
+        assertEquals( "Token 7", "", tok.nextToken() );
+        assertEquals( "Token 8", "", tok.nextToken() );
+        assertEquals( "Token 9", "f", tok.nextToken() );
+        assertEquals( "Token 10", "", tok.nextToken() );
+        assertEquals( "Token 11", "", tok.nextToken() );
+        assertEquals( "Token 12", "", tok.nextToken() );
+        assertEquals( "Token 13", "", tok.nextToken() );
+        assertEquals( "Token 14", "g", tok.nextToken() );
+        assertEquals( "tok.hasMoreTokens()", false, tok.hasMoreTokens() );
+    }
+
+    public void testSimpleTab()
+    {
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer( "a\tb\tc\td\t\te\t\t\tf\t\t\t\t\tg", "\t" );
+        checkTokens( tok );
+    }
+
+    public void testNoDelim()
+    {
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer( "a,b,c,d,,e,,,f,,,,,g", "\t" );
+        assertEquals( "Token 1", "a,b,c,d,,e,,,f,,,,,g", tok.nextToken() );
+        assertEquals( "tok.hasMoreTokens()", false, tok.hasMoreTokens() );
+    }
+
+    public void testNoText()
+    {
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer( "", "," );
+        assertEquals( "tok.hasMoreTokens()", false, tok.hasMoreTokens() );
+    }
+
+    public void testReturnDelim()
+    {
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer( "a,b,,c,d", ",", true );
+        assertEquals( "Token 1", "a", tok.nextToken() );
+        assertEquals( "Token 2", ",", tok.nextToken() );
+        assertEquals( "Token 3", "b", tok.nextToken() );
+        assertEquals( "Token 4", ",", tok.nextToken() );
+        assertEquals( "Token 5", "", tok.nextToken() );
+        assertEquals( "Token 6", ",", tok.nextToken() );
+        assertEquals( "Token 7", "c", tok.nextToken() );
+        assertEquals( "Token 2", ",", tok.nextToken() );
+        assertEquals( "Token 8", "d", tok.nextToken() );
+        assertEquals( "tok.hasMoreTokens()", false, tok.hasMoreTokens() );
+    }
+
+    public void testMultipleDelim()
+    {
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer( "a.,b.,c.d", ".,", true );
+        assertEquals( "Token 1", "a", tok.nextToken() );
+        assertEquals( "Token 2", ".", tok.nextToken() );
+        assertEquals( "Token 3", "", tok.nextToken() );
+        assertEquals( "Token 4", ",", tok.nextToken() );
+        assertEquals( "Token 5", "b", tok.nextToken() );
+        assertEquals( "Token 6", ".", tok.nextToken() );
+        assertEquals( "Token 7", "", tok.nextToken() );
+        assertEquals( "Token 8", ",", tok.nextToken() );
+        assertEquals( "Token 9", "c", tok.nextToken() );
+        assertEquals( "Token 10", ".", tok.nextToken() );
+        assertEquals( "Token 11", "d", tok.nextToken() );
+        assertEquals( "tok.hasMoreTokens()", false, tok.hasMoreTokens() );
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,109 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+/**
+ * Test InsertionOrderedSet.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: InsertionOrderedSetTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class InsertionOrderedSetTest
+    extends TestCase
+{
+    private Set set = new InsertionOrderedSet();
+
+    private static final String STRING_1 = "zzz";
+
+    private static final String STRING_2 = "qqq";
+
+    private static final String STRING_3 = "www";
+
+    private static final HashSet REMOVED_ELEMENT_SET = new HashSet( Arrays.asList( new String[] { STRING_1, STRING_3 } ) );
+
+    private static final HashSet OUTPUT_SET = new HashSet( Arrays
+        .asList( new String[] { STRING_1, STRING_2, STRING_3 } ) );
+
+    private static final List INPUT_SET = Arrays.asList( new String[] { STRING_1, STRING_2, STRING_1, STRING_3 } );
+
+    public void setUp()
+        throws Exception
+    {
+    }
+
+    public void testAdd()
+    {
+        set.add( STRING_1 );
+        set.add( STRING_2 );
+        set.add( STRING_1 );
+        set.add( STRING_3 );
+
+        assertEquals( OUTPUT_SET, set );
+    }
+
+    public void testAddAll()
+    {
+        set.addAll( INPUT_SET );
+        assertEquals( OUTPUT_SET, set );
+    }
+
+    public void testConstructor()
+    {
+        Set set = new InsertionOrderedSet( INPUT_SET );
+        assertEquals( OUTPUT_SET, set );
+    }
+
+    public void testRemove()
+    {
+        set.addAll( INPUT_SET );
+        set.remove( STRING_2 );
+        assertEquals( REMOVED_ELEMENT_SET, set );
+    }
+
+    public void testIterator()
+    {
+        set.addAll( INPUT_SET );
+
+        Iterator i = set.iterator();
+        assertEquals( STRING_1, i.next() );
+        assertEquals( STRING_2, i.next() );
+        assertEquals( STRING_3, i.next() );
+    }
+
+    public void testIteratorRemove()
+    {
+        set.addAll( INPUT_SET );
+
+        Iterator i = set.iterator();
+        assertEquals( STRING_1, i.next() );
+        assertEquals( STRING_2, i.next() );
+        i.remove();
+        assertEquals( STRING_3, i.next() );
+
+        assertEquals( REMOVED_ELEMENT_SET, set );
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MD5SumTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MD5SumTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MD5SumTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,66 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: MD5SumTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+
+public class MD5SumTest
+    extends TestCase
+{
+    /**
+     * Create the test with the given name
+     *
+     * @param testName the name of the test
+     */
+    public MD5SumTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( MD5SumTest.class );
+    }
+
+    /**
+     */
+    public void testSum()
+        throws Exception
+    {
+        MD5Sum md5 = new MD5Sum();
+        String basedir = System.getProperty( "basedir" );
+        assertNotNull( "basedir not provided", basedir );
+        md5.setFile( new File( basedir + "/src/test/checksum/input.jar" ) );
+        md5.execute();
+        String checksum = md5.getChecksum();
+
+        assertEquals( "627ce116c350da6fee656177b2af86eb", checksum );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MavenToolTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MavenToolTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/MavenToolTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,76 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for <code>MavenTool</code>.
+ *
+ * @author <a href="mailto:dlr at finemaltcoding.com">Daniel Rall</a>
+ * @version $Id: MavenToolTest.java 423634 2006-07-19 22:13:40Z aheritier $
+ */
+public class MavenToolTest
+    extends TestCase
+{
+    /** fragment to be resolved */
+    private static final String NEEDLE = "org/apache/maven/util/MavenTool.java";
+
+    /** where to search for the fragment */
+    private static final String[] HAYSTACK = { "docs", "src" + File.separator + "java", "xdocs" };
+
+    /**
+     * Create the test with the given name
+     *
+     * @param testName the name of the test
+     */
+    public MavenToolTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( MavenToolTest.class );
+    }
+
+    /**
+     * Tests {@link MavenTool.resolvePathFragment(String, String, String[])}.
+     */
+    public void testResolvePathFragment()
+    {
+        MavenTool tool = new MavenTool();
+
+        /*
+         * The basedir for the project is passed into the system properties
+         * by the junit task.
+         */
+        String basedir = System.getProperty( "basedir" );
+        assertNotNull( "The system property basedir was not defined.", basedir );
+
+        String path = tool.resolvePathFragment( basedir, NEEDLE, HAYSTACK );
+        assertEquals( "Couldn't resolve fragment using a base directory of " + basedir, HAYSTACK[1], path );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/StringToolTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/StringToolTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/util/StringToolTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,65 @@
+package org.apache.maven.util;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Ben Walding
+ *
+ */
+public class StringToolTest
+    extends TestCase
+{
+    private StringTool cst;
+
+    public StringToolTest( String name )
+    {
+        super( name );
+    }
+
+    public void setUp()
+    {
+        cst = new StringTool();
+    }
+
+    public void tearDown()
+    {
+        cst = null;
+    }
+
+    public void testSplitStringAtLastDelim()
+    {
+        testSplitStringAtLastDelim( "org.apache.maven.StringTool", ".", "org.apache.maven", "StringTool" );
+        testSplitStringAtLastDelim( "org/apache/maven/StringTool.java", ".", "org/apache/maven/StringTool", "java" );
+        testSplitStringAtLastDelim( "org.apache.maven.StringTool", "|", "org.apache.maven.StringTool", "" );
+        testSplitStringAtLastDelim( null, null, null, null );
+
+    }
+
+    public void testSplitStringAtLastDelim( String input, String delim, String s0, String s1 )
+    {
+        List result = cst.splitStringAtLastDelim( input, delim );
+        String f = "splitStringAtLastDelim(" + input + "," + delim + ")";
+        assertEquals( f + "[0]", s0, result.get( 0 ) );
+        assertEquals( f + "[1]", s1, result.get( 1 ) );
+    }
+
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,1042 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class GoalTest
+    extends TestCase
+{
+    private Session session;
+
+    public GoalTest( String name )
+    {
+        super( name );
+    }
+
+    public void setUp()
+    {
+        this.session = new Session();
+    }
+
+    public void tearDown()
+    {
+        this.session = null;
+    }
+
+    public void testHashCode()
+    {
+
+        Goal a1 = new Goal( "a" );
+        Goal a2 = new Goal( "a" );
+
+        Goal b1 = new Goal( "b" );
+        Goal b2 = new Goal( "b" );
+
+        assertEquals( a1.hashCode(), a2.hashCode() );
+
+        assertEquals( b1.hashCode(), b2.hashCode() );
+
+        assertTrue( a1.hashCode() != b1.hashCode() );
+    }
+
+    public void testEquals()
+    {
+        Goal a1 = new Goal( "a" );
+        Goal a2 = new Goal( "a" );
+
+        Goal b1 = new Goal( "b" );
+        Goal b2 = new Goal( "b" );
+
+        assertEquals( a1, a2 );
+
+        assertEquals( b1, b2 );
+
+        assertTrue( !a1.equals( b1 ) );
+    }
+
+    public void testHasBeenMet()
+    {
+        Goal g = new Goal( "a" );
+
+        assertTrue( !g.isSatisfied( this.session ) );
+
+        this.session.addSatisfiedGoal( g );
+
+        assertTrue( g.isSatisfied( this.session ) );
+
+        this.session.removeSatisfiedGoal( g );
+
+        assertTrue( !g.isSatisfied( this.session ) );
+    }
+
+    public void testAddPrerequisite_NoCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g1.addPrecursor( g3 );
+
+            assertEquals( 2, g1.getPrecursors().size() );
+
+            assertTrue( g1.getPrecursors().contains( g2 ) );
+            assertTrue( g1.getPrecursors().contains( g3 ) );
+
+            assertEquals( 0, g2.getPrecursors().size() );
+            assertEquals( 0, g3.getPrecursors().size() );
+
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPostcursor_NoCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g3.addPrecursor( g2 );
+            g3.addPostcursor( g4 );
+            g4.addPostcursor( g5 );
+            g4.addPostcursor( g6 );
+
+            assertEquals( 0, g1.getPrecursors().size() );
+            assertEquals( 1, g1.getPostcursors().size() );
+            assertEquals( 1, g2.getPrecursors().size() );
+            assertEquals( 1, g2.getPostcursors().size() );
+            assertEquals( 1, g3.getPrecursors().size() );
+            assertEquals( 1, g3.getPostcursors().size() );
+            assertEquals( 1, g4.getPrecursors().size() );
+            assertEquals( 2, g4.getPostcursors().size() );
+            assertEquals( 1, g5.getPrecursors().size() );
+            assertEquals( 0, g5.getPostcursors().size() );
+            assertEquals( 1, g6.getPrecursors().size() );
+            assertEquals( 0, g6.getPostcursors().size() );
+
+            assertTrue( g1.getPostcursors().contains( g2 ) );
+            assertTrue( g4.getPostcursors().contains( g5 ) );
+            assertTrue( g4.getPostcursors().contains( g6 ) );
+            assertTrue( g5.getPrecursors().contains( g4 ) );
+            assertTrue( g6.getPrecursors().contains( g4 ) );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPrecursor_LocalCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+
+            try
+            {
+                g2.addPrecursor( g1 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testPostcursor_LocalCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+
+            try
+            {
+                g2.addPostcursor( g1 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPrecursor_DistantFullCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+        Goal g7 = new Goal( "goal-7" );
+        Goal g8 = new Goal( "goal-8" );
+        Goal g9 = new Goal( "goal-9" );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g2.addPrecursor( g3 );
+            g3.addPrecursor( g4 );
+            g4.addPrecursor( g5 );
+            g5.addPrecursor( g6 );
+            g6.addPrecursor( g7 );
+            g7.addPrecursor( g8 );
+            g8.addPrecursor( g9 );
+
+            try
+            {
+                g9.addPrecursor( g1 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPostcursor_DistantFullCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+        Goal g7 = new Goal( "goal-7" );
+        Goal g8 = new Goal( "goal-8" );
+        Goal g9 = new Goal( "goal-9" );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+            g3.addPostcursor( g4 );
+            g4.addPostcursor( g5 );
+            g5.addPostcursor( g6 );
+            g6.addPostcursor( g7 );
+            g7.addPostcursor( g8 );
+            g8.addPostcursor( g9 );
+
+            try
+            {
+                g9.addPostcursor( g1 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPrecursor_DistantPartialCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+        Goal g7 = new Goal( "goal-7" );
+        Goal g8 = new Goal( "goal-8" );
+        Goal g9 = new Goal( "goal-9" );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g2.addPrecursor( g3 );
+            g3.addPrecursor( g4 );
+            g4.addPrecursor( g5 );
+            g5.addPrecursor( g6 );
+            g6.addPrecursor( g7 );
+            g7.addPrecursor( g8 );
+            g8.addPrecursor( g9 );
+
+            try
+            {
+                g9.addPrecursor( g5 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPostcursor_DistantPartialCycle()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+        Goal g7 = new Goal( "goal-7" );
+        Goal g8 = new Goal( "goal-8" );
+        Goal g9 = new Goal( "goal-9" );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+            g3.addPostcursor( g4 );
+            g4.addPostcursor( g5 );
+            g5.addPostcursor( g6 );
+            g6.addPostcursor( g7 );
+            g7.addPostcursor( g8 );
+            g8.addPostcursor( g9 );
+
+            try
+            {
+                g9.addPostcursor( g5 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPrecursor_DistantPartialCycle_PieceWise()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+        Goal g7 = new Goal( "goal-7" );
+        Goal g8 = new Goal( "goal-8" );
+        Goal g9 = new Goal( "goal-9" );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g2.addPrecursor( g3 );
+            g3.addPrecursor( g4 );
+            //g4.addPrecursor( g5 );
+            g5.addPrecursor( g6 );
+            g6.addPrecursor( g7 );
+            g7.addPrecursor( g8 );
+            g8.addPrecursor( g9 );
+            g9.addPrecursor( g4 );
+
+            try
+            {
+                g4.addPrecursor( g5 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAddPostcursor_DistantPartialCycle_PieceWise()
+    {
+        Goal g1 = new Goal( "goal-1" );
+        Goal g2 = new Goal( "goal-2" );
+        Goal g3 = new Goal( "goal-3" );
+        Goal g4 = new Goal( "goal-4" );
+        Goal g5 = new Goal( "goal-5" );
+        Goal g6 = new Goal( "goal-6" );
+        Goal g7 = new Goal( "goal-7" );
+        Goal g8 = new Goal( "goal-8" );
+        Goal g9 = new Goal( "goal-9" );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+            g3.addPostcursor( g4 );
+            //g4.addPostcursor( g5 );
+            g5.addPostcursor( g6 );
+            g6.addPostcursor( g7 );
+            g7.addPostcursor( g8 );
+            g8.addPostcursor( g9 );
+            g9.addPostcursor( g4 );
+
+            try
+            {
+                g4.addPostcursor( g5 );
+
+                fail( "Should have thrown CyclicGoalChainException" );
+            }
+            catch ( CyclicGoalChainException e )
+            {
+                // expected and correct
+            }
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAttain_Linear()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        Goal g1 = new MockGoal( "goal-1", tracker );
+
+        Goal g2 = new MockGoal( "goal-2", tracker );
+
+        Goal g3 = new MockGoal( "goal-3", tracker );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g2.addPrecursor( g3 );
+
+            tracker.addExpectedGoal( g3 );
+            tracker.addExpectedGoal( g2 );
+            tracker.addExpectedGoal( g1 );
+
+            g1.attain( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testPostAttain_Linear()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        Goal g1 = new MockGoal( "goal-1", tracker );
+
+        Goal g2 = new MockGoal( "goal-2", tracker );
+
+        Goal g3 = new MockGoal( "goal-3", tracker );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+
+            tracker.addExpectedGoal( g1 );
+            tracker.addExpectedGoal( g2 );
+            tracker.addExpectedGoal( g3 );
+
+            g3.attain( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testPostPercolate_Linear()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        Goal g1 = new MockGoal( "goal-1", tracker );
+
+        Goal g2 = new MockGoal( "goal-2", tracker );
+
+        Goal g3 = new MockGoal( "goal-3", tracker );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+
+            tracker.addExpectedGoal( g1 );
+            tracker.addExpectedGoal( g2 );
+            tracker.addExpectedGoal( g3 );
+
+            g1.percolate( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testAttain_Tree()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g1 = new MockGoal( "goal-1", tracker );
+
+        MockGoal g2 = new MockGoal( "goal-2", tracker );
+
+        MockGoal g3 = new MockGoal( "goal-3", tracker );
+
+        MockGoal g4 = new MockGoal( "goal-4", tracker );
+
+        MockGoal g5 = new MockGoal( "goal-5", tracker );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g2.addPrecursor( g3 );
+            g2.addPrecursor( g4 );
+            g4.addPrecursor( g5 );
+
+            tracker.addExpectedGoal( g3 );
+            tracker.addExpectedGoal( g5 );
+            tracker.addExpectedGoal( g4 );
+            tracker.addExpectedGoal( g2 );
+            tracker.addExpectedGoal( g1 );
+
+            g1.attain( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testPostPercolate_Tree()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g1 = new MockGoal( "goal-1", tracker );
+
+        MockGoal g2 = new MockGoal( "goal-2", tracker );
+
+        MockGoal g3 = new MockGoal( "goal-3", tracker );
+
+        MockGoal g4 = new MockGoal( "goal-4", tracker );
+
+        MockGoal g5 = new MockGoal( "goal-5", tracker );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+            g2.addPostcursor( g4 );
+            g4.addPostcursor( g5 );
+
+            tracker.addExpectedGoal( g1 );
+            tracker.addExpectedGoal( g2 );
+            tracker.addExpectedGoal( g3 );
+            tracker.addExpectedGoal( g4 );
+            tracker.addExpectedGoal( g5 );
+
+            g1.percolate( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testAttain_Tree_PartiallyNotRequired()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g1 = new MockGoal( "goal-1", tracker );
+
+        MockGoal g2 = new MockGoal( "goal-2", tracker );
+
+        MockGoal g3 = new MockGoal( "goal-3", tracker );
+
+        MockGoal g4 = new MockGoal( "goal-4", tracker );
+
+        MockGoal g5 = new MockGoal( "goal-5", tracker );
+
+        try
+        {
+            g1.addPrecursor( g2 );
+            g2.addPrecursor( g3 );
+            g2.addPrecursor( g4 );
+            g4.addPrecursor( g5 );
+
+            g4.requiresAction( false );
+            g1.requiresAction( false );
+
+            tracker.addExpectedGoal( g3 );
+            tracker.addExpectedGoal( g5 );
+            // tracker.addExpectedGoal( g4 );
+            tracker.addExpectedGoal( g2 );
+            //tracker.addExpectedGoal( g1 );
+
+            g1.attain( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testPercolate_Tree_PartiallyNotRequired()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g1 = new MockGoal( "goal-1", tracker );
+
+        MockGoal g2 = new MockGoal( "goal-2", tracker );
+
+        MockGoal g3 = new MockGoal( "goal-3", tracker );
+
+        MockGoal g4 = new MockGoal( "goal-4", tracker );
+
+        MockGoal g5 = new MockGoal( "goal-5", tracker );
+
+        try
+        {
+            g1.addPostcursor( g2 );
+            g2.addPostcursor( g3 );
+            g2.addPostcursor( g4 );
+            g4.addPostcursor( g5 );
+
+            g4.requiresAction( false );
+            g1.requiresAction( false );
+
+            //tracker.addExpectedGoal( g1 );
+            tracker.addExpectedGoal( g2 );
+            tracker.addExpectedGoal( g3 );
+            //tracker.addExpectedGoal( g4 );
+            tracker.addExpectedGoal( g5 );
+
+            g1.percolate( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+
+        tracker.verify();
+    }
+
+    public void testAttain_Tree_Overlap()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g1_1 = new MockGoal( "goal-1-1", tracker );
+
+        MockGoal g1_2 = new MockGoal( "goal-1-2", tracker );
+
+        MockGoal g1_3 = new MockGoal( "goal-1-3", tracker );
+
+        MockGoal g2_1 = new MockGoal( "goal-2-1", tracker );
+
+        MockGoal g2_2 = new MockGoal( "goal-2-2", tracker );
+
+        MockGoal g2_3 = new MockGoal( "goal-2-3", tracker );
+
+        MockGoal gc_1 = new MockGoal( "goal-c-1", tracker );
+
+        MockGoal gc_2 = new MockGoal( "goal-c-2", tracker );
+
+        try
+        {
+            g1_1.addPrecursor( g1_2 );
+            g1_2.addPrecursor( g1_3 );
+
+            g2_1.addPrecursor( g2_2 );
+            g2_2.addPrecursor( g2_3 );
+
+            g1_3.addPrecursor( gc_1 );
+            g2_3.addPrecursor( gc_1 );
+
+            gc_1.addPrecursor( gc_2 );
+
+            // ----------------------------------------
+            //   test 1
+            // ----------------------------------------
+
+            tracker.clear();
+
+            tracker.addExpectedGoal( gc_2 );
+            tracker.addExpectedGoal( gc_1 );
+            tracker.addExpectedGoal( g1_3 );
+            tracker.addExpectedGoal( g1_2 );
+            tracker.addExpectedGoal( g1_1 );
+
+            g1_1.attain( this.session );
+
+            tracker.verify();
+
+            // ----------------------------------------
+            //   test 2
+            // ----------------------------------------
+
+            tracker.clear();
+
+            tracker.addExpectedGoal( g2_3 );
+            tracker.addExpectedGoal( g2_2 );
+            tracker.addExpectedGoal( g2_1 );
+
+            g2_1.attain( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testPercolate_Tree_Overlap()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g1_1 = new MockGoal( "goal-1-1", tracker );
+
+        MockGoal g1_2 = new MockGoal( "goal-1-2", tracker );
+
+        MockGoal g1_3 = new MockGoal( "goal-1-3", tracker );
+
+        MockGoal g2_1 = new MockGoal( "goal-2-1", tracker );
+
+        MockGoal g2_2 = new MockGoal( "goal-2-2", tracker );
+
+        MockGoal g2_3 = new MockGoal( "goal-2-3", tracker );
+
+        MockGoal gc_1 = new MockGoal( "goal-c-1", tracker );
+
+        MockGoal gc_2 = new MockGoal( "goal-c-2", tracker );
+
+        try
+        {
+            g1_1.addPostcursor( g1_2 );
+            g1_2.addPostcursor( g1_3 );
+
+            g2_1.addPostcursor( g2_2 );
+            g2_2.addPostcursor( g2_3 );
+
+            g1_3.addPostcursor( gc_1 );
+            g2_3.addPostcursor( gc_1 );
+
+            gc_1.addPostcursor( gc_2 );
+
+            // ----------------------------------------
+            //   test 1
+            // ----------------------------------------
+
+            tracker.clear();
+
+            tracker.addExpectedGoal( g1_1 );
+            tracker.addExpectedGoal( g1_2 );
+            tracker.addExpectedGoal( g1_3 );
+            tracker.addExpectedGoal( gc_1 );
+            tracker.addExpectedGoal( gc_2 );
+
+            g1_1.percolate( this.session );
+
+            tracker.verify();
+
+            // ----------------------------------------
+            //   test 2
+            // ----------------------------------------
+
+            tracker.clear();
+
+            tracker.addExpectedGoal( g2_1 );
+            tracker.addExpectedGoal( g2_2 );
+            tracker.addExpectedGoal( g2_3 );
+
+            g2_1.percolate( this.session );
+        }
+        catch ( CyclicGoalChainException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testRequiresAction_False()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g = new MockGoal( "goal-1", tracker );
+
+        g.requiresAction( false );
+
+        try
+        {
+            g.attain( this.session );
+
+            tracker.verify();
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testRequiresAction_True()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        MockGoal g = new MockGoal( "goal-1", tracker );
+
+        tracker.addExpectedGoal( g );
+
+        try
+        {
+            g.attain( this.session );
+
+            tracker.verify();
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testPreGoalCallback_AddRemove()
+    {
+        MockCallback callback = new MockCallback();
+
+        Goal g = new Goal( "goal-1" );
+
+        g.addPreGoalCallback( callback );
+        g.addPreGoalCallback( callback );
+
+        List callbacks = g.getPreGoalCallbacks();
+
+        assertEquals( 2, callbacks.size() );
+
+        assertSame( callback, callbacks.get( 0 ) );
+
+        assertSame( callback, callbacks.get( 1 ) );
+
+        g.removePreGoalCallback( callback );
+
+        callbacks = g.getPreGoalCallbacks();
+
+        assertEquals( 0, callbacks.size() );
+    }
+
+    public void testPostGoalCallback_AddRemove()
+    {
+        MockCallback callback = new MockCallback();
+
+        Goal g = new Goal( "goal-1" );
+
+        g.addPostGoalCallback( callback );
+        g.addPostGoalCallback( callback );
+
+        List callbacks = g.getPostGoalCallbacks();
+
+        assertEquals( 2, callbacks.size() );
+
+        assertSame( callback, callbacks.get( 0 ) );
+
+        assertSame( callback, callbacks.get( 1 ) );
+
+        g.removePostGoalCallback( callback );
+
+        callbacks = g.getPostGoalCallbacks();
+
+        assertEquals( 0, callbacks.size() );
+    }
+
+    public void testPreActionCallback_AddRemove()
+    {
+        MockCallback callback = new MockCallback();
+
+        Goal g = new Goal( "goal-1" );
+
+        g.addPreActionCallback( callback );
+        g.addPreActionCallback( callback );
+
+        List callbacks = g.getPreActionCallbacks();
+
+        assertEquals( 2, callbacks.size() );
+
+        assertSame( callback, callbacks.get( 0 ) );
+
+        assertSame( callback, callbacks.get( 1 ) );
+
+        g.removePreActionCallback( callback );
+
+        callbacks = g.getPreActionCallbacks();
+
+        assertEquals( 0, callbacks.size() );
+    }
+
+    public void testPostActionCallback_AddRemove()
+    {
+        MockCallback callback = new MockCallback();
+
+        Goal g = new Goal( "goal-1" );
+
+        g.addPostActionCallback( callback );
+        g.addPostActionCallback( callback );
+
+        List callbacks = g.getPostActionCallbacks();
+
+        assertEquals( 2, callbacks.size() );
+
+        assertSame( callback, callbacks.get( 0 ) );
+
+        assertSame( callback, callbacks.get( 1 ) );
+
+        g.removePostActionCallback( callback );
+
+        callbacks = g.getPostActionCallbacks();
+
+        assertEquals( 0, callbacks.size() );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTest.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTracker.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTracker.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTracker.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,58 @@
+package org.apache.maven.werkz;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+public class GoalTracker
+    extends Assert
+{
+    private List expectedGoals;
+
+    private List firedGoals;
+
+    public GoalTracker()
+    {
+        this.expectedGoals = new ArrayList();
+        this.firedGoals = new ArrayList();
+    }
+
+    public void addExpectedGoal( Goal goal )
+    {
+        this.expectedGoals.add( goal );
+    }
+
+    public void addFiredGoal( Goal goal )
+    {
+        this.firedGoals.add( goal );
+    }
+
+    public void clear()
+    {
+        this.expectedGoals.clear();
+        this.firedGoals.clear();
+    }
+
+    public void verify()
+    {
+        assertEquals( this.expectedGoals, this.firedGoals );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/GoalTracker.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockCallback.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockCallback.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockCallback.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,44 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+public class MockCallback
+    implements PreGoalCallback, PostGoalCallback, PreActionCallback, PostActionCallback
+{
+
+    public void firePreGoal( Goal goal )
+    {
+        // intentionally left blank.
+    }
+
+    public void firePostGoal( Goal goal )
+    {
+        // intentionally left blank.
+    }
+
+    public void firePreAction( Goal goal )
+    {
+        // intentionally left blank.
+    }
+
+    public void firePostAction( Goal goal )
+    {
+        // intentionally left blank.
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockCallback.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockGoal.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockGoal.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockGoal.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,68 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+public class MockGoal
+    extends Goal
+{
+    private GoalTracker tracker;
+
+    private boolean requiresAction;
+
+    public MockGoal( String name, GoalTracker tracker )
+    {
+        super( name );
+
+        this.tracker = tracker;
+        this.requiresAction = true;
+
+        setAction( new Action()
+        {
+            public void performAction( Session session )
+            {
+                getTracker().addFiredGoal( getGoal() );
+            }
+
+            public boolean requiresAction()
+            {
+                return outterRequiresAction();
+            }
+        } );
+    }
+
+    Goal getGoal()
+    {
+        return this;
+    }
+
+    GoalTracker getTracker()
+    {
+        return this.tracker;
+    }
+
+    public boolean outterRequiresAction()
+    {
+        return this.requiresAction;
+    }
+
+    public void requiresAction( boolean requiresAction )
+    {
+        this.requiresAction = requiresAction;
+    }
+
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/MockGoal.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/ProjectTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/ProjectTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/ProjectTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,240 @@
+package org.apache.maven.werkz;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.util.Arrays;
+
+import junit.framework.TestCase;
+
+public class ProjectTest
+    extends TestCase
+{
+    private Session session;
+
+    public ProjectTest( String name )
+    {
+        super( name );
+    }
+
+    public void setUp()
+    {
+        this.session = new Session();
+    }
+
+    public void tearDown()
+    {
+        this.session = null;
+    }
+
+    public void testAddGoal()
+    {
+        Goal g = new Goal( "goal-1" );
+
+        WerkzProject project = new WerkzProject();
+
+        project.addGoal( g );
+
+        assertSame( g, project.getGoal( "goal-1" ) );
+    }
+
+    public void testGetGoal_Bogus()
+    {
+        WerkzProject project = new WerkzProject();
+
+        assertNull( project.getGoal( "goal-1" ) );
+    }
+
+    public void testAttainGoal()
+    {
+        GoalTracker tracker = new GoalTracker();
+
+        WerkzProject project = new WerkzProject();
+
+        MockGoal g = new MockGoal( "goal-1", tracker );
+
+        project.addGoal( g );
+
+        tracker.addExpectedGoal( g );
+
+        try
+        {
+            project.attainGoal( "goal-1", this.session );
+
+            tracker.verify();
+        }
+        catch ( NoSuchGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testAttainGoal_Bogus()
+    {
+        WerkzProject project = new WerkzProject();
+
+        try
+        {
+            project.attainGoal( "goal-1", this.session );
+
+            fail( "Should have thrown NoSuchGoalException" );
+        }
+        catch ( NoSuchGoalException e )
+        {
+            // expected and correct
+        }
+        catch ( UnattainableGoalException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            fail( e.getLocalizedMessage() );
+        }
+    }
+
+    public void testGetExecutionChain()
+        throws Exception
+    {
+        WerkzProject project = new WerkzProject();
+
+        Goal a = new Goal( "a" );
+        Goal b = new Goal( "b" );
+        Goal c = new Goal( "c" );
+        Goal d = new Goal( "d" );
+        Goal e = new Goal( "e" );
+        Goal f = new Goal( "f" );
+
+        a.addPrecursor( b );
+        a.addPrecursor( c );
+
+        b.addPrecursor( d );
+
+        c.addPrecursor( e );
+
+        d.addPrecursor( f );
+        e.addPrecursor( f );
+
+        project.addGoal( a );
+        project.addGoal( b );
+        project.addGoal( c );
+        project.addGoal( d );
+        project.addGoal( e );
+        project.addGoal( f );
+
+        Goal[] chain = project.getExecutionChain( "a" );
+
+        assertEquals( 6, chain.length );
+
+        assertSame( a, chain[5] );
+
+        // ----------
+        //     a
+        // ----------
+
+        assertBefore( b, a, chain );
+        assertBefore( c, a, chain );
+        assertBefore( d, a, chain );
+        assertBefore( e, a, chain );
+        assertBefore( f, a, chain );
+
+        // ----------
+        //     b
+        // ----------
+
+        assertBefore( d, b, chain );
+        assertBefore( f, b, chain );
+
+        // ----------
+        //     c
+        // ----------
+
+        assertBefore( e, c, chain );
+        assertBefore( f, c, chain );
+
+        // ----------
+        //     d
+        // ----------
+
+        assertBefore( f, d, chain );
+
+        // ----------
+        //     e
+        // ----------
+
+        assertBefore( f, e, chain );
+
+        // 
+
+        assertContains( a, chain );
+        assertContains( b, chain );
+        assertContains( c, chain );
+        assertContains( d, chain );
+        assertContains( e, chain );
+    }
+
+    protected void assertBefore( Goal first, Goal after, Goal[] chain )
+    {
+        int firstIndex = -1;
+        int afterIndex = -1;
+
+        for ( int i = 0; i < chain.length; ++i )
+        {
+            if ( chain[i].equals( first ) )
+            {
+                firstIndex = i;
+            }
+            else if ( chain[i].equals( after ) )
+            {
+                afterIndex = i;
+            }
+        }
+
+        if ( firstIndex < 0 )
+        {
+            fail( "first element " + first + " not in " + Arrays.asList( chain ) );
+        }
+
+        if ( firstIndex < 0 )
+        {
+            fail( "after element " + after + " not in " + Arrays.asList( chain ) );
+        }
+
+        assertTrue( firstIndex < afterIndex );
+    }
+
+    protected void assertContains( Object obj, Object[] array )
+    {
+        for ( int i = 0; i < array.length; ++i )
+        {
+            if ( array[i].equals( obj ) )
+            {
+                return;
+            }
+        }
+
+        fail( obj + " not in " + Arrays.asList( array ) );
+    }
+}


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/java/org/apache/maven/werkz/ProjectTest.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/log4j.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/log4j.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/log4j.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,109 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# ------------------------------------------------------------------------
+# L O G 4 J  C O N F I G U R A T I O N
+# ------------------------------------------------------------------------
+# This is the log4j configuration file that is used for testing Maven.
+# We set appending to true because the tests reinit log4j which zeros
+# all the files.
+#
+# maven.test.distribution = true
+#
+# Must be set in order for this file to be used.
+# ------------------------------------------------------------------------
+
+log.level = DEBUG
+
+# ------------------------------------------------------------------------
+# R O O T  C A T E G O R Y
+# ------------------------------------------------------------------------
+log4j.rootCategory = WARN, default
+log4j.appender.default = org.apache.log4j.FileAppender
+log4j.appender.default.file = log.default
+log4j.appender.default.layout = org.apache.log4j.PatternLayout
+log4j.appender.default.layout.conversionPattern = %c: %m%n
+log4j.appender.default.append = true
+
+# ------------------------------------------------------------------------
+# P L U G I N  M A N A G E R
+# ------------------------------------------------------------------------
+log4j.category.org.apache.maven.plugin.PluginManager = ${log.level}, pm
+log4j.appender.pm = org.apache.log4j.FileAppender
+log4j.appender.pm.file = log.pm
+log4j.appender.pm.layout = org.apache.log4j.PatternLayout
+log4j.appender.pm.layout.conversionPattern = %c: %m%n
+log4j.appender.pm.append = true
+
+# ------------------------------------------------------------------------
+# P R O J E C T  V E R I F I E R
+# ------------------------------------------------------------------------
+log4j.category.org.apache.maven.verifier.DependencyVerifier = ${log.level}, verifier
+log4j.appender.verifier = org.apache.log4j.FileAppender
+log4j.appender.verifier.file = log.verifier
+log4j.appender.verifier.layout = org.apache.log4j.PatternLayout
+log4j.appender.verifier.layout.conversionPattern = %c: %m%n
+log4j.appender.verifier.append = true
+
+# ------------------------------------------------------------------------
+# A P P  (C L I  I N T E R F A C E)
+# ------------------------------------------------------------------------
+log4j.category.org.apache.maven.app.App = ${log.level}, app
+log4j.appender.app = org.apache.log4j.FileAppender
+log4j.appender.app.file = log.app
+log4j.appender.app.layout = org.apache.log4j.PatternLayout
+log4j.appender.app.layout.conversionPattern = %c: %m%n
+log4j.appender.app.append = true
+
+# ------------------------------------------------------------------------
+# M A V E N  B E A N
+# ------------------------------------------------------------------------
+log4j.category.org.apache.maven.MavenSession = ${log.level}, maven
+log4j.appender.maven = org.apache.log4j.FileAppender
+log4j.appender.maven.file = log.maven
+log4j.appender.maven.layout = org.apache.log4j.PatternLayout
+log4j.appender.maven.layout.conversionPattern = %c: %m%n
+log4j.appender.maven.append = true
+
+# ------------------------------------------------------------------------
+# J E L L Y  T A G S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons.jelly.tags = ${log.level}, jelly
+log4j.appender.jelly = org.apache.log4j.FileAppender
+log4j.appender.jelly.file = log.jelly
+log4j.appender.jelly.layout = org.apache.log4j.PatternLayout
+log4j.appender.jelly.layout.conversionPattern = %c: %m%n
+log4j.appender.jelly.append = true
+
+# ------------------------------------------------------------------------
+# W E R K Z  T A G S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons.jelly.tags.werkz = ${log.level}, werkz
+log4j.appender.werkz = org.apache.log4j.FileAppender
+log4j.appender.werkz.file = log.werkz
+log4j.appender.werkz.layout = org.apache.log4j.PatternLayout
+log4j.appender.werkz.layout.conversionPattern = %c: %m%n
+log4j.appender.werkz.append = true
+
+# ------------------------------------------------------------------------
+# A N T  T A G S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons.jelly.tags.ant = ${log.level}, ant
+log4j.appender.ant = org.apache.log4j.FileAppender
+log4j.appender.ant.file = log.ant
+log4j.appender.ant.layout = org.apache.log4j.PatternLayout
+log4j.appender.ant.layout.conversionPattern = %c: %m%n
+log4j.appender.ant.append = true
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-1/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-1/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-1/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:a="a"
+  xmlns:b="b"
+  xmlns:c="c"
+  xmlns:d="d">
+  
+  <goal name="plugin-1-A" prereqs="plugin-1-B">
+    <attainGoal name="plugin-7-A"/>
+  </goal>
+  
+  <goal name="plugin-1-B" prereqs="plugin-2-A"/>
+  
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-2/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-2/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-2/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,33 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:d="d"
+  xmlns:define="jelly:define">
+
+  <goal name="plugin-2-A"/>
+
+  <define:taglib uri="a">
+  </define:taglib>
+
+  <define:taglib uri="b">
+  </define:taglib>
+
+  <define:taglib uri="c">
+  </define:taglib>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-3/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-3/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-3/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:e="e"
+  xmlns:define="jelly:define">
+  
+  <define:taglib uri="d">
+  </define:taglib>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-4/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-4/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-4/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:define="jelly:define">
+  
+  <define:taglib uri="e">
+  </define:taglib>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-5/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-5/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-5/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,22 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project>
+  
+  <preGoal name="plugin-1-A"/>
+  
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-6/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-6/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-6/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:p7A="plugin-7-A">
+
+  <goal name="plugin-6-A"/>
+
+  <postGoal name="plugin-1-A"/>
+  
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-7/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-7/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-7/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:define="jelly:define">
+  
+  <goal name="plugin-7-A" prereqs="plugin-8-A"/>
+
+  <define:taglib uri="plugin-7-A">
+  </define:taglib>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-8/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-8/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-8/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project>
+
+  <goal name="plugin-8-A"/>
+
+  <goal name="plugin-8-B">
+    <attainGoal name="plugin-9-B"/>
+  </goal>
+
+  <preGoal name="plugin-1-A">
+    <attainGoal name="plugin-9-A"/>
+  </preGoal>
+  
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-9/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-9/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/mock-plugins/plugin-9/plugin.jelly	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project>
+  
+  <goal name="plugin-9-A"/>
+  
+  <goal name="plugin-9-B"/>
+  
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/dependencies.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/dependencies.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/dependencies.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <id>artifactId</id>
+  <name>Test Project</name>
+
+  <dependencies>
+    <dependency>
+      <id>ant</id>
+      <version>1.5</version>
+    </dependency>
+    <dependency>
+      <id>ant+optional</id>
+      <version>1.5</version>
+    </dependency>
+    <dependency>
+      <id>ant-optional</id>
+      <version>1.5</version>
+    </dependency>
+    <dependency>
+      <id>junit</id>
+      <version>3.8.1</version>
+      <properties>
+        <classloader>root</classloader>
+      </properties>
+    </dependency>
+    <dependency>
+      <id>groupId</id>
+      <artifactId>artifactId</artifactId>
+      <version>version</version>
+    </dependency>
+  </dependencies>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-different-ids.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-different-ids.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-different-ids.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <groupId>base-groupId</groupId>
+    <id>base-artifactId</id>
+    <name>Test Project</name>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-id-only.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-id-only.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <id>base-artifactId</id>
+    <name>Test Project</name>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-id-only.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-matching-ids.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-matching-ids.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base-matching-ids.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <groupId>base-id</groupId>
+    <id>base-id</id>
+    <name>Test Project</name>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <groupId>base-groupId</groupId>
+    <name>Test Project</name>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/base.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-different.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-different.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-different.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base-different-ids.xml</extend>
+    <artifactId>extend-artifactId</artifactId>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-matching.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-matching.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only-over-matching.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base-matching-ids.xml</extend>
+    <artifactId>extend-artifactId</artifactId>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-artifact-id-only.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base.xml</extend>
+    <artifactId>extend-artifactId</artifactId>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base.xml</extend>
+    <artifactId>extend-artifactId</artifactId>
+    <groupId>extend-groupId</groupId>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base.xml</extend>
+    <id>extend-artifactId</id>
+    <groupId>extend-groupId</groupId>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-only.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-only.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base.xml</extend>
+    <id>extend-artifactId</id>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-only.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-override-groupid.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-override-groupid.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-override-groupid.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base-id-only.xml</extend>
+    <id>extend-artifactId</id>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-id-override-groupid.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-none.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-none.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-none.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <extend>base.xml</extend>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/extend/test-none.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-artifact-id.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <artifactId>artifactId</artifactId>
+    <groupId>groupId</groupId>
+    <name>Test Project</name>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <id>artifactId</id>
+    <groupId>groupId</groupId>
+    <name>Test Project</name>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-id-only.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-id-only.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+    <id>artifactId</id>
+    <name>Test Project</name>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/test-data/pom/test-id-only.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,3 @@
+target
+maven.log
+velocity.log

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/a.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/a.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/b.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/b.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/c-1.0-alpha-1-SNAPSHOT.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/lib/c-1.0-alpha-1-SNAPSHOT.jar
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,905 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project
+  xmlns:multiproject="multiproject"
+  xmlns:j="jelly:core"
+  xmlns:ant="jelly:ant"
+  xmlns:u="jelly:util"
+  xmlns:maven="jelly:maven"
+  xmlns:define="jelly:define"
+  xmlns:i="jelly:interaction">
+
+  <!--
+   | How the touchstone build works:
+   |
+   | The 'touchstone-tests' goal is run as part of Maven's bootstrap process
+   | in an attempt to verify as much of Maven's runtime behaviour as possible.
+   | If you find something is not working we ask that you add the failure that
+   | you find to the touchstone build and send us a patch. Below we explain
+   | what you do to add a test. We will try to make this easier and isolate
+   | each of the test in a separate file but this is what's here for now.
+   |
+   | How to add a test to the touchstone:
+   |
+   | The way things are currently set up is that for each test you want to
+   | perform you make a separate goal for it.
+   |
+   | After you have made your goal which executes what you feel is incorrect
+   | you add an <attainGoal name="your-test"/> inside the 'touchstone-tests'
+   | goal and then you can put a little check beneath the <attainGoal/> that checks
+   | values or whatever else you want to check. The pattern so far is to use
+   | the <fail/> tag when something goes wrong which will halt the bootstrap.
+   |
+   | If you wish to check plugin functionality of any sort there is a
+   | touchstone plugin that you are free to properties or Jelly to. But
+   | DO NOT CHANGE any existing values or Jelly. Only make additions.
+   |
+   | ADDING TESTS THAT CAUSE FAILURES:
+   |
+   | It's perfectly fine to add tests that fail, this is the only way we can
+   | see an example of a problem. Just don't make the test run from the
+   | 'touchstone-tests' goal with an <attainGoal/>. This way the bootstrap
+   | will always work. As we find solutions, the tests that originally
+   | displayed problems can be moved into the 'touchstone-tests' goal to
+   | make sure they don't crop up again.
+   |
+   -->
+
+  <!--
+   |
+   | Run all the goals which contain tests and verify.
+   |
+   -->
+
+  <goal name="touchstone-tests">
+    <attainGoal name="test-plugin-loading" />
+
+    <attainGoal name="touchstone-goal-A"/>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-plugin" property="touchstone_goal_A_from_plugin"/>
+    <j:if test="${checkValue == 'true'}">
+      <fail message="">
+        Goal should have been overridden. We have an internal error processing goals.
+      </fail>
+    </j:if>
+
+    <attainGoal name="touchstone-goal-B"/>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-plugin" property="touchstone_goal_B_from_plugin"/>
+    <j:if test="${checkValue != 'true'}">
+      <fail message="">
+        Goal should be used from the touchstone plugin. We have an internal
+        error processing goals.
+      </fail>
+    </j:if>
+
+    <attainGoal name="test-addPath"/>
+    <j:choose>
+      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
+        <property name="testPath1Prop" refid="testPath1" />
+        <property name="testPath2Prop" refid="testPath2" />
+        <j:set var="resultantPath" value="${testPath1Prop}${systemScope['path.separator']}${testPath2Prop}"/>
+      </j:when>
+      <j:otherwise>
+        <j:set var="resultantPath" value="/path1:/path2"/>
+      </j:otherwise>
+    </j:choose>
+
+    <j:if test="${context.getAntProject().getReferences().get('testPath') != resultantPath}">
+      <property name="testPathProp" refid="testPath" />
+      <property name="testPath1Prop" refid="testPath1" />
+      <property name="testPath2Prop" refid="testPath2" />
+      <fail message="">
+        Paths were not correctly appended. Internal error in the maven:addPath tag.
+        testPath = ${context.getAntProject().getReferences().get('testPath')}
+        resultantPath = ${resultantPath}
+        testPath1 = ${testPath1Prop}
+        testPath2 = ${testPath2Prop}
+      </fail>
+    </j:if>
+
+    <attainGoal name="test-plugin-property-override"/>
+    <j:set var="mavenTouchstoneA" value="${maven.touchstone.A}"/>
+    <j:if test="${mavenTouchstoneA != 'override.maven.touchstone.A'}">
+      <echo>mavenTouchstoneA = ${mavenTouchstoneA}, should be override.maven.touchstone.A</echo>
+      <fail message="">
+
+        Plugin properties are not being correctly overridden.
+
+      </fail>
+    </j:if>
+
+    <!--
+     |
+     | artifactId check.
+     |
+     -->
+    <j:if test="${pom.artifactDirectory != 'touchstone'}">
+      <fail message="">
+
+        The artifactDirectory should be in legacy form which
+        contains no ":" character.
+
+      </fail>
+    </j:if>
+
+    <!--
+     |
+     | Inter-plugin pre/postGoal tests.
+     |
+     -->
+
+    <!--
+     |
+     | Touchstone partner has a pregoal and postGoal which sets a variable.
+     |
+     -->
+    <attainGoal name="touchstone-goal-C"/>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-partner-plugin" property="touchstone_partner_preGoal_C"/>
+    <echo>checkValue = ${checkValue}</echo>
+    <j:if test="${checkValue != 'true'}">
+      <fail message="">
+
+        Inter-plugin preGoals are not being dealt with correctly.
+
+      </fail>
+    </j:if>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-partner-plugin" property="touchstone_partner_postGoal_C"/>
+    <j:if test="${checkValue != 'true'}">
+      <fail message="">
+
+        Inter-plugin postGoals are not being dealt with correctly.
+
+      </fail>
+    </j:if>
+
+    <!--
+     |
+     | Touchstone partner has a pregoal ant postGoal which attains a goal which sets a variable.
+     |
+     -->
+    <attainGoal name="touchstone-goal-D"/>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-partner-plugin" property="touchstone_partner_preGoal_D"/>
+    <echo>checkValue = ${checkValue}</echo>
+    <j:if test="${checkValue != 'true'}">
+      <fail message="">
+
+        Inter-plugin preGoals are not being dealt with correctly.
+
+      </fail>
+    </j:if>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-partner-plugin" property="touchstone_partner_postGoal_D"/>
+    <j:if test="${checkValue != 'true'}">
+      <fail message="">
+
+        Inter-plugin postGoals are not being dealt with correctly.
+
+      </fail>
+    </j:if>
+
+    <attainGoal name="test-mavenjellyscope"/>
+    <j:if test="${context.findVariable('test-mavenjellyscope') != 'success'}">
+       <fail>
+           Problem with scope factory method - $${test-mavenjellyscope} should have been set to 'success'
+           but was set to '${test-mavenjellyscope}'.
+       </fail>    
+    </j:if>
+    
+    <attainGoal name="test-reactor-failure-property"/>
+    <attainGoal name="test-maven-failure-property"/>
+    <attainGoal name="test-maven-unknown-failure-property"/>
+
+    <attainGoal name="test-make-absolute-path" />
+    <attainGoal name="test-make-relative-path" />
+
+    <attainGoal name="test-preGoal-counter" />
+    <attainGoal name="test-postGoal-counter" />
+
+    <attainGoal name="test-goal-trimming-reactor" />
+    <attainGoal name="test-reactor-resources" />
+    <attainGoal name="test-plugin-attainment-reactor" />
+    <attainGoal name="test-plugin-attainment-reactor-two-goals" />
+    <attainGoal name="test-reactor-run-twice" />
+    <attainGoal name="test-context-switch" />
+    <attainGoal name="test-defaults" />
+    <attainGoal name="test-inheritance" />
+    <attainGoal name="test-non-jar-dependency-path" />
+    <attainGoal name="test-plugin-getset" />
+    <attainGoal name="test-dot-property" />
+    <attainGoal name="test-overlappedCalls" />  <!-- MAVEN-1691 -->
+    <!-- TO FIX -->
+    <!-- <attainGoal name="test-entities-in-project" /> -->
+    <attainGoal name="test-entities-in-maven" />
+    <!-- TODO - this is still broken (as in RC1)
+    <attainGoal name="test-reactor-maven-username" />
+    -->
+    <echo>Touchstone complete</echo>
+  </goal>
+
+   <!--
+   |
+   | T E S T S
+   |
+   -->
+
+  <!--
+   |
+   | Check maven.build.failure is set properly by the reactor
+   |
+   -->
+  <goal name="test-reactor-failure-property">
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${mavenBuildFailure}">
+      <fail>maven.build.failure already set</fail>
+    </j:if>
+
+    <!-- Test success -->
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/failProperty/success-*/project.xml"
+      goals="build"
+      banner="Testing"
+      ignoreFailures="true"
+    />
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${mavenBuildFailure}">
+      <fail>maven.build.failure set incorrectly</fail>
+    </j:if>
+
+    <!-- Test failure -->
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/failProperty/failure-*/project.xml,src/reactor-build/failProperty/success-*/project.xml"
+      goals="build"
+      banner="Testing"
+      ignoreFailures="true"
+    />
+
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${!mavenBuildFailure}">
+      <fail>maven.build.failure not set</fail>
+    </j:if>
+
+    <j:choose>
+      <j:when test="${size(failedProjects) != 2}">
+        <fail>failedProjects is not length 2</fail>
+      </j:when>
+      <j:otherwise>
+        <j:forEach var="prj" items="${failedProjects}">
+          <j:choose>
+            <j:when test="${prj.artifactId == 'failure-1'}">
+              <echo>failure-1 failed correctly</echo>
+            </j:when>
+            <j:when test="${prj.artifactId == 'failure-2'}">
+              <echo>failure-2 failed correctly</echo>
+            </j:when>
+            <j:otherwise>
+              <fail>${prj.artifactId} failed incorrectly</fail>
+            </j:otherwise>
+          </j:choose>
+        </j:forEach>
+      </j:otherwise>
+    </j:choose>
+
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/failProperty/extra-failure/project.xml"
+      goals="build"
+      banner="Testing"
+      ignoreFailures="true"
+    />
+
+    <j:choose>
+      <j:when test="${size(failedProjects) != 3}">
+        <fail>failedProjects is not length 3</fail>
+      </j:when>
+      <j:otherwise>
+        <j:forEach var="prj" items="${failedProjects}">
+          <j:choose>
+            <j:when test="${prj.artifactId == 'failure-1'}">
+              <echo>failure-1 failed correctly</echo>
+            </j:when>
+            <j:when test="${prj.artifactId == 'failure-2'}">
+              <echo>failure-2 failed correctly</echo>
+            </j:when>
+            <j:when test="${prj.artifactId == 'extra-failure'}">
+              <echo>extra-failure failed correctly</echo>
+            </j:when>
+            <j:otherwise>
+              <fail>${prj.artifactId} failed incorrectly</fail>
+            </j:otherwise>
+          </j:choose>
+        </j:forEach>
+      </j:otherwise>
+    </j:choose>
+
+    <j:remove var="maven.build.failure" />
+    <j:remove var="failedProjects" />
+  </goal>
+
+  <!--
+   |
+   | Check maven.build.failure is set properly by the maven:maven
+   |
+   -->
+  <goal name="test-maven-failure-property">
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${mavenBuildFailure}">
+      <fail>maven.build.failure already set</fail>
+    </j:if>
+
+    <!-- Test success -->
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/failProperty/success-1/project.xml"
+      goals="build"
+      ignoreFailures="true"
+    />
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${mavenBuildFailure}">
+      <fail>maven.build.failure set incorrectly</fail>
+    </j:if>
+
+    <!-- Test failure -->
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/failProperty/failure-1/project.xml"
+      goals="build"
+      ignoreFailures="true"
+    />
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${!mavenBuildFailure}">
+      <fail>maven.build.failure not set</fail>
+    </j:if>
+
+    <j:if test="${failedProjects.isEmpty()}">
+      <fail>Empty failedProjects</fail>
+    </j:if>
+
+    <j:choose>
+      <j:when test="${size(failedProjects) != 1}">
+        <fail>failedProjects should only contain 1 element</fail>
+      </j:when>
+      <j:otherwise>
+        <j:forEach var="prj" items="${failedProjects}">
+          <j:choose>
+            <j:when test="${prj.artifactId == 'failure-1'}">
+              <echo>failure-1 failed correctly</echo>
+            </j:when>
+            <j:otherwise>
+              <fail>${prj.artifactId} failed incorrectly</fail>
+            </j:otherwise>
+          </j:choose>
+        </j:forEach>
+      </j:otherwise>
+    </j:choose>
+
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/failProperty/extra-failure/project.xml"
+      goals="build"
+      ignoreFailures="true"
+    />
+
+    <j:choose>
+      <j:when test="${size(failedProjects) != 2}">
+        <fail>failedProjects is not length 2</fail>
+      </j:when>
+      <j:otherwise>
+        <j:forEach var="prj" items="${failedProjects}">
+          <j:choose>
+            <j:when test="${prj.artifactId == 'failure-1'}">
+              <echo>failure-1 failed correctly</echo>
+            </j:when>
+            <j:when test="${prj.artifactId == 'extra-failure'}">
+              <echo>extra-failure failed correctly</echo>
+            </j:when>
+            <j:otherwise>
+              <fail>${prj.artifactId} failed incorrectly</fail>
+            </j:otherwise>
+          </j:choose>
+        </j:forEach>
+      </j:otherwise>
+    </j:choose>
+
+    <j:remove var="maven.build.failure" />
+    <j:remove var="failedProjects" />
+  </goal>
+
+  <!--
+   |
+   | Check maven.build.failure is set properly by maven:maven for an unknown project in the list.
+   |
+   -->
+  <goal name="test-maven-unknown-failure-property">
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${mavenBuildFailure}">
+      <fail>maven.build.failure already set</fail>
+    </j:if>
+
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/failProperty/unknown/project.xml"
+      goals="build"
+      ignoreFailures="true"
+    />
+    <j:set var="mavenBuildFailure" value="${maven.build.failure}" />
+    <j:if test="${!mavenBuildFailure}">
+      <fail>maven.build.failure not set for unknown project</fail>
+    </j:if>
+
+    <j:remove var="maven.build.failure" />
+  </goal>
+
+  <!--
+   |
+   | maven.username from within reactor test.
+   | @todo fix - doesn't work from test:test postGoal in root directory
+   |
+   -->
+  <goal name="test-reactor-maven-username">
+    <j:set var="mavenUsername" value="${maven.username}" />
+    <j:if test="${mavenUsername != 'maven'}">
+      <fail>maven.username should be 'maven', but it is '${maven.username}'</fail>
+    </j:if>
+    <j:remove var="mavenUsername" />
+
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/username_test/project.xml"
+      goals="run"
+      banner="Testing"
+      ignoreFailures="false"
+    />
+ 
+  </goal>
+
+  <!--
+   |
+   | Tests for the MavenTagLibrary.
+   |
+   -->
+
+  <!--
+   |
+   | <maven:concat/> test.
+   |
+   -->
+  <goal name="test-concat">
+    <maven:concat outputFile="${maven.build.dir}/maven.sh">
+      <maven:input file="${maven.src.dir}/test-data/sea-header"/>
+      <maven:input file="${maven.src.dir}/test-data/maven.tar.gz"/>
+    </maven:concat>
+  </goal>
+
+  <!--
+   |
+   | <maven:addPath/> test.
+   |
+   -->
+  <goal name="test-addPath">
+
+    <path id="testPath1">
+      <pathelement location="/path1"/>
+    </path>
+
+    <path id="testPath2">
+      <pathelement location="/path2"/>
+    </path>
+
+    <path id="testPath">
+    </path>
+
+    <maven:addPath id="testPath" refid="testPath1"/>
+    <maven:addPath id="testPath" refid="testPath2"/>
+
+  </goal>
+
+  <!--
+   |
+   | Local goal overriding test.
+   |
+   -->
+  <goal name="touchstone-goal-A">
+    <echo>Overriding touchstone-goal-A</echo>
+  </goal>
+
+  <!--
+   |
+   | Plugin property override test.
+   |
+   -->
+  <goal name="test-plugin-property-override">
+    <echo>maven.touchstone.A = ${maven.touchstone.A}</echo>
+  </goal>
+
+  <goal name="pom-props">
+    <echo>propertyA = ${pom.getProperty('propertyA')}</echo>
+  </goal>
+
+  <goal name="dep-props">
+    <echo>propertyA = ${pom.getDependency('a').getProperty('propertyA')}</echo>
+  </goal>
+
+  <!--
+   |
+   -->
+
+  <!--
+   | Test to see if Jelly interaction taglib is loaded into the
+   | classpath when the maven.xml file is executed.
+   |-->
+  <goal name="interaction-test">
+    <echo>
+      Before the interaction tag
+    </echo>
+    <i:ask question="Does this work?" answer="answer" default="no"/>
+    <echo>
+      After the interaction tag (answer was ${answer})
+    </echo>
+  </goal>
+
+  <goal 
+    xmlns:testmavenjellyscope="test-mavenjellyscope"
+    name="test-mavenjellyscope"
+    description="throws a ClassCastException when loading the jelly script from a nested maven session.">
+     <!-- 
+      |
+      | The purpose of this defined tag is to get jelly to create a new scope 
+      | from the one it has. 
+      | If the factory methods aren't defined, then the scope is not the 
+      | correct type, and BaseTagSupport.getMavenContext throws a
+      | ClassCastException.
+      |
+      -->
+     <define:taglib uri="test-mavenjellyscope">
+       <define:tag name="runmaven">
+         <maven:maven descriptor="${basedir}/project.xml" goals="test-mavenjellyscope-helper" />			
+       </define:tag>	
+     </define:taglib>		
+     <testmavenjellyscope:runmaven/>
+  </goal>
+
+  <goal name="test-mavenjellyscope-helper">
+    <j:set var="test-mavenjellyscope" scope="parent" value="success"/>
+  </goal>
+  
+  <!--
+   | property wrongly treated as == null
+   | This test will fail until jexl(?) is fixed.
+   | @todo fix
+   |-->
+  <goal name="test-dot-property">
+    <property name="dot.property" value="true" />
+    <j:if test="${dot.property == null}" >
+      <fail>
+        A defined property with dots in the name is wrongly treated as null
+        even though the value is ${dot.property} 
+      </fail>
+    </j:if>
+  </goal>
+
+  <!--
+   | Test the makeAbsolutePath tag
+   |-->
+  <goal name="test-make-absolute-path">
+    <maven:makeAbsolutePath var="testVar" basedir="${basedir}" path="project.xml" />
+    <u:file var="testVar2" name="${basedir}/project.xml" />
+    <j:if test="${testVar != testVar2.canonicalPath}">
+      <ant:fail>
+        makeAbsolutePath:
+        testVar = '${testVar}'; should be: '${testVar2}'
+      </ant:fail>
+    </j:if>
+
+    <maven:makeAbsolutePath var="testVar" basedir="${basedir}" path="src/main" />
+    <u:file var="testVar2" name="${basedir}/src/main"/>
+    <j:if test="${testVar != testVar2.canonicalPath}">
+      <ant:fail>
+        makeAbsolutePath:
+        testVar = '${testVar}'; should be: '${testVar2}'
+      </ant:fail>
+    </j:if>
+  </goal>
+
+  <!--
+   | Test the makeRelativePath tag
+   |-->
+  <goal name="test-make-relative-path">
+    <maven:makeRelativePath var="testVar" basedir="${basedir}" path="${basedir}/project.xml" />
+    <j:if test="${testVar != 'project.xml'}">
+      <ant:fail>
+        makeRelativePath:
+        testVar = '${testVar}'; should be: 'project.xml'
+      </ant:fail>
+    </j:if>
+
+    <maven:makeRelativePath var="testVar" basedir="${basedir}" path="${basedir}/src/main" />
+    <j:set var="testVar2" value="src${file.separator}main"/>
+    <j:if test="${testVar != testVar2}">
+      <ant:fail>
+        makeRelativePath:
+        testVar = '${testVar}'; should be: '${testVar2}'
+      </ant:fail>
+    </j:if>
+
+    <maven:makeRelativePath var="testVar" basedir="${basedir}" path="${basedir}/src\main/1\2" separator="/" />
+    <j:set var="testVar2" value="src/main/1/2"/>
+    <j:if test="${testVar != testVar2}">
+      <ant:fail>
+        makeRelativePath:
+        testVar = '${testVar}'; should be: '${testVar2}'
+      </ant:fail>
+    </j:if>
+  </goal>
+
+  <!--
+   |
+   | This is a simple pregoal that allows us to see what the dependency
+   | classpath in plain site as a visual check.
+   |
+   -->
+
+  <preGoal name="java:compile">
+
+    <!-- Display maven.dependency.classpath in a nice format. -->
+
+    <property
+      name="mavenDependencyClasspath"
+      refid="maven.dependency.classpath"
+    />
+
+    <j:choose>
+      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
+        <u:tokenize var="classpath" delim=";">${mavenDependencyClasspath}</u:tokenize>
+      </j:when>
+      <j:otherwise>
+        <u:tokenize var="classpath" delim=":">${mavenDependencyClasspath}</u:tokenize>
+      </j:otherwise>
+    </j:choose>
+
+    <echo>
+    maven.dependency.classpath:
+    <j:forEach var="entry" items="${classpath}">${entry}
+    </j:forEach>
+    </echo>
+
+  </preGoal>
+
+  <goal name="test-preGoal-counter">
+    <j:set var="counterPre" scope="parent" value="0" />
+    <attainGoal name="counter-pre"/>
+    <j:if test="${counterPre != 1}">
+      <fail>counterPre should be '1', but is '${counterPre}'</fail>
+    </j:if>
+  </goal>
+
+  <preGoal name="counter-pre">
+    <echo>Counter PreGoal</echo>
+    <j:set var="counterPre" scope="parent" value="${counterPre + 1}" />
+  </preGoal>
+
+  <goal name="counter-pre">
+    <echo>counter-pre</echo>
+  </goal>
+
+  <goal name="test-postGoal-counter">
+    <j:set var="counterPost" scope="parent" value="0" />
+    <attainGoal name="counter-post"/>
+    <j:if test="${counterPost != 1}">
+      <fail>counterPost should be '1', but is '${counterPost}'</fail>
+    </j:if>
+  </goal>
+
+  <postGoal name="counter-post">
+    <echo>Counter PostGoal</echo>
+    <j:set var="counterPost" scope="parent" value="${counterPost + 1}" />
+  </postGoal>
+
+  <goal name="counter-post">
+    <echo>counter-post</echo>
+  </goal>
+
+  <goal name="test-context-switch">
+    <attainGoal name="touchstone-partner:test-context-switch" />
+  </goal>
+
+  <goal name="test-goal-trimming-reactor">
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/failProperty/success-1/project.xml"
+      goals="touchstone-goal-A, build:start"
+      banner="Testing"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="test-plugin-attainment-reactor">
+    <ant:echo>Testing goal attainment in a plugin via the reactor</ant:echo>
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/failProperty/success-1/project.xml"
+      goals="touchstone-goal-A"
+      banner="Testing"
+      ignoreFailures="false"
+    />
+    <ant:echo>Testing goal attainment in a plugin via the maven tag</ant:echo>
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/failProperty/success-1/project.xml"
+      goals="touchstone-goal-A"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="test-plugin-attainment-reactor-two-goals">
+    <ant:echo>Testing two goal attainments in a plugin via the reactor</ant:echo>
+    <maven:reactor
+      basedir="${basedir}"
+      includes="src/reactor-build/failProperty/success-1/project.xml"
+      goals="touchstone-goal-B,touchstone-goal-A"
+      banner="Testing"
+      ignoreFailures="false"
+    />
+    <ant:echo>Testing two goal attainments in a plugin via the maven tag</ant:echo>
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/failProperty/success-1/project.xml"
+      goals="touchstone-goal-B,touchstone-goal-A"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="test-reactor-resources">
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/resources/project.xml"
+      goals="run"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="test-reactor-run-twice">
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/run_twice/project.xml"
+      goals="run_twice"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="test-inheritance">
+    <ant:echo>Testing 0 level</ant:echo>
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/inheritence/project.xml"
+      goals="runTest"
+      ignoreFailures="false"
+    />
+    <ant:echo>Testing 1 level</ant:echo>
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/inheritence/subproject/project.xml"
+      goals="runTest"
+      ignoreFailures="false"
+    />
+    <ant:echo>Testing 2 levels</ant:echo>
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/inheritence/subproject/subproject2/project.xml"
+      goals="runTest"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="test-defaults">
+    <j:remove var="ranDefault" />
+
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/default/subproject/project.xml"
+      goals=""
+      ignoreFailures="false"
+    />
+    <j:if test="${ranDefault != 'subproject-default'}">
+      <ant:fail>Default goal in subproject is not overriding parent project</ant:fail>
+    </j:if>
+
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/default/project.xml"
+      goals=""
+      ignoreFailures="false"
+    />
+    <j:if test="${ranDefault != 'base-default'}">
+      <ant:fail>Default goal in base project is not honouring property</ant:fail>
+    </j:if>
+  </goal>
+
+  <goal name="test-non-jar-dependency-path">
+    <u:replace oldChar="\" newChar="/" var="jarPath" value="${pom.getDependencyPath('touchstone:touchstone')}" />
+    <u:replace oldChar="\" newChar="/" var="jarRepoPath" value="${maven.repo.local}/touchstone/jars/touchstone-SNAPSHOT.jar" />
+    <j:if test="${jarPath != jarRepoPath}">
+      <ant:fail>path = ${jarPath}, expected ${jarRepoPath}</ant:fail>
+    </j:if>
+  
+    <u:replace oldChar="\" newChar="/" var="warPath" value="${pom.getDependencyPath('touchstone:test:war')}" />
+    <u:replace oldChar="\" newChar="/" var="warRepoPath" value="${maven.repo.local}/touchstone/wars/test-SNAPSHOT.war" />
+    <j:if test="${warPath != warRepoPath}">
+      <ant:fail>path = ${warPath}, expected ${warRepoPath}</ant:fail>
+    </j:if>
+  </goal>
+
+  <goal name="test-plugin-getset">
+    <attainGoal name="touchstone-goal-B"/>
+    <echo>test maven:get</echo>
+    <maven:get var="checkValue" plugin="maven-touchstone-plugin" property="touchstone_goal_B_from_plugin"/>
+    <j:if test="${checkValue != 'true'}">
+      <fail message=""> maven:get failed </fail>
+    </j:if>
+    <echo>test maven:pluginVar (deprecated)</echo>
+    <maven:pluginVar var="checkValue" plugin="maven-touchstone-plugin" property="touchstone_goal_B_from_plugin"/>
+    <j:if test="${checkValue != 'true'}">
+      <fail message=""> maven:pluginVar failed </fail>
+    </j:if>
+    <echo>test maven:set</echo>
+    <maven:set plugin="maven-touchstone-plugin" property="touchstone_goal_B_from_plugin" value="blah"/>
+    <maven:get var="checkValue" plugin="maven-touchstone-plugin" property="touchstone_goal_B_from_plugin"/>
+    <j:if test="${checkValue != 'blah'}">
+      <fail message=""> maven:set failed </fail>
+    </j:if>
+  </goal>
+
+  <goal name="test-plugin-loading" prereqs="xdoc:init">
+    <!-- test prereq -->
+    <maven:get plugin="maven-xdoc-plugin" property="maven.xdoc.theme" var="d" />
+    <j:if test="${d != 'stylus'}">
+      <fail>maven.xdoc.theme in xdoc plugin is not 'stylus', is '${d}'</fail>
+    </j:if>
+    <!-- test handle -->
+    <multiproject:dependency-handle />
+    <maven:get plugin="maven-multiproject-plugin" property="maven.multiproject.includes" var="d" />
+    <j:if test="${d != '*/project.xml'}">
+      <fail>maven.multiproject.includes in multiproject plugin is not '*/project.xml', is '${d}'</fail>
+    </j:if>
+    <!-- test get -->
+    <maven:get plugin="maven-multichanges-plugin" property="maven.multichanges.report" var="d" />
+    <j:if test="${d != 'multichanges-report'}">
+      <fail>maven.dist.bin.artifact in dist plugin is not 'multichanges-report', is '${d}'</fail>
+    </j:if>
+
+    <!-- test set -->
+    <maven:set plugin="maven-javadoc-plugin" property="maven.javadoc.debug" value="foo" />
+    <maven:get plugin="maven-javadoc-plugin" property="maven.javadoc.debug" var="d" />
+    <j:if test="${d != 'foo'}">
+      <fail>maven.javadoc.debug in javadoc plugin is not 'foo', is '${d}'</fail>
+    </j:if>
+  </goal>
+  
+  <goal name="test-overlappedCalls">
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/overlappedCalls/project.xml"
+      goals="testOverlappedCalls"
+      ignoreFailures="false"
+    />
+  </goal>
+  
+  <goal name="test-entities-in-project">
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/entities-in-project.xml/project.xml"
+      goals="jar"
+      ignoreFailures="false"
+    />
+  </goal>
+  
+  <goal name="test-entities-in-maven">
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/entities-in-maven.xml/project.xml"
+      goals="testGoals"
+      ignoreFailures="false"
+    />
+  </goal>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,57 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# ------------------------------------------------------------------------
+# M A V E N  J A R  O V E R R I D E
+# ------------------------------------------------------------------------
+maven.jar.override = on
+
+# ------------------------------------------------------------------------
+# Jars set explicity by path.
+# ------------------------------------------------------------------------
+maven.jar.a = ${basedir}/lib/a.jar
+maven.jar.b = ${basedir}/lib/b.jar
+maven.jar.c = ${basedir}/lib/c-1.0-alpha-1-SNAPSHOT.jar
+
+# ------------------------------------------------------------------------
+# Jars set explicity by version.
+# ------------------------------------------------------------------------
+maven.jar.classworlds = 1.0-beta-1
+
+# ------------------------------------------------------------------------
+# Set the path to the test APT docs
+# ------------------------------------------------------------------------
+
+maven.aptdoc.src.dir = ${basedir}/src/aptdocs
+
+# ------------------------------------------------------------------------
+# 
+# ------------------------------------------------------------------------
+
+anonymousUser = testuser
+excludeFoo = true
+
+maven.touchstone.A = override.maven.touchstone.A
+
+maven.jar.maven = ${maven.home}/lib/maven.jar
+
+maven.username=maven
+
+maven.xdoc.theme=stylus
+
+# TODO: remove cvs repository, just there for SNAPSHOTs
+maven.repo.remote = http://www.ibiblio.org/maven, http://cvs.apache.org/repository/
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<project>
+  <pomVersion>3</pomVersion>
+  <id>touchstone</id>
+  <name>Touchstone</name>
+  <currentVersion>1.0</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://jakarta.apache.org/</url>
+    <logo>/images/jakarta-logo-blue.gif</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven.touchstone</package>
+  <logo>/images/maven.jpg</logo>
+  <gumpRepositoryId>jakarta</gumpRepositoryId>
+  <description>Touchstone build for Maven.</description>
+  <shortDescription>${pom.description}</shortDescription>
+  <url>http://jakarta.apache.org/turbine/${pom.artifactId}/</url>
+  <issueTrackingUrl>http://jira.werken.com/BrowseProject.jspa?id=10030</issueTrackingUrl>
+  <siteAddress>jakarta.apache.org</siteAddress>
+  <siteDirectory>/www/jakarta.apache.org/turbine/maven/</siteDirectory>
+  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-turbine-maven/</distributionDirectory>
+  <repository>
+    <connection>scm:cvs:pserver:${anonymousUser}@cvs.apache.org:/home/cvspublic:jakarta-turbine-maven</connection>
+    <url>http://cvs.apache.org/viewcvs/jakarta-turbine-maven/</url>
+  </repository>
+  <versions/>
+  <branches/>
+  <mailingLists/>
+  <developers/>
+  <contributors/>
+  <dependencies>
+    <dependency>
+      <id>ant+optional</id>
+      <version>1.5.1</version>
+    </dependency>
+    <dependency>
+      <id>maven</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>3.0.1</version>
+    </dependency>
+    <!-- 
+      |
+      | These dependencies are retrieved using the maven JAR override
+      | feature specifying a path to the override JAR.
+      |
+    -->
+
+    <dependency>
+      <id>a</id>
+      <version>1.0</version>
+      <properties>
+        <propertyA>depPropertyA</propertyA>
+        <propertyB>depPropertyB</propertyB>
+        <propertyC>depPropertyC</propertyC>
+        <propertyD>depPropertyD</propertyD>
+        <propertyE>depPropertyE</propertyE>
+        <propertyF>depPropertyF</propertyF>
+      </properties>
+    </dependency>
+    <dependency>
+      <id>b</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>c</id>
+      <version>1.0-alpha-1-SNAPSHOT</version>
+    </dependency>
+    <!-- 
+      |
+      | These dependencies are retrieved using the maven JAR override
+      | feature specifying a specific version of the JAR.
+      |
+    -->
+
+    <dependency>
+      <id>classworlds</id>
+      <!-- 
+        |
+        | In our project.properties file we are asking for version 1.0-beta-1
+        | so any value of the version stated here should be ignored.
+        |
+      -->
+
+      <version>SHOULD-NOT-BE-CONSULTED</version>
+    </dependency>
+    <!-- Snapshot -->
+
+    <dependency>
+      <id>touchstone</id>
+      <version>SNAPSHOT</version>
+    </dependency>
+    <!-- 
+      |
+      | Non JAR dependencies.
+      |
+    -->
+    <!-- WAR -->
+
+    <dependency>
+      <id>touchstone:test</id>
+      <version>SNAPSHOT</version>
+      <type>war</type>
+    </dependency>
+    <!-- POM -->
+
+    <dependency>
+      <id>plexus</id>
+      <version>0.2</version>
+      <type>pom</type>
+    </dependency>
+
+    <!-- Required Jelly Tag Libraries -->
+
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-interaction</artifactId>
+      <version>1.0</version>
+    </dependency>
+
+    <!-- Required plugins -->
+
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven-touchstone-plugin</artifactId>
+      <type>plugin</type>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven-touchstone-partner-plugin</artifactId>
+      <type>plugin</type>
+      <version>1.1</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <defaultGoal>touchstone-tests</defaultGoal>
+    <nagEmailAddress>turbine-maven-dev at jakarta.apache.org</nagEmailAddress>
+    <sourceDirectory>src/main</sourceDirectory>
+    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+      <!-- 
+       |
+       | We're excluding the test right now as we're collectively stumped ...
+       |
+       -->
+
+      <excludes>
+        <exclude>**/TouchstoneTest.java</exclude>
+      </excludes>
+      <!-- Test resources -->
+
+      <resources>
+        <resource>
+          <directory>src/test-data</directory>
+          <targetPath>org/apache/maven/touchstone</targetPath>
+          <includes>
+            <include>*.xml</include>
+          </includes>
+        </resource>
+        <resource>
+          <directory>src/test-data</directory>
+          <includes>
+            <include>whacky.properties</include>
+          </includes>
+        </resource>
+      </resources>
+    </unitTest>
+    <resources>
+      <resource>
+        <directory>${basedir}/src/conf</directory>
+        <includes>
+          <include>*.properties</include>
+        </includes>
+        <excludes>
+          <exclude>runtime.properties</exclude>
+        </excludes>
+      </resource>
+      <resource>
+        <directory>src/conf</directory>
+        <targetPath>org/apache/maven/touchstone</targetPath>
+        <includes>
+          <include>runtime.properties</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/resources</directory>
+      </resource>
+      <!-- Maven will ignore paths that don't exist -->
+
+      <resource>
+        <directory>${basedir}/path/that/is/non-existent</directory>
+      </resource>
+    </resources>
+    <!--
+     |
+     | Source Modifications. In the first case we are excluding **/Foo.java
+     | if the specified className DOES NOT exist. So org.foo.bar.Lulu
+     | doesn't exist anywhere in this build so **/Foo.java files are
+     | removed from the compilcation phase. This is how we exclude the
+     | JDK 1.4 classes in the commons-logging maven build.
+     |
+     -->
+
+    <sourceModifications>
+      <sourceModification>
+        <className>org.foo.bar.Lulu</className>
+        <excludes>
+          <exclude>**/Foo.java</exclude>
+        </excludes>
+      </sourceModification>
+    </sourceModifications>
+  </build>
+  <!--
+   |
+   | Properties
+   |
+   -->
+
+  <properties>
+    <propertyA>pomPropertyA</propertyA>
+    <propertyB>pomPropertyB</propertyB>
+    <propertyC>pomPropertyC</propertyC>
+    <propertyD>pomPropertyD</propertyD>
+    <propertyE>pomPropertyE</propertyE>
+    <propertyF>pomPropertyF</propertyF>
+  </properties>
+  
+  <reports>
+  	<report>maven-jxr-plugin</report>	
+  </reports>
+  
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/aptdocs/apt-test.apt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/aptdocs/apt-test.apt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/aptdocs/apt-test.apt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+                           ---------------------- 
+                               APT Sample Doc
+                           ----------------------
+                                Pete Kazmier
+                           ----------------------
+                              18 January 2003
+
+APT Touchstone Document
+
+ This is a sample <<A>>lmost <<P>>lain <<T>>ext document that is used in
+ the Maven touchstone build.  The touchstone project is a complete
+ sample project which is part of Maven's test suite.  It is built by
+ Maven as part of the Maven bootstrap process to provide functional
+ testing of Maven as a whole.
+
+ As for the rest of this document, its just filler so that the Maven
+ touchstone build will have something to actually generate.  There is
+ nothing earth shattering in here other than complete dribble.  Please
+ ignore.
+
+*----------------*----------------------------------------------*
+| Date           | Comment                                      |
+*================*==============================================*
+| 18 Jan 2003    | Test of the emergency broadcast system.      |
+*----------------*----------------------------------------------*
+| 20 Jan 2003    | Attack of the clones.                        |
+*----------------*----------------------------------------------*
+| 23 Jan 2003    | Fall of mankind.                             |
+*----------------*----------------------------------------------*
+| 25 Jan 2003    | Yoda saves us all.                           |
+*----------------*----------------------------------------------*
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/log4j.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/log4j.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/log4j.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,52 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# ------------------------------------------------------------------------
+# L O G 4 J  C O N F I G U R A T I O N
+# ------------------------------------------------------------------------
+# This is the log4j configuration file that is distributed with Maven.
+# ------------------------------------------------------------------------
+
+# ------------------------------------------------------------------------
+# R O O T  C A T E G O R Y
+# ------------------------------------------------------------------------
+log4j.rootCategory = DEBUG, default
+log4j.appender.default = org.apache.log4j.FileAppender
+log4j.appender.default.file = maven.log
+log4j.appender.default.layout = org.apache.log4j.PatternLayout
+log4j.appender.default.layout.conversionPattern = %d %-5p %c - %m%n
+log4j.appender.default.append = false
+
+# ------------------------------------------------------------------------
+# J E L L Y  T A G S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons.jelly.tags.log=INFO,console
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%m%n
+
+# ------------------------------------------------------------------------
+# M A V E N
+# ------------------------------------------------------------------------
+log4j.category.org.apache.maven.MavenSession=INFO,maven
+log4j.appender.maven=org.apache.log4j.ConsoleAppender
+log4j.appender.maven.layout=org.apache.log4j.PatternLayout
+log4j.appender.maven.layout.ConversionPattern=%m%n
+
+# ------------------------------------------------------------------------
+# C O M M O N S
+# ------------------------------------------------------------------------
+log4j.category.org.apache.commons=WARN

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/runtime.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/runtime.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/conf/runtime.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# These are some runtime properties for the touchstone build.

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,68 @@
+package org.apache.maven.touchstone;
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache Maven" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache at apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache Maven", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ */
+
+/**
+ * This test should be excluded from the build. We'll put an intention
+ * error in this file so the build will fail if it is present.
+ */
+public class Foo
+{
+    x;
+    y;
+    z;
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,70 @@
+package org.apache.maven.touchstone;
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache Maven" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache at apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache Maven", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ */
+
+import a.A;
+import b.B;
+
+/**
+ * Main class in the Maven touchstone build.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: Touchstone.java 169211 2005-05-09 01:23:02Z brett $
+ */
+public class Touchstone
+{
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+This example shows standard reactor'ed cleaning idiom.

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project default="clean" xmlns:maven="jelly:maven">
+
+    <goal name="clean">
+        <maven:reactor
+          basedir="${basedir}"
+          includes="*/project.xml"
+          goals="clean"
+          banner="Cleaning"
+          ignoreFailures="false"
+          />
+    </goal>
+
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>root</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>subproject</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project default="${base.default.goal}"
+  xmlns:j="jelly:core">
+
+    <goal name="base-default">
+      <echo>Setting ranDefault into ${context.parent}</echo>
+      <j:set var="ranDefault" value="base-default" scope="parent" />
+    </goal>
+
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+base.default.goal=base-default

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>root</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project default="subproject-default"
+  xmlns:j="jelly:core">
+
+    <goal name="subproject-default">
+      <echo>Setting ranDefault into ${context.parent}</echo>
+      <j:set var="ranDefault" value="subproject-default" scope="parent" />
+    </goal>
+
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>../project.xml</extend>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>subproject</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+MAVEN-1756 : A project which uses xml entities in the maven.xml

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalA.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalA.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalA.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,3 @@
+<goal name="goalA">
+  <echo>goalA</echo>
+</goal>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalB.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalB.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/goalB.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,3 @@
+<goal name="goalB">
+  <echo>goalB</echo>
+</goal>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+ <!DOCTYPE project [
+  <!ENTITY goalA SYSTEM "goalA.xml">
+  <!ENTITY goalB SYSTEM "goalB.xml">
+]>
+<project>
+  &goalA;
+  &goalB;
+  <goal name="testGoals" prereqs="goalA,goalB"/>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-maven.xml/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-entities-in-maven</artifactId>
+  <name>entities in maven.xml</name>
+  <shortDescription>Project example with entities in maven.xml</shortDescription>
+  <description>Project example with entities in maven.xml</description>
+  <build>
+    <defaultGoal>testGoals</defaultGoal>
+  </build>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+MAVEN-1755 : A project which uses xml entities in the POM.

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/build.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/build.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/build.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,48 @@
+  <build>
+    <defaultGoal>jar:jar</defaultGoal>
+    <nagEmailAddress>notifications at maven.apache.org</nagEmailAddress>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+      <!-- TODO - fix or remove -->
+      <excludes>
+        <exclude>**/JAXPTest.java</exclude>
+      </excludes>
+    </unitTest>
+    <resources>
+      <resource>
+        <directory>${basedir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/conf</directory>
+        <includes>
+          <include>*.xsd</include>
+          <include>*.dtd</include>
+          <include>*.mod</include>
+          <include>driver.jelly</include>
+          <include>LICENCE.txt</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/conf</directory>
+        <includes>
+          <include>*.properties</include>
+        </includes>
+        <filtering>true</filtering>
+      </resource>
+      <resource>
+        <directory>src/messages</directory>
+        <targetPath>org/apache/maven/messages</targetPath>
+        <includes>
+          <include>messages*.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/contributors.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/contributors.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/contributors.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,65 @@
+  <contributors>
+    <contributor>
+      <name>Alexei Barantsev</name>
+      <email>barancev at ispras.ru</email>
+    </contributor>
+    <contributor>
+      <name>Martin van dem Bemt</name>
+      <email>mvdb at mvdb.com</email>
+    </contributor>
+    <contributor>
+      <name>Nathan Coast</name>
+      <email>nathan.coast at blueyonder.co.uk</email>
+    </contributor>
+    <contributor>
+      <name>Martin Cooper</name>
+      <email>martin.cooper at tumbleweed.com</email>
+    </contributor>
+    <contributor>
+      <name>Aslak Hellesøy</name>
+      <email>aslak at thoughtworks.net</email>
+    </contributor>
+    <contributor>
+      <name>John Casey</name>
+      <email>jdcasey at commonjava.org</email>
+    </contributor>
+    <contributor>
+      <name>James CE Johnson</name>
+      <email>jcej at tragus.org</email>
+    </contributor>
+    <contributor>
+      <name>Mark Langley</name>
+      <email>mlangley at casebank.com</email>
+    </contributor>
+    <contributor>
+      <name>Brian Leonard</name>
+      <email>brian at brainslug.com</email>
+    </contributor>
+    <contributor>
+      <name>Michael McCallum</name>
+      <email>gholam at apache.org</email>
+    </contributor>
+    <contributor>
+      <name>Markus M. May</name>
+      <email>mmay at javafreedom.org</email>
+    </contributor>
+    <contributor>
+      <name>Tom Palmer</name>
+      <email>tomp at uk.uu.net</email>
+    </contributor>
+    <contributor>
+      <name>Martin Skopp</name>
+      <email>skopp at riege.de</email>
+      <organization>Riege Software International</organization>
+      <timezone>+1</timezone>
+    </contributor>
+    <contributor>
+      <name>Kuisong Tong</name>
+      <email>Kuisong.Tong at vtradex.com</email>
+    </contributor>
+    <contributor>
+      <name>Andy Jefferson</name>
+      <email>andy at ajsoft.net</email>
+      <organization>AJSoft Limited</organization>
+    </contributor>
+  </contributors>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/dependencies.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/dependencies.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/dependencies.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,183 @@
+  <!-- Need to mark these as compile-time/run-time -->
+  <dependencies>
+    <dependency>
+      <groupId>dom4j</groupId>
+      <artifactId>dom4j</artifactId>
+      <version>1.4</version>
+      <url>http://www.dom4j.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-junit</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-launcher</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-trax</artifactId>
+      <version>1.6.5</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/jelly/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-ant</artifactId>
+      <version>1.1</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/ant/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-define</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/define/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-util</artifactId>
+      <version>1.1.1</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/util/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-xml</artifactId>
+      <version>1.1</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/xml/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jexl</groupId>
+      <artifactId>commons-jexl</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/jexl/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.0.4</version>
+      <url>http://jakarta.apache.org/commons/logging/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+      <version>3.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <version>1.2</version>
+      <url>http://jakarta.apache.org/commons/codec/</url>
+      <properties>
+        <comment>This library is needed by httpclient.</comment>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-cli</groupId>
+      <artifactId>commons-cli</artifactId>
+      <version>1.0-beta-2</version>
+      <url>http://jakarta.apache.org/commons/cli/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/io/</url>
+    </dependency>
+    <dependency>
+      <groupId>forehead</groupId>
+      <artifactId>forehead</artifactId>
+      <version>1.0-beta-5</version>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.12</version>
+      <url>http://logging.apache.org/log4j/docs/</url>
+    </dependency>
+    <dependency>
+      <groupId>xerces</groupId>
+      <artifactId>xmlParserAPIs</artifactId>
+      <version>2.6.2</version>
+      <url>http://xerces.apache.org/xerces2-j/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>xerces</groupId>
+      <artifactId>xercesImpl</artifactId>
+      <version>2.6.2</version>
+      <url>http://xerces.apache.org/xerces2-j/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>1.0.3</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>3.0.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+      <version>1.0-alpha-3</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http</artifactId>
+      <version>1.0-alpha-3</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-file</artifactId>
+      <version>1.0-alpha-4</version>
+    </dependency>
+    <!-- Runtime dependencies -->
+    <dependency>
+      <groupId>commons-beanutils</groupId>
+      <artifactId>commons-beanutils</artifactId>
+      <version>1.6.1</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+      <version>3.0</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.0</version>
+      <properties>
+        <scope>runtime</scope>
+      </properties>
+    </dependency>
+  </dependencies>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/developers.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/developers.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/developers.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,250 @@
+  <developers>
+    <developer>
+      <name>Juancarlo Anez</name>
+      <id>juanco</id>
+      <email>juanco at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Stephane Bailliez</name>
+      <id>sbailliez</id>
+      <email>sbailliez at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Jeff Brekke</name>
+      <id>brekke</id>
+      <email>brekke at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Tom Copeland</name>
+      <id>tcopeland</id>
+      <email>tcopeland at apache.org</email>
+      <organization>InfoEther</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Eric Dobbs</name>
+      <id>dobbs</id>
+      <email>eric at dobbse.net</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>dIon Gillard</name>
+      <id>dion</id>
+      <email>dion at multitask.com.au</email>
+      <organization>Multitask Consulting</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+10</timezone>
+    </developer>
+    <developer>
+      <name>Arnaud Heritier</name>
+      <id>aheritier</id>
+      <email>aheritier at apache.org</email>
+      <organization>Octo Technology</organization>
+      <roles>
+        <role>PMC Member</role>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Pete Kazmier</name>
+      <id>kaz</id>
+      <email>pete-apache-dev at kazmier.com</email>
+      <organization/>
+      <roles>
+        <role>Documentation</role>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Peter Lynch</name>
+      <id>plynch</id>
+      <email>plynch at apache.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Michal Maczka</name>
+      <id>michal</id>
+      <email>michal.maczka at dimatics.com</email>
+      <organization>Dimatics</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Glenn McAllister</name>
+      <id>glennm</id>
+      <email>glenn at somanetworks.com</email>
+      <organization>SOMA Networks, Inc.</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Bob McWhirter</name>
+      <id>werken</id>
+      <email>bob at werken.com</email>
+      <organization>The Werken Company</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Geir Magnusson Jr.</name>
+      <id>geirm</id>
+      <email>geirm at optonline.net</email>
+      <organization>Independent (DVSL Maven)</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Vincent Massol</name>
+      <id>vmassol</id>
+      <email>vmassol at pivolis.com</email>
+      <organization>Pivolis</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Stéphane Mor</name>
+      <id>smor</id>
+      <email>stephanemor at yahoo.fr</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Kasper Nielsen</name>
+      <id>knielsen</id>
+      <email>apache at kav.dk</email>
+      <organization/>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Brett Porter</name>
+      <id>brett</id>
+      <email>brett at apache.org</email>
+      <organization>f2 network</organization>
+      <roles>
+        <role>PMC Member</role>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+10</timezone>
+    </developer>
+    <developer>
+      <name>Daniel Rall</name>
+      <id>dlr</id>
+      <email>dlr at finemaltcoding.com</email>
+      <organization>CollabNet, Inc.</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Kurt Schrader</name>
+      <id>kschrader</id>
+      <email>kschrader at karmalab.org</email>
+      <organization>University of Michigan</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <url>http://karmalab.org/~kschrader/</url>
+    </developer>
+    <developer>
+      <name>James Strachan</name>
+      <id>jstrachan</id>
+      <email>james_strachan at yahoo.co.uk</email>
+      <organization>Spiritsoft</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>James Taylor</name>
+      <id>jtaylor</id>
+      <email>james at jamestaylor.org</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Emmanuel Venisse</name>
+      <id>evenisse</id>
+      <email>emmanuel at venisse.net</email>
+      <organization/>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+    <developer>
+      <name>Jason van Zyl</name>
+      <id>jvanzyl</id>
+      <email>jason at zenplex.com</email>
+      <organization>Zenplex</organization>
+      <roles>
+        <role>Architect</role>
+        <role>Release Manager</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Ben Walding</name>
+      <id>bwalding</id>
+      <email>ben at walding.com</email>
+      <organization>Walding Consulting Services</organization>
+      <roles>
+        <role>Java Developer</role>
+        <role>PMC Member</role>
+      </roles>
+      <!--<url>http://www.walding.com</url>-->
+      <timezone>+10</timezone>
+    </developer>
+    <developer>
+      <name>Lukas Theussl</name>
+      <id>ltheussl</id>
+      <email>ltheussl at apache.org</email>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
+    <developer>
+      <name>Stephane Nicoll</name>
+      <id>snicoll</id>
+      <email>snicoll at apache.org</email>
+      <organization/>
+      <roles>
+        <role>PMC Member</role>
+      </roles>
+      <timezone>+1</timezone>
+    </developer>
+  </developers>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/licenses.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/licenses.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/licenses.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,7 @@
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://cvs.apache.org/viewcvs.cgi/*checkout*/maven/LICENSE.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/mailingLists.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/mailingLists.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/mailingLists.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,45 @@
+  <mailingLists>
+    <mailingList>
+      <name>Maven User List</name>
+      <subscribe>users-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>users-unsubscribe at maven.apache.org</unsubscribe>
+      <post>users at maven.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/maven-users/</archive>
+      <otherArchives>
+        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>
+        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>Maven Developer List</name>
+      <subscribe>dev-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe at maven.apache.org</unsubscribe>
+      <post>dev at maven.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev/</archive>
+      <otherArchives>
+        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>
+        <otherArchive>http://www.nabble.com/Maven---Dev-f179.html</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>Maven Commits List</name>
+      <subscribe>commits-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>commits-unsubscribe at maven.apache.org</unsubscribe>
+      <post>commits at maven.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev/</archive>
+    </mailingList>
+    <mailingList>
+      <name>Maven Announce List</name>
+      <subscribe>announce-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>announce-unsubscribe at maven.apache.org</unsubscribe>
+      <post>announce at maven.apache.org</post>
+      <archive></archive>
+    </mailingList>
+    <mailingList>
+      <name>Apache Announce List</name>
+      <subscribe>announce-subscribe at apache.org</subscribe>
+      <unsubscribe>announce-unsubscribe at apache.org</unsubscribe>
+      <post>announce at apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>
+    </mailingList>
+  </mailingLists>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/organization.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/organization.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/organization.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,5 @@
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+    <logo>/images/apache-maven-project-2.png</logo>
+  </organization>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/reports.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/reports.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/common/reports.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+  <reports>
+    <!--
+     |
+     | These should all be completely self contained. You should be able
+     | to generate each of them individually without needing the final
+     | xdoc transformation.
+     |
+     | Each report plugin with it's POM and plugin.jelly logic should
+     | contain everything needed to produced the report.
+     |
+    -->
+    <report>maven-jdepend-plugin</report>
+    <report>maven-changelog-plugin</report>
+    <report>maven-file-activity-plugin</report>
+    <report>maven-developer-activity-plugin</report>
+    <report>maven-javadoc-plugin</report>
+    <report>maven-jdiff-plugin</report>
+    <report>maven-jellydoc-plugin</report>
+    <report>maven-jxr-plugin</report>
+    <report>maven-junit-report-plugin</report>
+    <report>maven-license-plugin</report>
+    <report>maven-linkcheck-plugin</report>
+    <report>maven-pdf-plugin</report>
+    <report>maven-tasklist-plugin</report>
+    <report>maven-jira-plugin</report>
+    <report>maven-pmd-plugin</report>
+    <report>maven-simian-plugin</report>
+    <report>maven-checkstyle-plugin</report>
+    <report>maven-faq-plugin</report>
+  </reports>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/entities-in-project.xml/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<!DOCTYPE project [
+  <!ENTITY build SYSTEM "common/build.xml">
+  <!ENTITY contributors SYSTEM "common/contributors.xml">
+  <!ENTITY dependencies SYSTEM "common/dependencies.xml">
+  <!ENTITY developers SYSTEM "common/developers.xml">
+  <!ENTITY licenses SYSTEM "common/licenses.xml">
+  <!ENTITY mailingLists SYSTEM "common/mailingLists.xml">
+  <!ENTITY organization SYSTEM "common/organization.xml">
+  <!ENTITY reports SYSTEM "common/reports.xml">
+]>
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <id>maven</id>
+  <groupId>maven</groupId>
+  <artifactId>maven</artifactId>
+  <name>Maven</name>
+  <currentVersion>1.1-beta-3-SNAPSHOT</currentVersion>
+&organization;
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven-logo-2.gif</logo>
+  <!-- Gump integration -->
+  <gumpRepositoryId>maven</gumpRepositoryId>
+  <description>Maven is a project management and project comprehension tool. Maven is based on the concept of a project object model: builds, documentation creation, site publication, and distribution publication are all controlled from the project object model. Maven also provides tools to create source metrics, change logs based directly on source repository, and source cross-references. You can build a Maven installation from this source tree by running ant -f build-bootstrap.xml</description>
+  <shortDescription>Java Project Management Tools</shortDescription>
+  <url>http://maven.apache.org/maven-1.x/</url>
+  <issueTrackingUrl>http://jira.codehaus.org/browse/MAVEN</issueTrackingUrl>
+  <siteAddress>people.apache.org</siteAddress>
+  <siteDirectory>/www/maven.apache.org/maven-1.x/</siteDirectory>
+  <distributionSite>people.apache.org</distributionSite>
+  <distributionDirectory>/www/www.apache.org/dist/java-repository/</distributionDirectory>
+  <repository>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/maven-1/core/trunk/</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/maven-1/core/trunk/</developerConnection>
+    <url>http://svn.apache.org/viewcvs/maven/maven-1/core/trunk/</url>
+  </repository>
+  <versions>
+    <version>
+      <id>b1</id>
+      <name>1.0-b1</name>
+      <tag>MAVEN_1_0_B1</tag>
+    </version>
+    <version>
+      <id>b2</id>
+      <name>1.0-b2</name>
+      <tag>MAVEN_1_0_B2</tag>
+    </version>
+    <version>
+      <id>b3</id>
+      <name>1.0-b3</name>
+      <tag>MAVEN_1_0_B3</tag>
+    </version>
+    <version>
+      <id>b4</id>
+      <name>1.0-b4</name>
+      <tag>MAVEN_1_0_B4</tag>
+    </version>
+    <version>
+      <id>b5</id>
+      <name>1.0-beta-5</name>
+      <tag>MAVEN_1_0_B5</tag>
+    </version>
+    <version>
+      <id>b6</id>
+      <name>1.0-beta-6</name>
+      <tag>MAVEN_1_0_B6</tag>
+    </version>
+    <version>
+      <id>b7</id>
+      <name>1.0-beta-7</name>
+      <tag>MAVEN_1_0_B7</tag>
+    </version>
+    <version>
+      <id>b8</id>
+      <name>1.0-beta-8</name>
+      <tag>MAVEN_1_0_B8</tag>
+    </version>
+    <version>
+      <id>b9</id>
+      <name>1.0-beta-9</name>
+      <tag>MAVEN_1_0_B9</tag>
+    </version>
+    <version>
+      <id>b10</id>
+      <name>1.0-beta-10</name>
+      <tag>MAVEN_1_0_B10</tag>
+    </version>
+    <version>
+      <id>rc1</id>
+      <name>1.0-rc1</name>
+      <tag>MAVEN_1_0_RC1</tag>
+    </version>
+    <version>
+      <id>1.0-rc2</id>
+      <name>1.0-rc2</name>
+      <tag>MAVEN_1_0_RC2</tag>
+    </version>
+    <version>
+      <id>1.0-rc3</id>
+      <name>1.0-rc3</name>
+      <tag>MAVEN_1_0_RC3</tag>
+    </version>
+    <version>
+      <id>1.0-rc4</id>
+      <name>1.0-rc4</name>
+      <tag>MAVEN_1_0_RC4</tag>
+    </version>
+    <version>
+      <id>1.0</id>
+      <name>1.0</name>
+      <tag>MAVEN_1_0</tag>
+    </version>
+    <version>
+      <id>1.0.1</id>
+      <name>1.0.1</name>
+      <tag>MAVEN_1_0_1</tag>
+    </version>
+    <version>
+      <id>1.0.2</id>
+      <name>1.0.2</name>
+      <tag>MAVEN_1_0_2</tag>
+    </version>
+    <version>
+      <id>1.1-beta-1</id>
+      <name>1.1-beta-1</name>
+      <tag>maven-1.1-beta-1</tag>
+    </version>
+    <version>
+      <id>1.1-beta-2</id>
+      <name>1.1-beta-2</name>
+      <tag>maven-1.1-beta-2</tag>
+    </version>
+  </versions>
+&mailingLists;
+&developers;
+&contributors;
+&licenses;
+&dependencies;
+&build;
+&reports;
+  <!-- For maven internal testing -->
+  <properties>
+    <testName>testValue</testName>
+    <pomProperty>${pomProperty}</pomProperty>
+  </properties>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:ant="jelly:ant">
+  <goal name="build">
+    <ant:echo>E will fail on purpose</ant:echo>
+    <ant:fail>E fails on purpose</ant:fail>
+  </goal>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>extra-failure</id>
+  <name>extra-failure</name>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:ant="jelly:ant">
+  <goal name="build">
+    <ant:echo>A will fail on purpose</ant:echo>
+    <ant:fail>A fails on purpose</ant:fail>
+  </goal>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>failure-1</id>
+  <name>failure-1</name>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,24 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:ant="jelly:ant">
+  <goal name="build">
+    <ant:echo>C will fail on purpose</ant:echo>
+    <ant:fail>C fails on purpose</ant:fail>
+  </goal>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>failure-2</id>
+  <name>failure-2</name>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+
+  <pomVersion>3</pomVersion>
+  <groupId>reactor-test</groupId>
+  
+  <currentVersion>1.0-beta-9</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://jakarta.apache.org/</url>
+    <logo>/images/jakarta-logo-blue.gif</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven.jpg</logo>
+  
+  <gumpRepositoryId/>
+  <description/>
+  <shortDescription/>
+  <url/>
+  <issueTrackingUrl/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionDirectory/>
+  <repository/>
+  <versions/>
+  <branches/>
+  <mailingLists/>
+  <developers/>
+  <contributors/>
+
+  <build>
+    <nagEmailAddress>dev at maven.apache.org</nagEmailAddress>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+    </unitTest>
+
+    <resources/>
+  </build>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:ant="jelly:ant">
+  <goal name="build">
+    <ant:echo>B succeeds on purpose</ant:echo>
+  </goal>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>success-1</id>
+  <name>success-1</name>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:ant="jelly:ant">
+  <goal name="build">
+    <ant:echo>D succeeds on purpose</ant:echo>
+  </goal>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>success-2</id>
+  <name>success-2</name>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,4 @@
+This example tests whether the parent properties and maven.xml are correctly
+inherited.
+
+You should actually run maven from the subproject.


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/build.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/build.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/build.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,19 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+parent.build.property=okiedokie
+parent.build.property.override=original
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" default="runTest">
+
+    <goal name="runTest">
+      <ant:echo>overridden builtin property POM substitution</ant:echo>
+      <j:set var="value" value="${pom.url}"/>
+      <j:if test="${value != 'dummy'}">
+        <ant:fail>Sorry, but pom.url = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+      <ant:echo>default builtin property substitution</ant:echo>
+      <j:set var="value" value="${maven.build.dir}"/>
+      <j:set var="targetDir" value="${basedir}/target"/>
+      <j:if test="${value != targetDir}">
+        <ant:fail>Sorry, but maven.build.dir = '${value}', incorrectly set</ant:fail>
+      </j:if>
+      <ant:echo>default builtin property POM substitution</ant:echo>
+      <j:set var="value" value="${pom.description}"/>
+      <j:set var="targetDir" value="${basedir}/target"/>
+      <j:if test="${value != targetDir}">
+        <ant:fail>Sorry, but pom.description = '${value}', incorrectly set</ant:fail>
+      </j:if>
+    </goal>
+
+    <goal name="parent-goal">
+      <ant:property name="parentVar" value="parentVar" />
+    </goal>
+
+    <goal name="parent-goal-override-1">
+      <ant:property name="parentVarOverride1" value="parentVar" />
+    </goal>
+
+    <goal name="parent-goal-override-2">
+      <ant:property name="parentVarOverride2" value="parentVar" />
+    </goal>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,20 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+parent.project.property=okiedokie
+parent.project.property.override=original
+
+maven.repo.remote=dummy

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>root</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <description>${maven.build.dir}</description>
+  <url>${maven.repo.remote}</url>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+parent.build.property.override=overridden
+subproject.build.property=okiedokie

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" default="runTest">
+
+    <goal name="runTest">
+      <ant:echo>inherited goal test</ant:echo>
+      <attainGoal name="parent-goal" />
+      <j:if test="${parentVar != 'parentVar'}">
+        <ant:fail>Sorry, but parentVar = '${parentVar}', not inherited</ant:fail>
+      </j:if>
+      <ant:echo>test goal overridden</ant:echo>
+      <attainGoal name="parent-goal-override-1" />
+      <j:if test="${parentVarOverride1 == 'parentVar'}">
+        <ant:fail>Sorry, but parentVarOverride1 = '${parentVar}', inherited in subproject by mistake</ant:fail>
+      </j:if>
+      <ant:echo>inherited project property test</ant:echo>
+      <j:set var="value" value="${parent.project.property}" />
+      <j:if test="${value != 'okiedokie'}">
+        <ant:fail>Sorry, but parent.project.property = '${value}', not inherited</ant:fail>
+      </j:if>
+      <ant:echo>inherited build property test</ant:echo>
+      <j:set var="value" value="${parent.build.property}" />
+      <j:if test="${value != 'okiedokie'}">
+        <ant:fail>Sorry, but parent.build.property = '${value}', not inherited</ant:fail>
+      </j:if>
+      <ant:echo>inherited project property override test</ant:echo>
+      <j:set var="value" value="${parent.project.property.override}" />
+      <j:if test="${value != 'overridden'}">
+        <ant:fail>Sorry, but parent.project.property.override = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+      <ant:echo>inherited build property override test</ant:echo>
+      <j:set var="value" value="${parent.build.property.override}" />
+      <j:if test="${value != 'overridden'}">
+        <ant:fail>Sorry, but parent.build.property.override = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+      <ant:echo>inherited builtin property override test</ant:echo>
+      <j:set var="value" value="${maven.repo.remote}"/>
+      <j:if test="${value != 'dummy'}">
+        <ant:fail>Sorry, but maven.repo.remote = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+      <ant:echo>inherited builtin property POM substitution</ant:echo>
+      <j:set var="value" value="${pom.url}"/>
+      <j:if test="${value != 'dummy'}">
+        <ant:fail>Sorry, but pom.url = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+    </goal>
+
+    <goal name="parent-goal-override-1">
+      <ant:echo>Inside overridden goal</ant:echo>
+    </goal>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+parent.project.property.override=overridden
+subproject.project.property=okiedokie

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>../project.xml</extend>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>subproject</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,18 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+parent.build.property.override=overridden2
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" default="runTest">
+
+    <goal name="runTest">
+      <ant:echo>test goal presence two deep</ant:echo>
+      <attainGoal name="parent-goal" />
+      <j:if test="${parentVar != 'parentVar'}">
+        <ant:fail>Sorry, but parentVar = '${parentVar}', not inherited in 2nd subproject</ant:fail>
+      </j:if>
+
+      <ant:echo>test goal overridden two deep</ant:echo>
+      <attainGoal name="parent-goal-override-2" />
+      <j:if test="${parentVarOverride2 == 'parentVar'}">
+        <ant:fail>Sorry, but parentVarOverride2 = '${parentVar}', inherited in 2nd subproject by mistake</ant:fail>
+      </j:if>
+
+      <ant:echo>test project property one deep</ant:echo>
+      <j:set var="value" value="${subproject.project.property}" />
+      <j:if test="${value != 'okiedokie'}">
+        <ant:fail>Sorry, but subproject.project.property = '${value}', not inherited in 2nd subproject</ant:fail>
+      </j:if>
+      <ant:echo>test build property one deep</ant:echo>
+      <j:set var="value" value="${subproject.build.property}" />
+      <j:if test="${value != 'okiedokie'}">
+        <ant:fail>Sorry, but subproject.build.property = '${value}', not inherited in 2nd subproject</ant:fail>
+      </j:if>
+      <ant:echo>test project property two deep</ant:echo>
+      <j:set var="value" value="${parent.project.property}" />
+      <j:if test="${value != 'okiedokie'}">
+        <ant:fail>Sorry, but parent.project.property = '${value}', not inherited in 2nd subproject</ant:fail>
+      </j:if>
+      <ant:echo>test build property two deep</ant:echo>
+      <j:set var="value" value="${parent.build.property}" />
+      <j:if test="${value != 'okiedokie'}">
+        <ant:fail>Sorry, but parent.build.property = '${value}', not inherited in 2nd subproject</ant:fail>
+      </j:if>
+      <ant:echo>test project property override two deep</ant:echo>
+      <j:set var="value" value="${parent.project.property.override}" />
+      <j:if test="${value != 'overridden2'}">
+        <ant:fail>Sorry, but parent.project.property.override = '${value}', inherited incorrectly in 2nd subproject</ant:fail>
+      </j:if>
+      <ant:echo>test build property override two deep</ant:echo>
+      <j:set var="value" value="${parent.build.property.override}" />
+      <j:if test="${value != 'overridden2'}">
+        <ant:fail>Sorry, but parent.build.property.override = '${value}', inherited incorrectly in 2nd subproject</ant:fail>
+      </j:if>
+      <ant:echo>inherited builtin property override test</ant:echo>
+      <j:set var="value" value="${maven.repo.remote}"/>
+      <j:if test="${value != 'dummy'}">
+        <ant:fail>Sorry, but maven.repo.remote = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+      <ant:echo>inherited builtin property POM substitution</ant:echo>
+      <j:set var="value" value="${pom.url}"/>
+      <j:if test="${value != 'dummy'}">
+        <ant:fail>Sorry, but pom.url = '${value}', inherited incorrectly</ant:fail>
+      </j:if>
+    </goal>
+
+    <goal name="parent-goal-override-2">
+      <ant:echo>Inside overridden goal</ant:echo>
+    </goal>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+parent.project.property.override=overridden2

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>../project.xml</extend>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>subproject</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,39 @@
+This is an older style reactor where the projects do not have any specified
+groupId. 
+
+The projects declare themselves like this:
+
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>a</id>
+  <name>a</name>
+  <currentVersion>1.0</currentVersion>
+  ...
+</project>
+
+And dependencies look like this:
+
+  <dependencies>
+    <dependency>
+      <id>b</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>c</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>a</id>
+  <name>a</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>b</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>c</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>b</id>
+  <name>b</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>c</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>c</id>
+  <name>c</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>d</id>
+  <name>d</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>e</id>
+  <name>e</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>f</id>
+      <version>1.0</version>
+    </dependency>
+
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>f</id>
+  <name>f</name>
+  <currentVersion>1.0</currentVersion>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  default="build"
+  xmlns:maven="jelly:maven">
+  
+  <!--
+   |
+   | R E A C T O R  T E S T
+   |
+   -->
+  
+  <goal name="build">
+    <maven:reactor
+      basedir="${basedir}"
+      includes="*/project.xml"
+      banner="Building"
+      ignoreFailures="false"
+    />
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0-beta-8</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://jakarta.apache.org/</url>
+    <logo>/images/jakarta-logo-blue.gif</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven.jpg</logo>
+  
+  <gumpRepositoryId/>
+  <description/>
+  <shortDescription/>
+  <url/>
+  <issueTrackingUrl/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionDirectory/>
+  <repository/>
+  <versions/>
+  <branches/>
+  <mailingLists/>
+  <developers/>
+  <contributors/>
+
+  <build>
+    <nagEmailAddress>turbine-maven-dev at jakarta.apache.org</nagEmailAddress>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+    </unitTest>
+
+    <resources/>
+  </build>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,39 @@
+This is an older style reactor where the projects have an id and a groupId
+and the dependencies use fugly notation.
+
+The projects declare themselves like this:
+
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-a</id>
+  <name>a</name>
+  <currentVersion>1.0</currentVersion>
+  ...
+</project>
+
+And dependencies look like this:
+
+  <dependencies>
+    <dependency>
+      <id>reactor-test+b</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+c</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-a</id>
+  <name>a</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>reactor-test+b</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+c</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-b</id>
+  <name>b</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>reactor-test+c</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-c</id>
+  <name>c</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>reactor-test+d</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-d</id>
+  <name>d</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>reactor-test+e</id>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <id>reactor-test+f</id>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-e</id>
+  <name>e</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <id>reactor-test+f</id>
+      <version>1.0</version>
+    </dependency>
+
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>reactor-test-f</id>
+  <name>f</name>
+  <currentVersion>1.0</currentVersion>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  default="build"
+  xmlns:maven="jelly:maven">
+  
+  <!--
+   |
+   | R E A C T O R  T E S T
+   |
+   -->
+  
+  <goal name="build">
+    <maven:reactor
+      basedir="${basedir}"
+      includes="*/project.xml"
+      banner="Building"
+      ignoreFailures="false"
+    />
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+
+  <pomVersion>3</pomVersion>
+  <groupId>reactor-test</groupId>
+  
+  <currentVersion>1.0-beta-8</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://jakarta.apache.org/</url>
+    <logo>/images/jakarta-logo-blue.gif</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven.jpg</logo>
+  
+  <gumpRepositoryId/>
+  <description/>
+  <shortDescription/>
+  <url/>
+  <issueTrackingUrl/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionDirectory/>
+  <repository/>
+  <versions/>
+  <branches/>
+  <mailingLists/>
+  <developers/>
+  <contributors/>
+
+  <build>
+    <nagEmailAddress>turbine-maven-dev at jakarta.apache.org</nagEmailAddress>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+    </unitTest>
+
+    <resources/>
+  </build>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+MAVEN-1691 : This example test is the scope of variables is correctly defined in the reactor.

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core">
+  <goal name="testOverlappedCalls">
+    <j:set var="goal" value="firstLevelGoal"/>
+    <j:set var="maven.multiproject.includes" value="project*/project.xml"/>
+    <attainGoal name="multiproject:goal"/>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-overlapped-calls</artifactId>
+  <name>overlapped calls</name>
+  <shortDescription>tests overlapped calls</shortDescription>
+  <description>Tests for overlapped calls of the multiproject plugin</description>
+  <build>
+    <defaultGoal>testOverlappedCalls</defaultGoal>
+  </build>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:util="jelly:util" xmlns:ant="jelly:ant">
+  <goal name="firstLevelGoal">
+    <ant:echo>firstLevelGoal correctly called in ${pom.name} !!</ant:echo>
+    <j:set var="goal" value="secondLevelGoal"/>
+    <j:set var="maven.multiproject.includes" value="project*/project.xml"/>
+    <attainGoal name="multiproject:goal"/>
+  </goal>
+  <goal name="secondLevelGoal">
+    <ant:fail>secondLevelGoal musn't be called in ${pom.name} !!</ant:fail>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-project-A</artifactId>
+  <name>Project A</name>
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:util="jelly:util" xmlns:ant="jelly:ant">
+  <goal name="firstLevelGoal">
+    <ant:fail>firstLevelGoal musn't be called in ${pom.name} !!</ant:fail>
+  </goal>
+  <goal name="secondLevelGoal">
+    <ant:echo>secondLevelGoal correctly called in ${pom.name} !!</ant:echo>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.1/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-project-A-1</artifactId>
+  <name>Project A 1</name>
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:util="jelly:util" xmlns:ant="jelly:ant">
+  <goal name="firstLevelGoal">
+    <ant:fail>firstLevelGoal musn't be called in ${pom.name} !!</ant:fail>
+  </goal>
+  <goal name="secondLevelGoal">
+    <ant:echo>secondLevelGoal correctly called in ${pom.name} !!</ant:echo>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectA/projectA.2/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-project-A-2</artifactId>
+  <name>Project A 2</name>
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:util="jelly:util" xmlns:ant="jelly:ant">
+  <goal name="firstLevelGoal">
+    <ant:echo>firstLevelGoal correctly called in ${pom.name} !!</ant:echo>
+    <j:set var="goal" value="secondLevelGoal"/>
+    <j:set var="maven.multiproject.includes" value="project*/project.xml"/>
+    <attainGoal name="multiproject:goal"/>
+  </goal>
+  <goal name="secondLevelGoal">
+    <ant:fail>secondLevelGoal musn't be called in ${pom.name} !!</ant:fail>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-project-B</artifactId>
+  <name>Project B</name>
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:util="jelly:util" xmlns:ant="jelly:ant">
+  <goal name="firstLevelGoal">
+    <ant:fail>firstLevelGoal musn't be called in ${pom.name} !!</ant:fail>
+  </goal>
+  <goal name="secondLevelGoal">
+    <ant:echo>secondLevelGoal correctly called in ${pom.name} !!</ant:echo>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.1/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-project-b-1</artifactId>
+  <name>Project B 1</name>
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns:j="jelly:core" xmlns:util="jelly:util" xmlns:ant="jelly:ant">
+  <goal name="firstLevelGoal">
+    <ant:fail>firstLevelGoal musn't be called in ${pom.name} !!</ant:fail>
+  </goal>
+  <goal name="secondLevelGoal">
+    <ant:echo>secondLevelGoal correctly called in ${pom.name} !!</ant:echo>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/overlappedCalls/projectB/projectB.2/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0
+http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven-multiproject-plugin-test-project-B-2</artifactId>
+  <name>Project B 2</name>
+</project>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,5 @@
+Working directory of subproject launched via reactor is not equal to its
+basedir. This may cause problems with relative paths.
+
+Here is an example of such a problem: <java:jar-resources> does nothing if
+<reactor:copy> uses relative path specified in ${resource.directory}.


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project default="run"
+  xmlns:j="jelly:core"
+  xmlns:maven="jelly:maven"
+  xmlns:util="jelly:util">
+
+    <goal name="run">
+      <attainGoal name="run-maven" />
+      <attainGoal name="run-reactor" />
+    </goal>
+
+    <goal name="run-maven">
+        <delete dir="${basedir}/subproject/target" quiet="true"/>
+
+        <maven:maven
+          descriptor="${basedir}/subproject/project.xml"
+          goals="java:jar-resources"
+          ignoreFailures="false"
+          />
+        
+        <util:available file="${basedir}/subproject/target/classes/test.properties">
+            <j:set var="resourcesCopied" value="true"/>
+        </util:available>
+        <j:if test="${resourcesCopied != 'true'}">
+            <fail>resource:copy fails for subproject using maven:maven</fail>
+        </j:if>
+    </goal>
+
+    <goal name="run-reactor">
+        <delete dir="${basedir}/subproject/target" quiet="true"/>
+
+        <maven:reactor
+          basedir="${basedir}"
+          includes="*/project.xml"
+          goals="java:jar-resources"
+          banner="Building"
+          ignoreFailures="false"
+          />
+        
+        <util:available file="${basedir}/subproject/target/classes/test.properties">
+            <j:set var="resourcesCopied" value="true"/>
+        </util:available>
+        <j:if test="${resourcesCopied != 'true'}">
+            <fail>resource:copy fails for subproject using maven:reactor</fail>
+        </j:if>
+    </goal>
+    
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>root</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>subproject</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+    <resources>
+      <resource>
+        <directory>resources</directory>
+        <includes>
+          <include>**/*.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+test.property = some value


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+Second run of reactor fails with "Unknown goal ..." message.


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project default="run_twice" xmlns:maven="jelly:maven">
+
+    <goal name="run_twice">
+        <attainGoal name="run"/>
+        <attainGoal name="run"/>
+    </goal>
+
+    <goal name="run">
+        <maven:reactor
+          basedir="${basedir}"
+          includes="*/project.xml"
+          goals="clean"
+          banner="Cleaning"
+          ignoreFailures="false"
+          />
+    </goal>
+
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>root</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>subproject</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+==================================
+O U T S T A N D I N G  I S S U E S
+==================================
+ 
+----
+
+01/22/2003 - jbrekke
+
+ When using the reactor in combination with the jar version override
+ features of maven there are some problems.  These changes are attempts
+ to reproduce the failures in the reactor-build/standard touchstone
+ project.  There are three things checked for in subproject e's maven.xml:
+
+  o  shared property is valid
+
+  o  subproject can override the parents jar version via the <version/> in
+     it's project.xml
+
+  o  parents jar version works in the subproject.
+
+ To run the tests follow the steps below:
+
+  * run the full reactor build
+
+    - move to src/test/touchstone-build/src/reactor-build/standard
+    - run 'maven'
+    - fails when building subproject e
+
+  * run the e subproject build
+
+    - move to src/test/touchstone-build/src/reactor-build/standard/e
+    - run 'maven display'
+    - The above is a bug, the default goal from the parent's maven.xml is
+      not being honored so we have to explicity state the goal.
+    - fails on the first check
+
+----

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,43 @@
+This is now the standard type of reactor setup where the project has an
+groupId and Id and dependencies have a groupId and artifactId.
+
+So a project file may look something like this. In this particular case the
+project groupId is being inherited.
+
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>a</id>
+  <name>a</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>b</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>c</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>d</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>e</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>f</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/a/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/a/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/a/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>a</id>
+  <name>a</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>b</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>c</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>d</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>e</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>f</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/b/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/b/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/b/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>b</id>
+  <name>b</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>c</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>d</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>e</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>f</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/c/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/c/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/c/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>c</id>
+  <name>c</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>d</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>e</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>f</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/d/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/d/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/d/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>d</id>
+  <name>d</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>e</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>f</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,60 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  xmlns:j="jelly:core">
+
+  <goal name="display">
+    <echo>Checking property.to.share...</echo>
+    <j:set var="actual" value="${property.to.share}"/>
+    <j:set var="expected"  value="property_to_share"/>   
+    <j:if test="${actual != expected}">
+      <fail message="Expected [${expected}] but was [${actual}] : ">
+
+        Parent project properties are not being correctly inheirited.
+ 
+      </fail>
+    </j:if>
+    <echo>** property.to.share is correct!</echo>
+
+    <echo>Checking myjar version...</echo>
+    <j:set var="actual" value="${pom.getDependency('myjar').getVersion()}"/>
+    <j:set var="expected" value="SHOULD-OVERRIDE-PROPERTIES"/>
+    <j:if test="${actual != expected}">
+      <fail message="Expected [${expected}] but was [${actual}] : ">
+  
+        Child project jar version override is not functioning.
+
+      </fail>
+    </j:if>
+    <echo>** myjar version is correct!</echo>
+
+    <echo>Checking junit version...</echo>
+    <j:set var="actual" value="${pom.getDependency('junit').getVersion()}"/>
+    <j:set var="expected" value="3.8.1"/>
+    <j:if test="${actual != expected}">
+      <fail message="Expected [${expected}] but was [${actual}] : ">
+ 
+        Parent project jar version inheiritance is not functioning.
+
+      </fail>
+    </j:if>
+    <echo>** junit version is correct!</echo>
+    
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/e/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>e</id>
+  <name>e</name>
+  <currentVersion>1.0</currentVersion>
+
+  <dependencies>
+    <dependency>
+      <groupId>reactor-test</groupId>
+      <artifactId>f</artifactId>
+      <version>1.0</version>
+    </dependency>
+
+    <dependency>
+      <id>myjar</id>
+      <version>SHOULD-OVERRIDE-PROPERTIES</version>
+    </dependency>
+
+    <dependency>
+      <id>junit</id>
+    </dependency>
+
+  </dependencies>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,27 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project>
+  
+  <goal name="display">
+    <echo>This child is overriding the display goal!</echo>
+    <echo>maven.mode.online = ${maven.mode.online}</echo>
+    <echo>property.to.share = ${property.to.share}</echo>
+    <echo>maven.username = ${maven.username}</echo>
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/f/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>f</id>
+  <name>f</name>
+  <currentVersion>1.0</currentVersion>
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,44 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project
+  default="build"
+  xmlns:maven="jelly:maven">
+  
+  <!--
+   |
+   | R E A C T O R  T E S T
+   |
+   -->
+  
+  <goal name="build">
+    <maven:reactor
+      basedir="${basedir}"
+      includes="*/project.xml"
+      goals="display"
+      banner="Building"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="display">
+    <echo>maven.mode.online = ${maven.mode.online}</echo>
+    <echo>property.to.share = ${property.to.share}</echo>
+    <echo>maven.username = ${maven.username}</echo>
+  </goal>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,20 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+property.to.share = property_to_share
+maven.jar.override = true
+maven.jar.myjar = 1.2
+maven.jar.junit = 3.8.1

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/standard/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+
+  <pomVersion>3</pomVersion>
+  <groupId>reactor-test</groupId>
+  
+  <currentVersion>1.0-beta-8</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://jakarta.apache.org/</url>
+    <logo>/images/jakarta-logo-blue.gif</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven.jpg</logo>
+  
+  <gumpRepositoryId/>
+  <description/>
+  <shortDescription/>
+  <url/>
+  <issueTrackingUrl/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionDirectory/>
+  <repository/>
+  <versions/>
+  <branches/>
+  <mailingLists/>
+  <developers/>
+  <contributors/>
+
+  <build>
+    <nagEmailAddress>turbine-maven-dev at jakarta.apache.org</nagEmailAddress>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+    </unitTest>
+
+    <resources/>
+  </build>
+
+</project>
+

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/maven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/maven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project default="run"
+  xmlns:j="jelly:core"
+  xmlns:ant="jelly:ant"
+  xmlns:maven="jelly:maven"
+  xmlns:util="jelly:util">
+
+    <goal name="run">
+      
+      <echo>!!!! ${maven.username}</echo>
+      
+      <!-- 
+      
+      In order for this to pass I seem to have to coerce the value in the
+      JellyContext to a String using the ant:property tag. I don't think
+      John Casey had to do this so I need to check the code as I probably
+      changed something that is causing this mixup. The value in the
+      JellyContext is probably an Expression which is why the evaluation
+      is coming out false without coercion.
+      
+      -->
+      <ant:property name="mavenUserName" value="${maven.username}"/>
+      
+      <echo>!!!! ${mavenUserName}</echo>
+      
+      <j:if test="${mavenUserName != 'maven'}">
+        <fail>username_test: maven.username not properly assigned from root project.</fail>
+      </j:if>
+      
+    </goal>
+    
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/project.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/reactor-build/username_test/project.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project>
+  <pomVersion>3</pomVersion>
+  <currentVersion>1.0</currentVersion>
+  <name>maven username test when set outside reactor and used within</name>
+  <organization/>
+  <inceptionYear/>
+  <package/>
+  <logo/>
+  <shortDescription/>
+  <url/>
+  <siteAddress/>
+  <siteDirectory/>
+  <distributionSite/>
+  <distributionDirectory/>
+  <repository/>
+  <mailingLists/>
+  <developers/>
+  <dependencies/>
+  <build>
+    <sourceDirectory/>
+    <unitTestSourceDirectory/>
+  </build>
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+# Some fake resources

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/resources/resources.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,20 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<resources>
+  <foo>bar</foo>
+</resources>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,60 @@
+package org.apache.maven.touchstone;
+
+/* ====================================================================
+ *   Copyright 2001-2005 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.MavenUtils;
+import org.apache.maven.project.Project;
+
+/**
+ */
+public class TouchstoneTest
+     extends TestCase
+{
+    private String basedir = System.getProperty("basedir");
+
+    /**
+     * Constructor for TouchstoneTest.
+     *
+     * @param name test name
+     */
+    public TouchstoneTest(String name)
+    {
+        super(name);
+    }
+
+    /**
+     * A unit test for JUnit
+     */
+    public void testTouchstone()
+        throws Exception
+    {
+        Project p = MavenUtils.getProject( new File( basedir, "project.xml" ) );
+        
+        // A value that is specified in project.properties is interpolated into the
+        // project.xml file so that when we access the connection value we get the
+        // specified anonymous login name in the connection.
+        assertEquals( "scm:cvs:pserver:testuser at cvs.apache.org:/home/cvspublic:jakarta-turbine-maven",
+                      p.getRepository().getConnection() );  
+        
+        assertEquals( "touchstone-group", p.getGroupId() );
+    }
+}

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/maven.tar.gz
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/maven.tar.gz
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/sea-header
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/sea-header	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/sea-header	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,26 @@
+#!/bin/sh
+echo ""
+echo "@NAME@ v at CURRENT_VERSION - starting installation... please wait"
+echo ""
+
+# create a temp directory to extract to.
+export WRKDIR=`mktemp -d /tmp/selfextract.XXXXXX`
+
+SKIP=`awk '/^__ARCHIVE_FOLLOWS__/ { print NR + 1; exit 0; }' $0`
+
+# Take the TGZ portion of this file and pipe it to tar.
+tail +$SKIP $0 | tar xz -C $WRKDIR
+
+# execute the installation script
+
+#PREV=`pwd`
+#cd $WRKDIR
+#./install.sh
+
+# delete the temp files
+#cd $PREV
+#rm -rf $WRKDIR
+
+exit 0
+
+__ARCHIVE_FOLLOWS__

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/test.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/test.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/test.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,23 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<test>
+  <description>
+    A little XML file which servers as a test resource for the
+    touch stone build.
+  </description>
+</test>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/whacky.properties
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/whacky.properties	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/src/test-data/whacky.properties	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,17 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -------------------------------------------------------------------
+
+whacky=weirdo

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/.cvsignore
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/.cvsignore	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+stylesheets

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/navigation.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/navigation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/navigation.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project name="touchstone">
+  
+  <title>touchstone</title>
+  
+  <body>
+    
+    <links>
+      <item name="Maven" href="http://jakarta.apache.org/turbine/maven/" />
+    </links>
+    
+    <menu name="Overview">
+      <item name="Table test" href="/tables.html"/>
+      <item name="APT test"   href="/apt-test.html"/>
+    </menu>
+  
+  </body>
+
+</project>

Added: branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/tables.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/tables.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/test/touchstone-build/xdocs/tables.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+<properties>
+<author email="bporter at f2network.com.au">Brett Porter</author>
+<title>Test Tables</title>
+</properties>
+  
+<body>
+<section name="Test">
+<p>
+<table border="0">
+<tr>
+<th>Heading 1</th><th>Heading 2</th>
+</tr>
+<tr>
+<td>Column 1</td><td>Column 2</td>
+</tr>
+<tr>
+<td colspan="2">Colspan 2</td>
+</tr>
+<tr valign="top">
+<td>Row with attributes</td>
+</tr>
+</table>
+</p>
+</section>
+</body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/src/xsd/maven-v3_0_0.xsd
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/xsd/maven-v3_0_0.xsd	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/xsd/maven-v3_0_0.xsd	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,1340 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://maven.apache.org/POM/3.0.0" targetNamespace="http://maven.apache.org/POM/3.0.0" elementFormDefault="qualified">
+  <xs:element name="project" type="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+         The &lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; element specifies various attributes 
+         about a project. This is the root element of the project descriptor. 
+         The following table lists all of the possible child elements. Child 
+         elements with children are then documented further in subsequent 
+         sections.
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+         The &lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; element specifies various attributes 
+         about a project. This is the root element of the project descriptor. 
+         The following table lists all of the possible child elements. Child 
+         elements with children are then documented further in subsequent 
+         sections.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="extend" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The location of the parent project, if one exists. Values from the 
+            parent project will be the default for this project if they are 
+            left unspecified. The path may be absolute, or relative to the 
+            current project.xml file.
+            
+            &lt;div class="source"&gt;&lt;pre&gt;&amp;lt;extend&amp;gt;${basedir}/../project.xml&amp;lt;/extend&amp;gt;&lt;/pre&gt;&lt;/div&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="pomVersion" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The current version of the Maven project descriptor. This version 
+            number enables Maven to automatically update an out-of-date project 
+            descriptor when a new version is available. This version number 
+            should not be changed after the descriptor has been created. Maven 
+            will update it automatically.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="id" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The short name of the project.  This value is used when naming 
+            &lt;a href="/plugins/java/index.html"&gt;jars&lt;/a&gt; and 
+            &lt;a href="/plugins/dist/index.html"&gt;distribution files&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="groupId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The short name of the project group. This value is used to group
+            all jars for a project in one directory. For more info look at the
+            &lt;a href="/user-guide.html#Naming%20Conventions"&gt;user guide&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The short name of the project.  This value is used in conjunction
+            with &lt;code&gt;groupId&lt;/code&gt;
+            when naming &lt;a href="/plugins/java/index.html"&gt;jars&lt;/a&gt; and 
+            &lt;a href="/plugins/dist/index.html"&gt;distribution files&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The full name of the project.  This value is used when
+            generating &lt;a href="/plugins/javadoc/index.html"&gt;JavaDoc&lt;/a&gt;
+            titles.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="currentVersion" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The current version of the project.  This value is used when
+            naming &lt;a href="/plugins/java/index.html"&gt;jars&lt;/a&gt; and 
+            &lt;a href="/plugins/dist/index.html"&gt;distribution files&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="shortDescription" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+             A short description of the project. The short description should be 
+             limited to a single line.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="description" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Optional. A detailed description of the project. 
+            This description is used as the default to generate the
+            &lt;a href="/plugins/site/index.html"&gt;Mailing Lists&lt;/a&gt; of the project's 
+            web site, and is shown when &lt;code&gt;maven --usage&lt;/code&gt; is called on 
+            the project. While this element can be specified as CDATA to enable 
+            the use of HTML tags within the description, you are encouraged to 
+            provide an alternative home page using &lt;code&gt;xdocs/index.xml&lt;/code&gt; 
+            if this is required.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+             The URL to the project's homepage.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="logo" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The URL to the project's logo image.  This can be an URL relative
+            to the base directory of the generated web site,
+            (e.g., &lt;code&gt;/images/project-logo.png&lt;/code&gt;) or an absolute URL
+            (e.g., &lt;code&gt;http://my.corp/project-logo.png&lt;/code&gt;).  This is used
+            when generating the project documentation.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="issueTrackingUrl" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+             Optional. The URL to the project's issue tracking system.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="inceptionYear" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The year of the project's inception specified with 4 digits.
+            This value is used when generating 
+            &lt;a href="/plugins/javadoc/index.html"&gt;JavaDoc&lt;/a&gt; copyright notices.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="gumpRepositoryId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. This is the Id of the Gump repository that this project is
+            part of (assuming it participates in the Gump integration
+            effort).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="siteAddress" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. The hostname of the web server that hosts the project's web
+            site.  This is used when the web site is 
+            &lt;a href="/plugins/site/index.html"&gt;deployed&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="siteDirectory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. The directory on the web server where the public web site
+            for this project resides.  This is used when the web site is 
+            &lt;a href="/plugins/site/index.html"&gt;deployed&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="distributionSite" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. The server server where the final
+            distributions will be published.  This is used when the
+            distributions are
+            &lt;a href="/plugins/dist/index.html"&gt;deployed&lt;/a&gt;.
+            &lt;p&gt;
+              If this isn't defined, the central repository is used instead as
+              determined by &lt;code&gt;maven.repo.central&lt;/code&gt; and 
+              &lt;code&gt;maven.repo.central.directory&lt;/code&gt;
+            &lt;/p&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="distributionDirectory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. The directory on the web server where the final
+            distributions will be published.  This is used when the
+            distributions are
+            &lt;a href="/plugins/dist/index.html"&gt;deployed&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="mailingLists" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Contains information about a project's mailing lists.  This
+            is used to generate the &lt;a href="/plugins/site/index.html"&gt;front
+            page&lt;/a&gt; of the site's web site.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="mailingList" type="MailingList" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="developers" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describes the committers to a project.  This is used to
+            generate the &lt;a href="/plugins/site/index.html"&gt;Project Team&lt;/a&gt;
+            page of the project's web site.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="developer" type="Developer" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="contributors" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describes the contributors to a project.  This is used to generate
+            the &lt;a href="/plugins/site/index.html"&gt;Project Team&lt;/a&gt; page of
+            the project's web site.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="contributor" type="Contributor" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="licenses" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the licenses for this project.  
+            Each license is described by a &lt;code&gt;license&lt;/code&gt; element, which 
+            is then described by additional elements (described below).  The 
+            auto-generated site documentation references this information.  
+            Projects should only list the license(s) that applies to the project 
+            and not the licenses that apply to dependencies.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="license" type="License" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="versions" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. Contains information on previous versions of the
+            project. This information is used when invoking the 
+            &lt;a href="/plugins/dist/index.html"&gt;&lt;code&gt;maven:dist&lt;/code&gt;&lt;/a&gt;
+            target.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="version" type="Version" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="branches" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Optional. Contains information on branches of the
+            project. This information is used when invoking the 
+            &lt;a href="/plugins/dist/index.html"&gt;&lt;code&gt;maven:dist&lt;/code&gt;&lt;/a&gt;
+            target.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="branch" type="Branch" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="packageGroups" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">Package groups required for complete javadocs.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="packageGroup" type="PackageGroup" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="reports" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element includes the specification of reports to be
+            included in a Maven-generated site.  These reports will be run
+            when a user executes &lt;code&gt;maven site&lt;/code&gt;.  All of the
+            reports will be included in the navigation bar for browsing in
+            the order they are specified.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="report" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="repository" type="Repository" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">Specification for the SCM used by the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organization" type="Organization" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes various attributes of the organization to
+            which the project belongs.  These attributes are utilized when
+            documentation is created (for copyright notices and links).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+             Project properties that will be used by various plugins
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="package" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The Java package name of the project.  This value is used
+            when generating &lt;a href="/plugins/javadoc/index.html"&gt;JavaDoc&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="build" type="Build" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="dependencies" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            &lt;p&gt;
+              This element describes all of the dependencies associated with a
+              project.  Each dependency is described by a
+              &lt;code&gt;dependency&lt;/code&gt; element, which is then described by
+              additional elements (described below).
+            &lt;/p&gt;
+            &lt;p&gt;
+              These dependencies are used to construct a classpath for your 
+              project during the build process.
+            &lt;/p&gt;
+            &lt;p&gt;
+              Maven can automatically download these dependencies from a 
+              &lt;a href="/user-guide.html#Remote%20Repository%20Layout"&gt;remote repository&lt;/a&gt;.
+            &lt;/p&gt;
+            &lt;p&gt;
+              The filename that Maven downloads from the repository is 
+              &lt;code&gt;artifactId-version.jar&lt;/code&gt; where &lt;code&gt;artifactId&lt;/code&gt; 
+              corresponds to the &lt;code&gt;artifactId&lt;/code&gt; element and 
+              &lt;code&gt;version&lt;/code&gt; corresponds to the &lt;code&gt;version&lt;/code&gt; element.
+            &lt;/p&gt;
+            &lt;p&gt;
+              When Maven goes looking for a dependency in the remote repository, 
+              it uses the dependency element to construct the URL to download 
+              from. This URL is defined as:
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}&lt;/pre&gt;
+            &lt;/div&gt;
+            &lt;p&gt;
+              Where
+            &lt;/p&gt;
+            &lt;dl&gt;
+              &lt;dt&gt;repo&lt;/dt&gt;
+              &lt;dd&gt;
+                is the remote repository URL specified by 
+                &lt;code&gt;${maven.repo.remote}&lt;/code&gt;
+              &lt;/dd&gt;
+              
+              &lt;dt&gt;groupId&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;type&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;artifactId&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;version&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+            &lt;/dl&gt;
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" type="Dependency" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Build">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="nagEmailAddress" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            An address to which notifications regarding the status of builds
+            for this project can be sent. This is intended for use by tools
+            which do unattended builds, for example those providing for
+            continuous integration. Currently this is used by the
+            &lt;a href="/plugins/gump/"&gt;gump plugin&lt;/a&gt;
+            target.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="sourceDirectory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the source
+            of the project. The generated build system will compile
+            the source in this directory when the project is built.
+            The path given is relative to the project descriptor.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="unitTestSourceDirectory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the unit test
+            source of the project. The generated build system will
+            compile these directories when the project is being tested.
+            The unit tests must use the JUnit test framework.
+            The path given is relative to the project descriptor.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="aspectSourceDirectory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">    
+             This element specifies a directory containing Aspect    
+             sources of the project.  The generated build system will    
+             compile the Aspects in this directory when the project is    
+             built if Aspects have been enabled (see the    
+             &lt;a    
+               href="/plugins/aspectj/goals.html"&gt;Aspectj goals&lt;/a&gt; document).    
+             The path given is relative to the project descriptor.    
+           </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="integrationUnitTestSourceDirectory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">    
+             This element specifies a directory containing integration test    
+             sources of the project.    
+           </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="sourceModifications" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the sourceModifications associated 
+            with a project.  Each source modification is described by a
+            &lt;code&gt;sourceModification&lt;/code&gt; element, which is then described by
+             additional elements (described below).  These modifications are used 
+            to exclude or include various source depending on the environment
+             the build is running in.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="sourceModification" type="SourceModification" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="unitTest" type="UnitTest" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies unit tests associated with the project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="defaultGoal" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The default goal (or phase in Maven 2) to execute when none is specified for the project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="resources" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the resources associated with a 
+            project or unit tests. Each resource is described by a resource 
+            element, which is then described by additional elements (described 
+            &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete 
+            the jar file or to run unit test.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="resource" type="Resource" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="UnitTest">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="resources" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="resource" type="Resource" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="includes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="include" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="excludes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Resource">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This element describes all of the resources associated with a project or 
+        unit tests. Each resource is described by a resource element, which is 
+        then described by additional elements (described 
+        &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete the 
+        jar file or to run unit test.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="targetPath" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describe the resource target path. For example, if you want that 
+            resource appear into a specific package 
+            (&lt;code&gt;org.apache.maven.messages&lt;/code&gt;), you must specify this 
+            element with this value : &lt;code&gt;org/apache/maven/messages&lt;/code&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="filtering" type="xs:boolean" default="false" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">Boolean. Describe if resources are filtered or not.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="directory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describe the directory where the resource is stored.
+            The path may be absolute, or relative to the project.xml file.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="includes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="include" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="excludes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="SourceModification">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0</xs:documentation>
+      <xs:documentation source="description">
+        This element describes all of the sourceModifications associated with a
+        project.  Each source modification is described by a
+        &lt;code&gt;sourceModification&lt;/code&gt; element, which is then described by
+        additional elements (described below).  These modifications are used 
+        to exclude or include various source depending on the environment
+        the build is running in.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="className" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            If the class with this name can &lt;strong&gt;not&lt;/strong&gt; be
+            loaded, then the includes and excludes specified below 
+            will be applied to the contents of the 
+            &lt;a href="#sourceDirectory"&gt;sourceDirectory&lt;/a&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="property" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="directory" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describe the directory where the resource is stored.
+            The path may be absolute, or relative to the project.xml file.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="includes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="include" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="excludes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Organization">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Specifies the organization who produces this project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL to the organization's home page.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="logo" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The URL to the organization's logo image.  This can be an URL relative
+            to the base directory of the generated web site,
+            (e.g., &lt;code&gt;/images/org-logo.png&lt;/code&gt;) or an absolute URL
+            (e.g., &lt;code&gt;http://my.corp/logo.png&lt;/code&gt;).  This value is used
+            when generating the project documentation.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Developer">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Information about one of the committers on this project. Derived from
+        &lt;code&gt;Contributor&lt;/code&gt;.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The username of the developer.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="email" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organization" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organizationUrl" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="roles" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The roles the contributor plays in the project.  Each role is
+            described by a &lt;code&gt;role&lt;/code&gt; element, the body of which is a
+            role name.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="role" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="timezone" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The timezone the contributor is in. This is a number in the range -11 to 12.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Properties about the contributor, such as an instant messenger handle.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Dependency">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            &lt;p&gt;The name of the dependency.&lt;/p&gt;
+            &lt;p&gt;
+              &lt;strong&gt;Note:&lt;/strong&gt; The use of the id element for
+              a dependency is deprecated. Please use &lt;code&gt;groupId&lt;/code&gt; and
+              &lt;code&gt;artifactId&lt;/code&gt; together instead.
+            &lt;/p&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="groupId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The project group that produced the dependency, e.g.
+            &lt;code&gt;geronimo&lt;/code&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The unique id for an artifact produced by the project group, e.g.
+            &lt;code&gt;germonimo-jms&lt;/code&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The version of the dependency, e.g. &lt;code&gt;3.2.1&lt;/code&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This url will be provided to the user if the jar file cannot be downloaded
+            from the central repository.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="jar" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Literal name of the artifact. Used to override the calculated artifact name.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="type" type="xs:string" default="jar" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The type of dependency. This defaults to &lt;code&gt;jar&lt;/code&gt;.
+            Known recognised dependency types are:
+            &lt;ul&gt;
+            &lt;li&gt;&lt;code&gt;jar&lt;/code&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;code&gt;ejb&lt;/code&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;code&gt;plugin&lt;/code&gt;&lt;/li&gt;
+            &lt;/ul&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Properties about the dependency. Various plugins allow you to 
+            &lt;code&gt;mark&lt;/code&gt; dependencies with properties. For example the 
+            &lt;a href="/plugins/war/index.html"&gt;war&lt;/a&gt; plugin looks for a 
+            &lt;code&gt;war.bundle&lt;/code&gt; property, and if found will include the 
+            dependency in &lt;code&gt;WEB-INF/lib&lt;/code&gt;. For example syntax, check 
+            the war plugin docs.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Repository">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="connection" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            &lt;p&gt;
+              Optional.  The source configuration management system URL
+              that describes the repository and how to connect to the
+              repository.  This is used by Maven when &lt;a href="/plugins/dist/index.html"&gt;building versions&lt;/a&gt;
+              from specific ID.
+            &lt;/p&gt;
+            &lt;p&gt;
+              The format of this element is as follows:
+            &lt;/p&gt;
+            &lt;pre&gt;scm:&amp;lt;provider&amp;gt;:&amp;lt;provider-parameters&amp;gt;&lt;/pre&gt;
+            &lt;p&gt;For cvs, the format for pserver repositories should be:&lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;scm:cvs:pserver:user at host:/cvs/root:module-name&lt;/pre&gt;
+            &lt;/div&gt;
+            &lt;p&gt;
+              For local networked repositories (eg. pserver to local machine)
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;scm:cvs:lserver:user at host:/cvs/root:module-name&lt;/pre&gt;
+            &lt;/div&gt;
+            &lt;p&gt;
+              For ssh access:
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;scm:cvs:ext:user at host:/cvs/root:module-name&lt;/pre&gt;
+            &lt;/div&gt;
+
+            Remember that CVS will expect an environment variable called
+            &lt;code&gt;CVS_RSH&lt;/code&gt; to be set, typically to &lt;code&gt;ssh&lt;/code&gt; or your
+            ssh client.
+            
+            &lt;p&gt;
+              Some cvs clients support other protocols, such as ntserver and extssh.
+              Here's an example using CVS NT and ntserver:
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;scm|cvs|ntserver|user at server|e:\cvs|Deployment&lt;/pre&gt;
+            &lt;/div&gt;
+  
+            Note the use of the vertical bar as delimiter as the repository has a 
+            colon (&lt;code&gt;:&lt;/code&gt;) in it.
+            
+            &lt;p&gt;
+              For local file system repositories
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;scm:cvs:local:ignored:/cvs/root:module-name&lt;/pre&gt;
+            &lt;/div&gt;
+  
+            &lt;p&gt;
+              For StarTeam access: 
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;scm:starteam:username:password at host:port/project/view/folder&lt;/pre&gt;
+            &lt;/div&gt;
+
+            All of this information can be had from either the StarTeam Universal 
+            Client (Tools-&amp;gt;Server Administration-&amp;gt;Server Properties) or from the 
+            administrator. 
+            
+            &lt;p&gt;
+              The delimiter is determined by the character after "scm". eg.
+              &lt;code&gt;scm|cvs|pserver|user at host|/cvs/root|module-name&lt;/code&gt; 
+              is equivalent to that listed above. This can be useful for Windows users
+              who have : in their cvsroot parameter (eg. D:\cvsroot)
+            &lt;/p&gt;
+            &lt;p&gt;
+              Where &lt;code&gt;pserver&lt;/code&gt; is the protocol used to access CVS,
+              &lt;code&gt;user at host&lt;/code&gt; is the user name to log in to the specified
+              cvs &lt;strong&gt;host&lt;/strong&gt;, &lt;code&gt;/cvs/root&lt;/code&gt; is the cvs root
+              directory, and &lt;code&gt;module-name&lt;/code&gt; is the name of the cvs
+              module to be worked on
+            &lt;/p&gt;
+
+            &lt;p&gt;As an example, the settings for an Apache project are usually:&lt;/p&gt;
+            &lt;pre&gt;scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:module-name&lt;/pre&gt;
+            
+            &lt;p&gt;
+              Currently CVS, Starteam and  SubVersion are the only supported scm's.
+              Others will be added as soon as possible
+            &lt;/p&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="developerConnection" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Just like connection, but for developers, i.e. this scm connection
+            will not be read only.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">The URL to the project's browsable CVS repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PackageGroup">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="title" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="packages" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Version">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0</xs:documentation>
+      <xs:documentation source="description">
+        This element describes each of the previous versions of the
+        project. Each version is described by a &lt;code&gt;version&lt;/code&gt;
+        element
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The external version number under which this release was distributed. Examples include:
+            &lt;code&gt;1.0&lt;/code&gt;,
+            &lt;code&gt;1.1-alpha1&lt;/code&gt;,
+            &lt;code&gt;1.2-beta&lt;/code&gt;,
+            &lt;code&gt;1.3.2&lt;/code&gt; etc.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="tag" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The name given in the version control system (e.g. cvs) used by the project for the source
+            code associated with this version of the project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="id" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a version.  This ID is
+            used to specify the version that
+            &lt;a href="/plugins/dist/index.html"&gt;
+              &lt;code&gt;maven:dist&lt;/code&gt;
+            &lt;/a&gt; builds.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="License">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Describes the licenses for this project.  This is used to generate
+        the &lt;a href="/plugins/site/index.html"&gt;License&lt;/a&gt; page of
+        the project's web site. Typically the licenses listed for the project
+        are that of the project itself, and not of dependencies.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full legal name of the license.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The official url for the license text.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="distribution" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+              The primary method by which this project may be distributed.
+            &lt;dl&gt;
+              &lt;dt&gt;repo&lt;/dt&gt;
+              &lt;dd&gt;may be downloaded from the Maven repository&lt;/dd&gt;
+              &lt;dt&gt;manual&lt;/dt&gt;
+              &lt;dd&gt;user must manually download and install the dependency.&lt;/dd&gt;
+            &lt;/dl&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="comments" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Addendum information pertaining to this license.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Contributor">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Description of a person who has contributed to the project, but who does
+        not have commit privileges. Usually, these contributions come in the 
+        form of patches submitted.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="email" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organization" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organizationUrl" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="roles" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The roles the contributor plays in the project.  Each role is
+            described by a &lt;code&gt;role&lt;/code&gt; element, the body of which is a
+            role name.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="role" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="timezone" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The timezone the contributor is in. This is a number in the range -11 to 12.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Properties about the contributor, such as an instant messenger handle.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Branch">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0</xs:documentation>
+      <xs:documentation source="description">
+       Optional. Contains information on branches of the project. This  
+       information is used when invoking the 
+       &lt;a href="/plugins/dist/index.html"&gt;&lt;code&gt;maven:dist&lt;/code&gt;&lt;/a&gt; target.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="tag" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The branch tag in the version control system (e.g. cvs) used by the 
+            project for the source code associated with this branch of the
+            project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="MailingList">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This element describes all of the mailing lists associated with
+        a project.  Each mailing list is described by a
+        &lt;code&gt;mailingList&lt;/code&gt; element, which is then described by
+        additional elements (described below).  The auto-generated site
+        documentation references this information.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the mailing list.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="subscribe" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to subscribe to the mailing list.
+            If this is an email address, a
+            &lt;code&gt;mailto:&lt;/code&gt; link will automatically be created when
+            the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="unsubscribe" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to unsubscribe to
+            the mailing list.  If this is an email address, a
+            &lt;code&gt;mailto:&lt;/code&gt; link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="post" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to post to
+            the mailing list.  If this is an email address, a
+            &lt;code&gt;mailto:&lt;/code&gt; link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="archive" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The link to a URL where you can browse the mailing list archive.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="otherArchives" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The link to other URLs where you can browse the list archive.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="otherArchive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>

Added: branches/maven1/upstream/1.1~beta3/src/xsd/maven-v4_0_0.xsd
===================================================================
--- branches/maven1/upstream/1.1~beta3/src/xsd/maven-v4_0_0.xsd	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/src/xsd/maven-v4_0_0.xsd	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,2259 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0">
+  <xs:element name="project" type="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+         The &lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; element specifies various attributes 
+         about a project. This is the root element of the project descriptor. 
+         The following table lists all of the possible child elements. Child 
+         elements with children are then documented further in subsequent 
+         sections.
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+         The &lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; element specifies various attributes 
+         about a project. This is the root element of the project descriptor. 
+         The following table lists all of the possible child elements. Child 
+         elements with children are then documented further in subsequent 
+         sections.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="parent" minOccurs="0" type="Parent">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Information on which parent POM to extend.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="modelVersion" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Declares to which version of project descriptor this POM conforms.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="groupId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The short name of the project group. This value is used to group
+            all jars for a project in one directory. For more info look at the
+            &lt;a href="/reference/conventions.html"&gt;user guide&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The short name of the project.  This value is used in conjunction
+            with &lt;code&gt;groupId&lt;/code&gt;
+            when naming &lt;a href="/plugins/java/index.html"&gt;jars&lt;/a&gt; and 
+            &lt;a href="/plugins/dist/index.html"&gt;distribution files&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="packaging" minOccurs="0" type="xs:string" default="jar">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The type of artifact this project produces.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The full name of the project.  This value is used when
+            generating &lt;a href="/plugins/javadoc/index.html"&gt;JavaDoc&lt;/a&gt;
+            titles.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The current version of the artifact produced by this project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="description" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Optional. A detailed description of the project. 
+            This description is used as the default to generate the
+            &lt;a href="/plugins/site/index.html"&gt;Mailing Lists&lt;/a&gt; of the project's 
+            web site, and is shown when &lt;code&gt;maven --usage&lt;/code&gt; is called on 
+            the project. While this element can be specified as CDATA to enable 
+            the use of HTML tags within the description, you are encouraged to 
+            provide an alternative home page using &lt;code&gt;xdocs/index.xml&lt;/code&gt; 
+            if this is required.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+             The URL to the project's homepage.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="prerequisites" minOccurs="0" type="Prerequisites">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Describes the prerequisites in the build environment for this project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="issueManagement" minOccurs="0" type="IssueManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The project's issue management information.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ciManagement" minOccurs="0" type="CiManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The project's continuous integration management information.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="inceptionYear" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The year of the project's inception specified with 4 digits.
+            This value is used when generating 
+            &lt;a href="/plugins/javadoc/index.html"&gt;JavaDoc&lt;/a&gt; copyright notices.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="mailingLists" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Contains information about a project's mailing lists.  This
+            is used to generate the &lt;a href="/plugins/site/index.html"&gt;front
+            page&lt;/a&gt; of the site's web site.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="mailingList" minOccurs="0" maxOccurs="unbounded" type="MailingList"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="developers" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describes the committers to a project.  This is used to
+            generate the &lt;a href="/plugins/site/index.html"&gt;Project Team&lt;/a&gt;
+            page of the project's web site.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="developer" minOccurs="0" maxOccurs="unbounded" type="Developer"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="contributors" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describes the contributors to a project.  This is used to generate
+            the &lt;a href="/plugins/site/index.html"&gt;Project Team&lt;/a&gt; page of
+            the project's web site.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="contributor" minOccurs="0" maxOccurs="unbounded" type="Contributor"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="licenses" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the licenses for this project.  
+            Each license is described by a &lt;code&gt;license&lt;/code&gt; element, which 
+            is then described by additional elements (described below).  The 
+            auto-generated site documentation references this information.  
+            Projects should only list the license(s) that applies to the project 
+            and not the licenses that apply to dependencies.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="license" minOccurs="0" maxOccurs="unbounded" type="License"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="scm" minOccurs="0" type="Scm">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Specification for the SCM used by the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organization" minOccurs="0" type="Organization">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes various attributes of the organization to
+            which the project belongs.  These attributes are utilized when
+            documentation is created (for copyright notices and links).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="build" minOccurs="0" type="Build">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="profiles" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Listing of project-local build profiles which will modify the build process when activated.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="profile" minOccurs="0" maxOccurs="unbounded" type="Profile"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="modules" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The modules to build in addition to the current project</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="module" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="repositories" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="repository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="pluginRepositories" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering plugins</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="pluginRepository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="dependencies" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            &lt;p&gt;
+              This element describes all of the dependencies associated with a
+              project.  Each dependency is described by a
+              &lt;code&gt;dependency&lt;/code&gt; element, which is then described by
+              additional elements (described below).
+            &lt;/p&gt;
+            &lt;p&gt;
+              These dependencies are used to construct a classpath for your 
+              project during the build process.
+            &lt;/p&gt;
+            &lt;p&gt;
+              Maven can automatically download these dependencies from a 
+              &lt;a href="/user-guide.html#Remote%20Repository%20Layout"&gt;remote repository&lt;/a&gt;.
+            &lt;/p&gt;
+            &lt;p&gt;
+              The filename that Maven downloads from the repository is 
+              &lt;code&gt;artifactId-version.jar&lt;/code&gt; where &lt;code&gt;artifactId&lt;/code&gt; 
+              corresponds to the &lt;code&gt;artifactId&lt;/code&gt; element and 
+              &lt;code&gt;version&lt;/code&gt; corresponds to the &lt;code&gt;version&lt;/code&gt; element.
+            &lt;/p&gt;
+            &lt;p&gt;
+              When Maven goes looking for a dependency in the remote repository, 
+              it uses the dependency element to construct the URL to download 
+              from. This URL is defined as:
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}&lt;/pre&gt;
+            &lt;/div&gt;
+            &lt;p&gt;
+              Where
+            &lt;/p&gt;
+            &lt;dl&gt;
+              &lt;dt&gt;repo&lt;/dt&gt;
+              &lt;dd&gt;
+                is the remote repository URL specified by 
+                &lt;code&gt;${maven.repo.remote}&lt;/code&gt;
+              &lt;/dd&gt;
+              
+              &lt;dt&gt;groupId&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;type&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;artifactId&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;version&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+            &lt;/dl&gt;
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="reports" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            NOT A VALID ELEMENT. LISTED TO ALLOW LEGACY REPOSITORY POMs TO PARSE.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="reporting" minOccurs="0" type="Reporting">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element includes the specification of reports to be
+            included in a Maven-generated site.  These reports will be run
+            when a user executes &lt;code&gt;maven site&lt;/code&gt;.  All of the
+            reports will be included in the navigation bar for browsing in
+            the order they are specified.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="dependencyManagement" minOccurs="0" type="DependencyManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Default dependency information for grouped projects inheriting from 
+            this one. The dependency information here will not be checked.
+            Instead, when a POM derived from this one declares a dependency 
+            described by a groupId and an artifactId (version not necessary), 
+            the entries in here will supply default values for that dependency.
+            Any locally-supplied information for a particular dependency will
+            overwrite any information specified here for that project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="distributionManagement" minOccurs="0" type="DistributionManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Distribution information for a project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+             Properties used to fill in plugin configuration
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Contributor">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Description of a person who has contributed to the project, but who does
+        not have commit privileges. Usually, these contributions come in the
+        form of patches submitted.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="email" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organization" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organizationUrl" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="roles" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The roles the contributor plays in the project.  Each role is
+            described by a &lt;code&gt;role&lt;/code&gt; element, the body of which is a
+            role name.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="role" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="timezone" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The timezone the contributor is in. This is a number in the range -11 to 12.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Properties about the contributor, such as an instant messenger handle.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Profile">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Modifications to the build process which is keyed on some
+        sort of environmental parameter.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The ID of this build profile, for activation
+            purposes.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="activation" minOccurs="0" type="Activation">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The conditional logic which will automatically
+            trigger the inclusion of this profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="build" minOccurs="0" type="BuildBase">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="modules" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The modules to build in addition to the current project</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="module" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="repositories" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="repository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="pluginRepositories" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering plugins</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="pluginRepository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="dependencies" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            &lt;p&gt;
+              This element describes all of the dependencies associated with a
+              project.  Each dependency is described by a
+              &lt;code&gt;dependency&lt;/code&gt; element, which is then described by
+              additional elements (described below).
+            &lt;/p&gt;
+            &lt;p&gt;
+              These dependencies are used to construct a classpath for your 
+              project during the build process.
+            &lt;/p&gt;
+            &lt;p&gt;
+              Maven can automatically download these dependencies from a 
+              &lt;a href="/user-guide.html#Remote%20Repository%20Layout"&gt;remote repository&lt;/a&gt;.
+            &lt;/p&gt;
+            &lt;p&gt;
+              The filename that Maven downloads from the repository is 
+              &lt;code&gt;artifactId-version.jar&lt;/code&gt; where &lt;code&gt;artifactId&lt;/code&gt; 
+              corresponds to the &lt;code&gt;artifactId&lt;/code&gt; element and 
+              &lt;code&gt;version&lt;/code&gt; corresponds to the &lt;code&gt;version&lt;/code&gt; element.
+            &lt;/p&gt;
+            &lt;p&gt;
+              When Maven goes looking for a dependency in the remote repository, 
+              it uses the dependency element to construct the URL to download 
+              from. This URL is defined as:
+            &lt;/p&gt;
+            &lt;div class="source"&gt;
+              &lt;pre&gt;${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}&lt;/pre&gt;
+            &lt;/div&gt;
+            &lt;p&gt;
+              Where
+            &lt;/p&gt;
+            &lt;dl&gt;
+              &lt;dt&gt;repo&lt;/dt&gt;
+              &lt;dd&gt;
+                is the remote repository URL specified by 
+                &lt;code&gt;${maven.repo.remote}&lt;/code&gt;
+              &lt;/dd&gt;
+              
+              &lt;dt&gt;groupId&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;type&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;artifactId&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+              
+              &lt;dt&gt;version&lt;/dt&gt;
+              &lt;dd&gt;is taken from the dependency element&lt;/dd&gt;
+            &lt;/dl&gt;
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="reports" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            NOT A VALID ELEMENT. LISTED TO ALLOW LEGACY REPOSITORY POMs TO PARSE.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="reporting" minOccurs="0" type="Reporting">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element includes the specification of reports to be
+            included in a Maven-generated site.  These reports will be run
+            when a user executes &lt;code&gt;maven site&lt;/code&gt;.  All of the
+            reports will be included in the navigation bar for browsing in
+            the order they are specified.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="dependencyManagement" minOccurs="0" type="DependencyManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Default dependency information for grouped projects inheriting from 
+            this one. The dependency information here will not be checked.
+            Instead, when a POM derived from this one declares a dependency 
+            described by a groupId and an artifactId (version not necessary), 
+            the entries in here will supply default values for that dependency.
+            Any locally-supplied information for a particular dependency will
+            overwrite any information specified here for that project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="distributionManagement" minOccurs="0" type="DistributionManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Distribution information for a project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+             Properties used to fill in plugin configuration
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Activation">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        The conditions within the build runtime environment which will trigger
+        the automatic inclusion of the parent build profile.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="activeByDefault" minOccurs="0" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Flag specifying whether this profile is active as a default.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="jdk" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when a matching JDK is detected.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="os" minOccurs="0" type="ActivationOS">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when matching OS attributes are detected.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="property" minOccurs="0" type="ActivationProperty">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Specifies that this profile will be activated when this System property is specified.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="file" minOccurs="0" type="ActivationFile">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+             Specifies that this profile will be activated based on existence of a file.
+             </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationFile">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        This is the file specification used to activate a profile. The missing value will be a the location
+        of a file that needs to exist, and if it doesn't the profile must run.  On the other hand exists will test 
+        for the existence of the file and if it is there will run the profile.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="missing" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The name of the file that should be missing to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="exists" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The name of the file that should exist to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationProperty">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        This is the property specification used to activate a profile. If the value field is empty,
+        then the existence of the named property will activate the profile, otherwise it does a case-sensitive
+        match against the property value as well.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The name of the property to be used to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="value" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The value of the property to be used to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ActivationOS">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        This is an activator which will detect an operating system's attributes in order to activate
+        its profile.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The name of the OS to be used to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="family" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The general family of the OS to be used to activate a profile (e.g. 'windows')</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="arch" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The architecture of the OS to be used to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The version of the OS to be used to activate a profile</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DependencyManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Section for management of default dependency information for use in a group of POMs.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="dependencies" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The dependencies specified here are not validated until they
+            are referenced in a POM within the group. This allows the
+            specification of a "standard" version for a particular
+            dependency.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Dependency">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="groupId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The project group that produced the dependency, e.g.
+            &lt;code&gt;geronimo&lt;/code&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The unique id for an artifact produced by the project group, e.g.
+            &lt;code&gt;germonimo-jms&lt;/code&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The version of the dependency, e.g. &lt;code&gt;3.2.1&lt;/code&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="type" minOccurs="0" type="xs:string" default="jar">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The type of dependency. This defaults to &lt;code&gt;jar&lt;/code&gt;.
+            Known recognised dependency types are:
+            &lt;ul&gt;
+            &lt;li&gt;&lt;code&gt;jar&lt;/code&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;code&gt;ejb&lt;/code&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;code&gt;plugin&lt;/code&gt;&lt;/li&gt;
+            &lt;/ul&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="classifier" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The classifier of the dependency. This allows distinguishing two artifacts that belong to the same POM but
+            were built differently, and is appended to the filename after the version.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="scope" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The scope of the dependency - compile, runtime, test. Used to
+            calculate the various classpaths used for testing, etc. and for 
+            determining which artifacts to include in a distribution of this
+            project. For more information, see 
+            &lt;a href="http://maven.apache.org/maven2/dependencies-mechanism.html"&gt;Dependency Mechanism&lt;/a&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="systemPath" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">FOR SYSTEM SCOPE ONLY. This specifies the path on the filesystem for this
+            dependency.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="exclusions" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Lists a set of artifacts that should be excluded from this dependency's artifact list when it comes to
+            calculating transitive dependencies.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclusion" minOccurs="0" maxOccurs="unbounded" type="Exclusion"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="optional" minOccurs="0" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Indicates the dependency is optional for use of this library. While the version of the dependency will be
+            taken into account for dependency calculation if the library is used elsewhere, it will not be passed on
+            transitively.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Exclusion">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The artifact id of the project to exclude.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="groupId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The group id of the project to exclude.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Reporting">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">Section for management of reports and configuration</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="excludeDefaults" minOccurs="0" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">If true, then the default reports are not included in the site generation</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="outputDirectory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Where to store all of the generated reports</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="plugins" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The report plugins) to use and their configuration</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="ReportPlugin"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ReportPlugin">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="groupId" minOccurs="0" type="xs:string" default="org.apache.maven.plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The version of the reporter to be used.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="inherited" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="configuration" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="reportSets" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Multiple specifications of a set of reports, each having (possibly) different
+            configuration</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="reportSet" minOccurs="0" maxOccurs="unbounded" type="ReportSet"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ReportSet">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">Represents a set of reports and configuration to be used to generate them.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">The unique id for this report set, to be used during POM inheritance.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="configuration" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="inherited" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="reports" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The list of reports from this reporter/plugin which should be generated from this set 
+            (this configuration)
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="report" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="BuildBase">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="defaultGoal" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The default goal (or phase in Maven 2) to execute when none is specified for the project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="resources" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the resources associated with a 
+            project or unit tests. Each resource is described by a resource 
+            element, which is then described by additional elements (described 
+            &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete 
+            the jar file or to run unit test.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="resource" minOccurs="0" maxOccurs="unbounded" type="Resource"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testResources" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the resources associated with a 
+            project's unit tests. Each resource is described by a resource 
+            element, which is then described by additional elements (described
+            &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete 
+            the jar file or to run unit test.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="testResource" minOccurs="0" maxOccurs="unbounded" type="Resource"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="directory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The directory where all files generated by the build is placed.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="finalName" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The filename (including an extension, but with no path information) that the produced artifact
+            will be called. The default value is artifactId-version.extension (where extension is derived from
+            type).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="filters" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+          The list of filter properties files that are used when filtering is enabled.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="filter" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="pluginManagement" minOccurs="0" type="PluginManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Default plugin information to be made available for reference by 
+            projects derived from this one. This plugin configuration will not
+            be validated or bound to the lifecycle unless referenced. Any local
+            configuration for a given plugin will override the plugin's entire
+            definition here.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="plugins" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The plugins specified here are not validated until they
+            are referenced in a POM within the group. This allows the
+            specification of a "standard" version for a particular
+            plugin.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="Plugin"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Plugin">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="groupId" minOccurs="0" type="xs:string" default="org.apache.maven.plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The version of the plugin to be used.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="extensions" minOccurs="0" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Whether to load Maven extensions (such as packaging and type handlers) from this
+            plugin</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="executions" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Multiple specifications of a set of goals, each having (possibly) different
+            configuration</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execution" minOccurs="0" maxOccurs="unbounded" type="PluginExecution"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="dependencies" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Additional dependencies that this project needs to introduce to the plugin</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="goals" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            NOT A VALID ELEMENT. LISTED TO ALLOW LEGACY REPOSITORY POMs TO PARSE.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="inherited" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Whether this container's configuration should be propagated to child POMs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="configuration" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginExecution">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" minOccurs="0" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="phase" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="goals" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="goal" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="inherited" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Whether this container's configuration should be propagated to child POMs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="configuration" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Section for management of default plugin information for use in a group of POMs.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="plugins" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The plugins specified here are not validated until they
+            are referenced in a POM within the group. This allows the
+            specification of a "standard" version for a particular
+            plugin.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="Plugin"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Resource">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This element describes all of the resources associated with a project or 
+        unit tests. Each resource is described by a resource element, which is 
+        then described by additional elements (described 
+        &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete the 
+        jar file or to run unit test.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="targetPath" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describe the resource target path. For example, if you want that 
+            resource appear into a specific package 
+            (&lt;code&gt;org.apache.maven.messages&lt;/code&gt;), you must specify this 
+            element with this value : &lt;code&gt;org/apache/maven/messages&lt;/code&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="filtering" minOccurs="0" type="xs:boolean" default="false">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Boolean. Describe if resources are filtered or not.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="directory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Describe the directory where the resource is stored.
+            The path may be absolute, or relative to the project.xml file.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="includes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="include" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="excludes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">the description</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DistributionManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        This elements describes all that pertains to distribution for a project.
+        It is primarily used for deployment of artifacts and distributions 
+        produced by the build.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="repository" minOccurs="0" type="DeploymentRepository">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Information needed for deploying to remote repository artifacts
+            generated by the project
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="snapshotRepository" minOccurs="0" type="DeploymentRepository">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Where to deploy snapshots of artifacts to. If not given, it defaults to the repository.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="site" minOccurs="0" type="Site">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Information needed for deploying website files of the project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="downloadUrl" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The URL of the project's download page. If not given users will be referred to the homepage given by
+            &lt;code&gt;url&lt;/code&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="relocation" minOccurs="0" type="Relocation">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Relocation information if the artifact has been moved to a new group/artifactId</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="status" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Gives the status of this artifact in the remote repository. This must not be set in your local
+            project, as it is updated by tools placing it in the reposiory. Valid values are: none (default),
+            converted (repository manager converted this from an Maven 1 POM), partner (directly synced from a partner
+            Maven 2 repository), deployed (was deployed from a Maven 2 instance), verified (has been hand verified as
+            correct and final).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Site">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+         Site contains the information needed
+         for deploying websites.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a deployment locataion.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Human readable name of the deployment location
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+             The url of the location where website is deployed
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Relocation">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">Describes where an artifact has moved to. If any of the values are omitted, it is assumed to be the
+        same as it was before.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="groupId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The group the artifact has moved to</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The new artifact ID of the artifact</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The new version of the artifact</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="message" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">An additional message to show the user about the move, such as the reason.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DeploymentRepository">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Repository contains the information needed for deploying to the remote repoistory
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="uniqueVersion" minOccurs="0" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Whether to assign snapshots a unique version comprised of the timestamp and build number, or to use the same version each time</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="id" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a repository.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Human readable name of the repository
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+             The url of the repository
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="layout" minOccurs="0" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The type of layout this repository uses for locating and storing artifacts - can be "legacy" or
+            "default".</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Repository">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Repository contains the information needed for establishing connections with remote repoistory
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="releases" minOccurs="0" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of releases from this repository</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="snapshots" minOccurs="0" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of snapshots from this repository</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="id" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            A unique identifier for a repository.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Human readable name of the repository
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+             The url of the repository
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="layout" minOccurs="0" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The type of layout this repository uses for locating and storing artifacts - can be "legacy" or
+            "default".</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="RepositoryPolicy">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">Download policy</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="enabled" minOccurs="0" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Whether to use this repository for downloading this type of artifact</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="updatePolicy" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The frequency for downloading updates - can be "always", "daily" (default), "interval:XXX" (in minutes) or
+            "never" (only if it doesn't exist locally).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="checksumPolicy" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">What to do when verification of an artifact checksum fails - warn, fail, etc. Valid values are
+            "fail" or "warn"</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="MailingList">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        This element describes all of the mailing lists associated with
+        a project.  Each mailing list is described by a
+        &lt;code&gt;mailingList&lt;/code&gt; element, which is then described by
+        additional elements (described below).  The auto-generated site
+        documentation references this information.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the mailing list.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="subscribe" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to subscribe to the mailing list.
+            If this is an email address, a
+            &lt;code&gt;mailto:&lt;/code&gt; link will automatically be created when
+            the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="unsubscribe" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to unsubscribe to
+            the mailing list.  If this is an email address, a
+            &lt;code&gt;mailto:&lt;/code&gt; link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="post" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The email address or link that can be used to post to
+            the mailing list.  If this is an email address, a
+            &lt;code&gt;mailto:&lt;/code&gt; link will automatically be created
+            when the documentation is created.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="archive" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The link to a URL where you can browse the mailing list archive.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="otherArchives" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The link to other URLs where you can browse the list archive.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="otherArchive" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Build">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="sourceDirectory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the source
+            of the project. The generated build system will compile
+            the source in this directory when the project is built.
+            The path given is relative to the project descriptor.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="scriptSourceDirectory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the script sources
+            of the project. This directory is meant to be different from the
+            sourceDirectory, in that its contents will be copied to the output
+            directory in most cases (since scripts are interpreted rather than
+            compiled).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="testSourceDirectory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element specifies a directory containing the unit test
+            source of the project. The generated build system will
+            compile these directories when the project is being tested.
+            The unit tests must use the JUnit test framework.
+            The path given is relative to the project descriptor.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="outputDirectory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The directory where compiled application classes are placed.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="testOutputDirectory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The directory where compiled test classes are placed.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="extensions" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">A set of build extensions to use from this project.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="extension" minOccurs="0" maxOccurs="unbounded" type="Extension"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="defaultGoal" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The default goal (or phase in Maven 2) to execute when none is specified for the project.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="resources" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the resources associated with a 
+            project or unit tests. Each resource is described by a resource 
+            element, which is then described by additional elements (described 
+            &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete 
+            the jar file or to run unit test.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="resource" minOccurs="0" maxOccurs="unbounded" type="Resource"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testResources" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the resources associated with a 
+            project's unit tests. Each resource is described by a resource 
+            element, which is then described by additional elements (described
+            &lt;a href="#resource"&gt;below&lt;/a&gt;). These resources are used to complete 
+            the jar file or to run unit test.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="testResource" minOccurs="0" maxOccurs="unbounded" type="Resource"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="directory" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The directory where all files generated by the build is placed.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="finalName" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The filename (including an extension, but with no path information) that the produced artifact
+            will be called. The default value is artifactId-version.extension (where extension is derived from
+            type).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="filters" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+          The list of filter properties files that are used when filtering is enabled.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="filter" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="pluginManagement" minOccurs="0" type="PluginManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Default plugin information to be made available for reference by 
+            projects derived from this one. This plugin configuration will not
+            be validated or bound to the lifecycle unless referenced. Any local
+            configuration for a given plugin will override the plugin's entire
+            definition here.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="plugins" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The plugins specified here are not validated until they
+            are referenced in a POM within the group. This allows the
+            specification of a "standard" version for a particular
+            plugin.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="Plugin"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Extension">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">Describes a build extension to utilise</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="groupId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The group of the extension's artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the extension</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The version of the extension</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="IssueManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Information about the bugtracking system used to manage this project.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="system" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The name of the issue management system i.e. Bugzilla</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Url for the issue management system used by the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Parent">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="artifactId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The artifact id of the project to extend.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="groupId" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The group id of the project to extend.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="version" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The version of the project to extend.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="relativePath" minOccurs="0" type="xs:string" default="../pom.xml">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The relative path of the parent-pom within the project hierarchy</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Prerequisites">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">Describes the prerequisites a project can have</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="maven" minOccurs="0" type="xs:string" default="2.0-beta">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The minimum version of Maven required</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="CiManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="system" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The name of the continuous integration system i.e. Bugzilla</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Url for the continuous integration system used by the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="notifiers" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Configuration for notifying developers/users when a build is 
+            unsuccessful, including user information and notification mode.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="notifier" minOccurs="0" maxOccurs="unbounded" type="Notifier"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Notifier">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+      <xs:documentation source="description">
+        Configures one method for notifying users/developers when a build breaks.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="type" minOccurs="0" type="xs:string" default="mail">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The mechanism used to deliver notifications.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="sendOnError" minOccurs="0" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Send notification on error.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="sendOnFailure" minOccurs="0" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Send notification on failure.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="sendOnSuccess" minOccurs="0" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Send notification on success.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="sendOnWarning" minOccurs="0" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">Send notification on warning.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="address" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Where to send the notification to - eg email address. DEPRECATED.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="configuration" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Extended configuration specific to this notifier goes here.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="License">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Describes the licenses for this project.  This is used to generate
+        the &lt;a href="/plugins/site/index.html"&gt;License&lt;/a&gt; page of
+        the project's web site. Typically the licenses listed for the project
+        are that of the project itself, and not of dependencies.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full legal name of the license.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The official url for the license text.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="distribution" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+              The primary method by which this project may be distributed.
+            &lt;dl&gt;
+              &lt;dt&gt;repo&lt;/dt&gt;
+              &lt;dd&gt;may be downloaded from the Maven repository&lt;/dd&gt;
+              &lt;dt&gt;manual&lt;/dt&gt;
+              &lt;dd&gt;user must manually download and install the dependency.&lt;/dd&gt;
+            &lt;/dl&gt;
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="comments" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Addendum information pertaining to this license.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Developer">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        Information about one of the committers on this project. Derived from
+        &lt;code&gt;Contributor&lt;/code&gt;.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="id" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The username of the developer.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="email" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organization" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="organizationUrl" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="roles" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The roles the contributor plays in the project.  Each role is
+            described by a &lt;code&gt;role&lt;/code&gt; element, the body of which is a
+            role name.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="role" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="timezone" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The timezone the contributor is in. This is a number in the range -11 to 12.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="properties" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            Properties about the contributor, such as an instant messenger handle.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Scm">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="connection" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The source configuration management system URL
+            that describes the repository and how to connect to the
+            repository.  This is used by Maven when
+            &lt;a
+              href="/plugins/dist/index.html"&gt;building versions&lt;/a&gt;
+            from specific ID.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="developerConnection" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            Just like connection, but for developers, i.e. this scm connection
+            will not be read only.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="tag" minOccurs="0" type="xs:string" default="HEAD">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">
+            The tag of current code. By default, it's set to HEAD during development.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0</xs:documentation>
+          <xs:documentation source="description">The URL to the project's browsable CVS repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Organization">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Specifies the organization who produces this project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element name="name" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="url" minOccurs="0" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL to the organization's home page.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file

Added: branches/maven1/upstream/1.1~beta3/xdocs/.htaccess
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/.htaccess	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/.htaccess	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1 @@
+ErrorDocument 404 /errors/404.html

Added: branches/maven1/upstream/1.1~beta3/xdocs/about/features.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/about/features.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/about/features.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Feature Summary</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Feature Summary">
+      <p>
+        The following are the key features of Maven in a nutshell:
+      </p>
+
+      <table>
+        <tr>
+          <th width="30%">Feature</th>
+          <th width="70%">Description</th>
+        </tr>
+        <tr>
+          <td>Model based builds</td>
+          <td>
+            Maven is able to build any number of projects into predefined output types
+            such as a JAR, WAR, or distribution based on metadata about the project, without
+            any need to do any scripting in most cases.
+          </td>
+        </tr>
+        <tr>
+          <td>Coherent site of project information</td>
+          <td>
+            Using the same metadata as for the build process, Maven is able to generate a
+            web site or PDF including any documentation you care to add, and adds to that
+            standard reports about the state of development of the project.
+            Examples of this information can be seen at the bottom of the left-hand navigation of
+            this site under the "Project Information" and "Project Reports" submenus.
+          </td>
+        </tr>
+        <tr>
+          <td>Release management and distribution publication</td>
+          <td>
+            Without much additional configuration, Maven will integrate with your source control
+            system such as CVS 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.
+            Maven is able to publish individual outputs such as a JAR, an archive including other
+            dependencies and documentation, or as a source distribution.
+          </td>
+        </tr>
+        <tr>
+          <td>Dependency management</td>
+          <td>
+            Maven encourages the use of a central repository of JARs and other dependencies. Maven
+            comes with a mechanism that your project's clients can use to
+            download any JARs required for building your project from a
+            central JAR repository much like Perl's CPAN. This allows users
+            of Maven to reuse JARs across projects and encourages communication
+            between projects to ensure backward compatibility issues are
+            dealt with. We are collaborating with the folks at
+            <a href="http://www.ibiblio.org">Ibiblio</a> who have graciously
+            allowed the central repository to live on their servers.
+          </td>
+        </tr>
+        <tr>
+          <td>Gump integration</td>
+          <td>
+            Integration with Gump. For those who are not familiar with Gump it
+            is a tool used at Apache to help projects maintain backward
+            compatibility with their clients. If you have a Maven project
+            descriptor then you can easily participate in nightly Gump
+            builds that will help your project stay abreast of the impact
+            your changes actually have in Java developer community. We are
+            working on our own massive build tool but integration with
+            Gump comes at no cost to Maven users.
+          </td>
+        </tr>
+      </table>
+      <p>
+        Curious who else is using Maven? A few of the many projects doing so can be seen at the
+        <a href="powered.html">Powered by Maven</a> page.
+      </p>
+      <p>
+        For more information on Maven's objectives, see <a href="whatismaven.html">What is Maven?</a>.
+      </p>
+      <p>
+        If you currently use Ant, you might be interested to read about
+        <a href="../using/migrating.html#Maven_for_Ant_Users">Maven from an Ant perspective</a>.
+      </p>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/about/powered.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/about/powered.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/about/powered.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,333 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Powered By Maven</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Powered By Maven">
+      <p>
+        This page contains just a few of the many projects successfully using
+        Maven.  We would be very interested if you would <a href="../mail-lists.html">Contact Us</a>
+        if you are using Maven with your project and would like to be
+        added to this list.
+      </p>
+      <subsection name="Apache Software Foundation">
+      <table>
+        <tr>
+          <td width="20%"><a href="http://jakarta.apache.org/commons/">Jakarta Commons</a></td>
+          <td width="80%">Several reusable Java libraries from the Apache Jakarta community.</td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/bcel/">Jakarta BCEL</a></td>
+          <td>Java Byte Code Engineering Library.</td>
+        </tr>
+        <tr>
+          <td><a href="http://portals.apache.org/jetspeed-1/">Jetspeed</a></td>
+          <td>Portal Framework.</td>
+        </tr>
+        <tr>
+          <td><a href="http://db.apache.org/ojb/">ObjectBridge</a></td>
+          <td>
+            Persistence Layer.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://db.apache.org/torque/">Torque</a></td>
+          <td>
+            An object-relational mapping and model generation tool
+            that was originally developed as part of Turbine (and has
+            long since been decoupled).
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/turbine/">Turbine</a></td>
+          <td>
+            A collection of projects dedicated to the development of web
+            applications using a model-view-controller model.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://ws.apache.org/xmlrpc/">XMLRPC</a></td>
+          <td>
+            Java XMLRPC implementation.
+          </td>
+        </tr>
+      </table>
+      </subsection>
+      <subsection name="Other Projects">
+      <table>
+        <tr>
+          <td width="20%"><a href="http://arara.sourceforge.net/">Arara Organizer</a></td>
+          <td width="80%">
+            An organizer application.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://www.astrogrid.org/maven/build/">Astrogrid</a></td>
+          <td>
+            Astrogrid, is a $6.8M project aimed at building a data-grid for UK astronomy.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://beep4j.org">beep4j</a></td>
+          <td>
+            BEEP Framework for Java (RFC 3080/3081).
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://communitytools.warneronstine.com">Community Tools</a></td>
+          <td>
+            A Web-based community system, bringing together blogging, Slashdot-like news, polling and other community tools.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://dataforge.codehaus.org/">DataForge</a></td>
+          <td>
+            A pipeline based data extraction tool capable of querying a wide variety of data sources.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://daoexamples.sourceforge.net/">DAO (Data Access Objects) Examples</a></td>
+          <td>
+            The daoexamples project provides example implementations of
+            the Data Access Object (DAO) design pattern.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://displaytag.sourceforge.net/11/">DisplayTag</a></td>
+          <td>
+            The display tag library is an open source suite of custom tags that provide high level web 
+            presentation patterns which will work in a MVC model, and provide a significant amount of 
+            functionality while still being simple and straight-forward to use.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://domingo.sourceforge.net/">Domingo</a></td>
+          <td>
+            A simple, consistent, object-oriented easy-to-use interface to the Lotus Notes/Domino Java-API.
+          </td>
+        </tr>
+        <!--
+        <tr>
+          <td><a href="http://drools.org">drools</a></td>
+          <td>
+            Dynamic object-oriented RETE-based rules engine.
+          </td>
+        </tr>
+        -->
+        <tr>
+          <td><a href="http://eyebrowse.tigris.org/">Eyebrowse</a></td>
+          <td>
+            A web-based mailing list archive browser.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://fpsstats.sourceforge.net/">fpsstats</a></td>
+          <td>
+            A J2EE application that analyzes logs from many popular first shooter games.
+          </td>
+        </tr>
+       <tr>
+          <td><a href="http://modules.geotools.org/">GeoTools2</a></td>
+          <td>
+            Open Source GIS Toolkit project.
+          </td>
+        </tr>
+       <tr>
+          <td><a href="http://gsbase.sourceforge.net/">gsbase</a></td>
+          <td>
+            A collection of java utility classes
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://www.gui4j.org/">gui4j</a></td>
+          <td>
+            A framework for describing Java Swing GUIs completely in XML.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jaad.sourceforge.net">JAAD</a></td>
+          <td>
+            JAVA API for TIBCO/ActiveDatabase.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jamecs.sourceforge.net/">Jamecs</a></td>
+          <td>
+            Servlets-based Content Management Framework.
+          </td>
+        </tr>
+        <!--
+        <tr>
+          <td><a href="http://www.javablogs.com/">Java.Blogs</a></td>
+          <td>
+            A portal of Java Web Logs
+          </td>
+        </tr>
+        -->
+        <tr>
+          <td><a href="http://jaimbot.sourceforge.net">JAIMBot (Java AIM Bot)</a></td>
+          <td>
+            A modular architecture for providing services through an AIM client
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jaxen.org">Jaxen</a></td>
+          <td>
+            Universal Java XPath Engine.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jpox.sourceforge.net">jpox</a></td>
+          <td>
+            JPOX is a Java Data Objects (JDO) API implementation.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jsmime.sourceforge.net/">JSMIME</a></td>
+          <td>
+             JSMIME is a Java library to sign and/or encrypt E-Mails using the
+             SMIME standard using many different algorithms and key strengths.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://junitpp.sourceforge.net/">JUNITPP</a></td>
+          <td>
+             This extension to the JUNIT framework allows a test data repository
+              and load/stress test from the command line.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jwebunit.sourceforge.net/">jWebUnit</a></td>
+          <td>
+            A testing framework for web applications.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://melati.org">Melati</a></td>
+          <td>
+            A framework for creating database backed websites
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://messageforge.sourceforge.net">MessageForge</a></td>
+          <td>
+            Comprehensive messaging framework for TIBCO/RV, XML, SOAP, and JMS.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://boss.bekk.no/boss/middlegen/">Middlegen</a></td>
+          <td>
+            Database driven code generator. 
+			Turns your database into EJBs and JDOs with the help of JDBC, XDoclet and Velocity.
+          </td>
+        </tr>
+        <!--
+        <tr>
+          <td><a href="http://millionenklick.sourceforge.net/intro.html">Millionenklicker</a></td>
+          <td>
+             Millionenklick originally is a free game run by web.de at the URL
+             <a href="http://millionenklick.web.de">http://millionenklick.web.de</a>,
+             where you can win up to one million euro daily - for free.
+             MillionenKlicker is a little program 
+             fills in the online forms automagically and plays the game daily.
+          </td>
+        </tr>
+        -->
+        <tr>
+          <td><a href="http://openjms.sourceforge.net">OpenJMS</a></td>
+          <td>
+             OpenJMS is an open source implementation of Sun Microsystems's 
+             Java Message Service API 1.0.2 Specification
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://paneris.net/">PanEris</a></td>
+          <td>
+            All the current software output of the PanEris collabrative
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://patterntesting.sourceforge.net/">PatternTesting</a></td>
+          <td>
+           A testing framework that allows to automatically verify that 
+           Architecture/Design/Best practices recommendations are implemented 
+           correctly in the code.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://pmd.sourceforge.net/">PMD</a></td>
+          <td>
+           PMD - a static code analyzer.  Finds unused variables and whatnot.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://quilt.sourceforge.net/">Quilt</a></td>
+          <td>
+            Test coverage tool.
+          </td>
+        </tr>
+        <!--
+        <tr>
+          <td><a href="http://raccoon.sourceforge.net/">Raccoon</a></td>
+          <td>
+            Framework to omplement TIBCO products in order to help us, the 
+            people on the ground to use TIBCO at it's best and make life easy 
+            for us.
+          </td>
+        </tr>
+        -->
+        <tr>
+          <td><a href="http://rvtest.sourceforge.net">RVTEST</a></td>
+          <td>
+            An extension to JUnit that allows for server, integration,
+            and load testing of TIBCO Rendezvous based applications.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://scope.sourceforge.net">Scope</a></td>
+          <td>
+            Scope is a framework built around an extensible implementation of the
+            Hierarchical Model-View-Controller (HMVC) pattern similar to the pattern
+            described in HMVC: The layered pattern for developing strong client tiers.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://wicket.sourceforge.net/">Wicket</a></td>
+          <td>
+            A component oriented web framework.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://xframe.sourceforge.net/xsddoc/">xsddoc</a></td>
+          <td>
+            A XML Schema documentation generator for W3C XML Schemas.
+          </td>
+        </tr>
+      </table>
+    </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/about/whatismaven.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/about/whatismaven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/about/whatismaven.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,181 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>What is Maven?</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Introduction">
+      <p>
+        Maven was originally started as an attempt to simplify the build
+        processes in the Jakarta Turbine project. There were several
+        projects each with their own Ant build files that were all slightly
+        different and JARs were checked into CVS. We wanted a standard way to
+        build the projects, a clear definition of what the project consisted
+        of, an easy way to publish project information and a way to share JARs
+        across several projects.
+      </p>
+
+      <p>
+        What resulted is a tool that can now be used for building and managing
+        any Java-based project. We hope that we have created something that
+        will make the day-to-day work of Java developers easier and generally
+        help with the comprehension of any Java-based project.
+      </p>
+    </section>
+
+    <section name="Maven's Objectives">
+      <p>
+        Maven's primary goal is to allow a developer to comprehend the
+        complete state of a development effort in the shortest period of
+        time. In order to attain this goal there are several areas of concern
+        that Maven attempts to deal with:
+      </p>
+        <ul>
+          <li>Making the build process easy</li>
+          <li>Providing a uniform build system</li>
+          <li>Providing quality project information</li>
+          <li>Providing guidelines for best practices development</li>
+          <li>Allowing transparent migration to new features</li>
+        </ul>
+
+      <subsection name="Making the build process easy">
+        <p>
+          While using Maven doesn't eliminate the need to know about the
+          underlying mechanisms, Maven does provide a lot of shielding
+          from the details.
+        </p>
+      </subsection>
+
+      <subsection name="Providing a uniform build system">
+        <p>
+          Maven allows a project to build using its project object model (POM) and
+          a set of plugins that are shared by all projects using
+          Maven, providing a uniform build system. Once you familiarize yourself
+          with how one Maven project builds you automatically know how all Maven
+          projects build saving you immense amounts of time when trying to
+          navigate many projects.
+        </p>
+      </subsection>
+
+      <subsection name="Providing quality project information">
+        <p>
+          Maven provides plenty of useful project information that is in
+          part taken from your POM and in part generated from your project's
+          sources. For example, Maven can provide:
+        </p>
+
+          <ul>
+            <li>Change log document created directly from source control.</li>
+            <li>Cross referenced sources</li>
+            <li>Mailing lists</li>
+            <li>Dependency list</li>
+            <li>Unit test reports including coverage</li>
+          </ul>
+
+        <p>
+          As Maven improves the information set provided will improve, all of
+          which will be transparent to users of Maven.
+        </p>
+
+        <p>
+          Other products can also provide Maven plugins to allow their set of
+          project information alongside some of the standard information given by
+          Maven, all still based from the POM.
+        </p>
+      </subsection>
+
+      <subsection name="Providing guidelines for best practices development">
+        <p>
+          Maven aims to gather current principles for best practices development, and
+          make it easy to guide a project in that direction.
+        </p>
+        <p>
+          For example, specification, execution, and reporting of unit tests are part of
+          the normal build cycle using Maven.
+          Current unit testing best practices were used as guidelines:
+        </p>
+          <ul>
+            <li>Keeping your test source code in a separate, but parallel source tree</li>
+            <li>Using test case naming conventions to locate and execute tests</li>
+            <li>Have test cases setup their environment and don't rely on customizing the build 
+                for test preparation.</li>
+          </ul>
+        <p>
+          Maven also aims to assist in project workflow such as release management and
+          issue tracking.
+        </p>
+        <p>
+          Maven also suggests some guidelines on how to layout your project's directory structure
+          so that once you learn the layout you can easily navigate any other project that uses
+          Maven and the same defaults.
+        </p>
+      </subsection>
+
+      <subsection name="Allowing transparent migration to new features">
+        <p>
+          Maven provides an easy way for Maven clients to update their installations
+          so that they can take advantage of any changes that been made to
+          Maven itself.
+        </p>
+        <p>
+          Installation of new or updated plugins from third parties or Maven itself has
+          been made trivial for this reason.
+        </p>
+      </subsection>
+    </section>
+    <section name="What is Maven Not?">
+      <p>
+        You may have heard some of the following things about Maven:
+      </p>
+        <ul>
+          <li>Maven is a site and documentation tool</li>
+          <li>Maven extends Ant to let you download dependencies</li>
+          <li>Maven is a set of reusable Ant scriptlets</li>
+        </ul>
+      <p>
+        While Maven does these things, as you can read above in the "What is Maven?" section,
+        these are not the only features Maven has, and it's objectives are quite different.
+      </p>
+      <p>
+        Maven does encourage best practices, but we realise that some projects may not fit with
+        these ideals for historical reasons.  While Maven is designed to be flexible, to an extent, in these
+        situations and to the needs of different projects, it can not cater to every situation without making
+        compromises to the integrity of its objectives.
+      </p>
+      <p>
+        If you decide to use Maven, and have an unusual build structure that you cannot reorganise, you may
+        have to forgo some features or the use of Maven altogether.
+      </p>
+    </section>
+    <section name="How Does Maven Compare to Ant?">
+      <p>
+        More information on this topic can be found in 
+        <a href="../using/migrating.html#Maven_for_Ant_Users">Maven for Ant Users</a>.
+      </p>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/contributing/help.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/contributing/help.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/contributing/help.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>How to Help</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="How to Help">
+      <p>
+        As with any open source project, there are several ways you can help:
+      </p>
+      <ul>
+        <li>Join the <a href="../mail-lists.html">mailing list</a> and answer other user's questions</li>
+        <li>Report bugs, feature requests and other issues in the <a href="../issue-tracking.html">issue tracking</a>
+          application.</li>
+        <li>
+          <a href="../developers/building-from-source.html">Build Maven from sources</a> and
+          <a href="patches.html">submit patches</a> to reported issues
+          (both those you find, or that others have filed)
+        </li>
+      </ul>
+      <p>
+        Your participation in the community is much appreciated!
+      </p>
+    </section>
+    <section name="Why Would I Want to Help?">
+      <p>
+        There are several reasons these are good things.
+      </p>
+      <ul>
+        <li>By answering other people's questions, you can learn more for yourself</li>
+        <li>By submitting your own fixes, they get incorporated faster</li>
+        <li>By reporting issues, you ensure that bugs don't get missed, or forgotten</li>
+        <li>You are giving back to a community that has given you software for free</li>
+      </ul>
+    </section>
+    <section name="How do I Join the Project?">
+      <p>
+        Projects at Apache operate under a meritocracy, meaning those that the developers notice participating to a
+        high extent will be invited to join the project as a committer.
+      </p>
+      <p>
+        This is as much based on personality and ability to work with other developers and the community as it is with
+        proven technical ability. Being unhelpful to other users, or obviously looking to become a committer for bragging
+        rights and nothing else is frowned upon, as is asking to be made a committer without having contributed
+        sufficiently to be invited.
+      </p>
+    </section>
+  </body>
+</document>
+


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/contributing/help.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/contributing/patches.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/contributing/patches.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/contributing/patches.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Submitting Patches</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="How to Submit a Patch">
+      <p>
+        When you fix a bug in the Maven source code, you will submit a patch to the <a href="../issue-tracking.html">issue tracking system</a> for developers to apply.
+      </p>
+      <p>
+        First, if this is a new issue of your own that is being fixed, ensure that the issue is actually in the issue
+        tracking system. Look for an existing one, and if it is not found, create a new one.
+      </p>
+      <p>
+        Ensure that you have done a full update from source control recently, and have tested your changes. If it is a
+        new feature or changes the bevahiour of something, make sure to update the relevant documentation. You may
+        even like to add a <code>changes.xml</code> item describing your change, the issue, and who you are in the
+        <code>due-to="Your Name"</code> attribute.
+      </p>
+      <p>
+        You should use the Maven code style for your contributions, and be careful to limit changes only to the
+        relevant areas of the submission.
+      </p>
+      <p>
+        Make sure any new files you've created that you want to add have had <code>svn add</code> run on them first.
+      </p>
+      <p>
+        Prepare the patch by going to the top level of the checkout (the <code>trunk</code>), and running:
+      </p>
+      <source>svn diff >ISSUE-NUMBER.patch</source>
+      <p>
+        Replace ISSUE-NUMBER in the filename with the actual ticket number in the issue tracking system.
+        Finally, attach the file to the issue tracking system as an attachment.
+      </p>
+      <subsection name="Checklist">
+        <p>
+          Here is a quick checklist for submitting patches. By complying to these
+          points, you make it easier for committers to review your patch and
+          therefore you increase the chances that it gets applied quickly.
+        </p>
+        <dl>
+          <dt>Documentation</dt>
+          <dd>
+            Update the documentation. This is especially important for new features
+            and behavioural changes. For bug fixes you should at least put an entry
+            into the <code>xdocs/changes.xml</code> file.
+          </dd>
+          <dt>Tests</dt>
+          <dd>
+            Include test cases. Committers don't always have the resources to check
+            whether your patch actually works. Test cases are helpful by showing
+            what your patch is actually supposed to do.
+          </dd>
+          <dt>Conventions</dt>
+          <dd>
+            Comply with the Maven
+            <a href="http://maven.apache.org/guides/development/guide-m2-development.html#Maven Code Style">code style</a>
+            and other <a href="../reference/conventions.html">conventions</a>.
+          </dd>
+          <dt>Compatibility</dt>
+          <dd>
+            Make sure your patch doesn't break anything in other parts of Maven.
+            Ideally you would run a complete
+            <a href="../developers/building-from-source.html">bootstrap</a> to
+            check that no test cases are broken.
+          </dd>
+          <dt>License</dt>
+          <dd>
+            Review the licenses. For any files that you add, make sure that you
+            are actually allowed to do so and document it. By submitting a patch
+            to Maven, you implicitly agree to put it under the
+            <a href="../license.html">ASL2</a> license.
+          </dd>
+          <dt>Stay informed</dt>
+          <dd>
+            Follow the status of your issue. If you do not regularly read the mailing lists,
+            it is important that you 'watch' the JIRA issue where you attached your patch
+            (there is a 'Watch it' link on the left-side menu). Like that you will
+            be notified of any changes or updates regarding the issue and committers
+            can contact you if they have any questions.
+          </dd>
+        </dl>
+      </subsection>
+    </section>
+  </body>
+</document>
+


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/contributing/patches.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/developers/apache.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/developers/apache.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/developers/apache.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Apache Resources</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Apache Resources">
+      <p>
+        The following are some resources available to Apache developers.
+      </p>
+      <ul>
+        <li><a href="http://www.apache.org/dev/">Developer Resources</a></li>
+        <li><a href="http://www.apache.org/foundation/">About the Apache Software Foundation</a></li>
+        <li><a href="http://www.apache.org/dev/committers.html">Committer FAQ</a></li>
+        <li><a href="http://people.apache.org/~vgritsenko/stats/projects/maven.html">Web Stats</a></li>
+        <li><a href="http://wiki.apache.org/general/">Apache Wiki</a></li>
+      </ul>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/developers/building-from-source.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/developers/building-from-source.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/developers/building-from-source.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,249 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Building Maven from Source</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <p>
+        Building Maven is a little different than your typical Java
+        build because Maven uses itself to build itself!  So, in order
+        to successfully build Maven from scratch, a bootstrapping process
+        is required to jumpstart the build. Alternatively, if you already
+        have Maven installed and would just like to build a newer version,
+        you can follow <a href="#Building_Maven_with_Maven">these instructions</a>.
+      </p>
+    </section>
+    <section name="Bootstrapping Maven with Ant">
+      <p>
+        Before you can build Maven, you'll need to make sure you have <a
+        href="http://ant.apache.org/">Ant</a> 1.5 or higher
+        installed on your system.
+      </p>
+      <p>
+        You also must have the <code>MAVEN_HOME</code> environment variable set. The
+        Maven installation is encapsulated in the directory specified by 
+        <code>MAVEN_HOME</code>: scripts, Maven's run-time library, plug-ins and the
+        local repository. <code>MAVEN_HOME</code> must not end with a path delimiter - 
+        ie. <code>/</code> or <code>\</code>
+      </p>
+      <p>
+        <b>Note:</b> if you already have Maven installed, <code>MAVEN_HOME</code>
+        is probably already set. Unless you really want to delete that installation
+        completely and install the new build there, make sure you change it before
+        bootstrapping!
+      </p>
+      <p>
+        For the impatient reader that doesn't want to read the rest of
+        this document, type the following:
+      </p>
+      <source><![CDATA[ant -f build-bootstrap.xml]]></source>
+      <p>
+        If you are new to Maven, it is recommended that you read the
+        rest of the document as it explains the build process in a
+        little more detail.
+      </p>
+      <p>
+        Before you can begin the process, you'll need to download the
+        source from the <code>maven</code> and <code>maven-plugins</code>
+        Subversion repositories. For example, using the command line:
+      </p>
+      <source><![CDATA[
+svn co http://svn.apache.org/repos/asf/maven/maven-1/trunks maven-1]]></source>
+      <p>
+        After setting the value of <code>MAVEN_HOME</code> and
+        pulling down the sources you are now ready to
+        build and install Maven on your system using the bootstrapping
+        process.  As mentioned earlier, the bootstrapping process is
+        defined in <code>build-bootstrap.xml</code>, and can be
+        initiated by typing the following from the
+        <code>maven-1/core</code> directory:
+      </p>
+      <source><![CDATA[ant -f build-bootstrap.xml]]></source>
+      <p>
+        After initially constructing a basic Maven install with Ant, the bootstrap
+        will use Maven to rebuild itself.
+      </p>
+      <p>
+        If you had any problems during building, refer to the <a href="#Troubleshooting">troubleshooting</a>
+        section below.
+      </p>
+      <p>
+        Thats it! Congratulations!  You have now built Maven with
+        Maven and installed Maven on your system!
+      </p>
+    </section>
+    
+    <section name="Building Maven with Maven">
+      <p>
+        This section explains how to build Maven with Maven already installed.
+        This assumes that you have the <code>maven-1/core</code> tree checked out.
+        Unlike the bootstrap, the <code>maven-1/plugins</code> tree is not required
+        as the following goals will download (if necessary) the latest plugin releases
+        and use those instead of building them from sources. If you wish to do this, please
+        read <a href="#Building_Plugins_From_Sources">Building Plugins From Sources</a>.
+      </p>
+      <p>
+        Start by running <code>maven -u</code> in the <code>maven-1/core</code> directory.
+        This will give you a quick overview of the defined goals.
+      </p>
+      <subsection name="Building a Complete Maven Installation">
+        <p>
+          If you are building a different version of Maven to the one currently installed,
+          or the one installed is your "clean" installation, you can build a complete Maven
+          installation with the following goals invoked from the <code>core</code> tree.
+        </p>
+        <table>
+          <tr>
+            <td width="20%"><code>maven:build-install</code></td>
+            <td width="80%">
+              This builds a complete install in the <code>target/installer/maven-X.Y.Z</code> directory.
+              Note that you must copy this to your desired location yourself as it cannot delete and
+              overwrite <code>MAVEN_HOME</code> as that is the location of the currently running version
+              of Maven.
+            </td> 
+          </tr>
+          <tr>
+            <td><code>maven:installer</code></td>
+            <td>
+              This builds a complete install in the <code>target/installer/maven-X.Y.Z</code> directory,
+              as above, and then generates a .tar.gz, .tar.bz2, .zip, and .exe (if on Windows with NSIS
+              installed). These can be used like the distributed binaries to install Maven elsewhere.
+              Note that you must install this to your desired location yourself as it cannot delete and
+              overwrite <code>MAVEN_HOME</code> as that is the location of the currently running version
+              of Maven.
+            </td> 
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Working on a Development Version of Maven">
+        <p>
+          If you are developing a patch for Maven itself, you need a development installation of Maven that
+          you can use and change. This should be set up using the instructions
+          <a href="#Building_a_Complete_Maven_Installation">above</a> using Maven, or by
+          <a href="#Bootstrapping_Maven_with_Ant">bootstrapping</a>.
+        </p>
+        <p>
+          Note that when doing this, if you happen to make a valid Maven JAR that has a bug, you may render
+          your current Maven installation unable to rebuild itself. You should keep a clean copy to use in
+          this case, otherwise you will have to rebuild it from scratch as specified above, or by bootstrapping.
+        </p>
+        <table>
+          <tr>
+            <td width="20%"><code>maven:jar-install</code></td>
+            <td width="80%">
+              This builds <code>maven.jar</code> from the sources, runs all of the unit tests, and installs it
+              into the same directory as the running version of Maven (<code>MAVEN_HOME/lib</code>).
+            </td> 
+          </tr>
+          <tr>
+            <td><code>maven:run-touchstone</code></td>
+            <td>
+              This will run the touchstone tests on the currently version of Maven. This should be run after
+              <code>maven:jar-install</code> when you are happy with your code. The touchstone tests are 
+              actually a set of integration tests that sanity check various features, and quirks expected by 
+              users of Maven for backwards compatibility.
+            </td> 
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Building Plugins From Sources">
+        <p>
+          To build the plugins from sources, you need to have <code>maven-1/plugins</code>
+          checked out from Subversion at the same level as the <code>maven-1/core</code> tree (not underneath it).
+        </p>
+        <p>
+          These goals have some common logic: they invoke the reactor on the plugins 
+          directory and use the properties <code>maven.plugins.include</code> and <code>maven.plugins.exclude</code>
+          to determine which to build and/or install. You can customise these variables by copying the values from
+          <code>project.properties</code> into <code>build.properties</code> in the same directory and changing them.
+        </p>
+        <p>
+          It is also possible to use the <code>multiproject</code> goals to do this from the <code>maven-plugins</code>
+          directory. For more information, refer to the <a href="http://maven.apache.org/maven-1.x/plugins/">Maven Plugins project
+          documentation.</a>
+        </p>
+        <table>
+          <tr>
+            <td width="20%">plugins:install-all</td>
+            <td width="80%">
+              Clean, build and install each Maven plugin into the running Maven installation (though they will not
+              be utilised until next execution). This is the most commonly used goal.
+            </td>
+          </tr>
+          <tr>
+            <td>plugins:test-all</td>
+            <td>Test each Maven plugin. This runs any integration tests available for individual plugins.</td>
+          </tr>
+          <tr>
+            <td>plugins:repository-deploy-all</td>
+            <td>
+              Deploy all plugins in a remote repository.
+            </td>
+          </tr>
+          <tr>
+            <td>plugins:site</td>
+            <td>
+              Create the web site root for all plugins.
+            </td>
+          </tr>
+          <tr>
+            <td>plugins:build-all-sites</td>
+            <td>
+              Create the web site for all plugins and for the root site.
+            </td>
+          </tr>
+          <tr>
+            <td>plugins:deploy-all-sites</td>
+            <td>
+              Deploy the web site for all plugins and for the root site.
+            </td>
+          </tr>
+          <tr>
+            <td>plugins:publish-all-sites</td>
+            <td>
+              Publish the web site for all plugins and for the root site.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+
+    <section name="Troubleshooting">
+      <p>
+        If you are behind a proxy, you must define proxy parameters for
+        building Maven. See this <a href="../faq.html#build-firewall">FAQ</a> for
+        details.
+      </p>
+      <p>
+        If you get an OutofMemoryError during bootstrap, try setting an environment
+        variable MAVEN_OPTS to provide more memory, e.g. 
+      </p>
+      <source>MAVEN_OPTS=-XX:MaxPermSize=128m -Xmx512m</source>
+    </section>
+
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/developers/committers.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/developers/committers.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/developers/committers.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Committers Guide</title>
+    <author email="ltheussl at apache.org">Lukas Theussl</author>
+  </properties>
+  <body>
+    <section name="Maven Committers Guide">
+      <p>
+        Developers are asked to comply with the following development guidelines.
+        Code that does not comply with the guidelines should not be committed.
+        It should be our aim to fix all of the exceptions to these
+        guidelines prior to a release.
+      </p>
+      <subsection name="Coding Style">
+        <p>
+          Please follow the Maven
+          <a href="http://maven.apache.org/guides/development/guide-m2-development.html#Maven Code Style">Code Style Conventions</a>.
+          As part of the maven
+          build process, style checking is performed by the Checkstyle plugin,
+          using the properties specified in <code>checkstyle.xml</code>.
+          Committed code should generate no Checkstyle errors.  One thing
+          that Checkstyle will complain about is tabs included in the source code.
+          Please make sure to set your IDE or editor to use spaces instead of tabs.
+        </p>
+        <p>
+          Committers should make sure that svn properties are correctly set on
+          files added to the repository. Please read the
+          <a href="http://www.apache.org/dev/version-control.html#https-svn">Committer Subversion Access</a>
+          document and set your svn client with this properties file:
+          <a href="http://maven.apache.org/developers/svn-eol-style.txt">svn-eol-style.txt</a>
+        </p>
+      </subsection>
+      <subsection name="Documentation">
+       <ul>
+        <li>
+         Committed code should include full javadoc.
+        </li>
+        <li>
+         All component contracts should be fully specified in the javadoc comments.
+        </li>
+        <li>
+         Additions and enhancements should include updates to the documentation.
+        </li>
+        <li>
+         All major changes should include an entry in <code>changes.xml</code>.
+        </li>
+       </ul>
+      </subsection>
+      <subsection name="Unit Tests">
+       <ul>
+        <li>
+         Committed code should include unit tests.
+        </li>
+        <li>
+         Unit tests should provide full path coverage.
+        </li>
+       </ul>
+      </subsection>
+      <subsection name="Licensing and copyright">
+       <ul>
+        <li>
+         All new source file submissions <i>must</i> include the Apache Software
+         License in a comment that begins the file.
+        </li>
+        <li>
+         All contributions <i>must</i> comply with the terms of the Apache 
+         <a href="http://www.apache.org/licenses/cla.pdf">Contributor License
+         Agreement (CLA)</a>.
+        </li>
+        <li>
+          Any questions about copyright or patent issues should be raised on
+          the dev mailing list before contributing or committing code.
+         </li>
+       </ul>
+      </subsection>
+
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/developers/committers.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/developers/documentation-conventions.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/developers/documentation-conventions.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/developers/documentation-conventions.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Documentation Conventions</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Documentation Conventions">
+      <!-- TODO [later]: 
+DRAFT - needs to be reviewed by developers
+
+Think about things like:
+* practical walkthroughs
+* number of clicks
+Key points:
+ * adapting not integrating: integrating maven sounds a bit like embedding
+ * make it project centric
+ * maven is not just a build tool
+
+Some of this doco should also be general best practices
+
+More:
+- top level site that can point people in the right direction ASAP
+- top level site is pure site, doesn't care about versions of specifics
+- sub sites should be published by version, with the last release going to /maven/current, rest to /maven/1.1-SNAPSHOT
+- site should not have stuff specific to a product though (documentation) , as that must be available in "maven site"
+- navigation, styles might be inherited, but not checked out - artifacts!
+- how can "current" know about future versions for the nav? Must need to be republished?
+- how does the top site aggregate navigation from subprojects (eg, maven top site should include maven bits) - or should it? Maybe that's structural - If maven is the focus then it remains the top level site and links the subprojects in... but this doesn't necessarily make sense for the documentation aspect.
+- how do we work the multiproject aspect with versions - eg the plugins?
+- how do we handle archiving of versions nicely? Maybe just use /release/ and /development/.
+- on versioning - perhaps just publish latest and make versions available for download?
+- should structure be independant of content, easing development of multi-language sites?
+-->
+      <p>...</p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/developers/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/developers/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/developers/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Developers</title>
+    <author email="ltheussl at apache.org">Lukas Theussl</author>
+  </properties>
+  <body>
+    <section name="Resources for Maven Developers">
+      <p>
+        Here is a short collection of links to relevant
+        information for Maven developers.
+      </p>
+      <ul>
+        <!--<li><a href="documentation-conventions.html">Documenting</a></li>-->
+        <li><a href="committers.html">Committers Guide</a></li>
+        <li><a href="making-releases.html">Making Releases</a></li>
+        <li><a href="apache.html">Apache Resources</a></li>
+      </ul>
+      <p>
+        Check also the documents listed on the
+        <a href="../development-process.html">Development Process</a> page.
+      </p>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/developers/index.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/developers/making-releases.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/developers/making-releases.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/developers/making-releases.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+ /*
+  * Copyright 2001-2004 The Apache Software Foundation.
+  * 
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  * 
+  *      http://www.apache.org/licenses/LICENSE-2.0
+  * 
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+-->
+<document>
+  <properties>
+    <title>Releasing Plugins</title>
+    <author email="brett at apache.org">Brett Porter</author>
+    <author email="aheritier at apache.org">Arnaud Heritier</author>
+  </properties>
+  <body>
+    <section name="Following Best Practices">
+      <p>At Maven, we eat our own dog food! Please make sure you are familiar with the <a href="../using/bestpractices.html">Best Practices</a> document and follow those techniques.</p>
+    </section>
+    <section name="Prerequesites">
+      <p>You have do these steps only for your first release.</p>
+      <subsection name="Setup your maven settings">
+        <p>You must define the following properties in <code>~/build.properties</code>. (Note: you may want to put these in <code>maven-plugins/plugin-parent/build.properties</code> instead if you need to define them differently for other projects).</p>
+        <ul>
+          <li><code>maven.repo.apache.releases.username</code> - your apache username</li>
+          <li><code>maven.repo.apache.releases.privatekey</code> - the filename of your SSH private key</li>
+          <li><code>maven.repo.apache.releases.passphrase</code> - the passphrase for your private key (<b>not</b> your Apache password)</li>
+          <li><code>maven.announcement.mail.from</code> - Your name and email address, as subscribed to the users and developers mailing lists, e.g. <code>Brett Porter &lt;brett at apache.org&gt;</code></li>
+          <li><code>maven.announcement.mail.server</code> - The SMTP server to use for sending the announcement mail.</li>
+        </ul>
+      </subsection>
+      <subsection name="Generate a code signing key (PGP)">
+        <p>You'll find some useful information here : <a href="http://www.apache.org/dev/release-signing.html" target="_blank">http://www.apache.org/dev/release-signing.html</a>.</p>
+        <p>To sum up :</p>
+        <ol>
+          <li>
+            <p>Create your PGP key : </p><source>$ gpg --gen-key</source>
+            <p>Keep the default settings.</p>
+            <p>Enter your personal information :</p>
+            <source><![CDATA[
+Real name: FirstName LastName
+Email address: YourEMail at apache.org
+Comment: CODE SIGNING KEY
+]]></source>
+            <p>It creates a key with the following user ID like this :</p><source>FirstName LastName (CODE SIGNING KEY) &lt;YourEMail @ apache.org&gt;</source>
+          </li>
+          <li>
+            <p>Export it :</p>
+            <source>$ (gpg --list-sigs "FirstName LastName" &amp;&amp; gpg --armor --export "FirstName LastName") > ~/MY_KEYS</source>
+          </li>
+          <li>
+            <p>And append the result to the KEYS file stored in the root directory of the m1's core in subversion.</p>
+          </li>
+          <li>
+            <p>To finish, create your own script using the following template to sign your releases and don't forget to add it in your PATH :</p>
+            <source><![CDATA[
+#!/bin/sh
+# Use your PGP key ID here :
+MY_KEY="FirstName LastName (CODE SIGNING KEY) <YourEMail at apache.org>"
+echo -n "PGP Key Password: "
+stty -echo
+read PASSWORD
+stty echo
+echo ""
+for FILE in $(find . -not '(' -name "*.md5" -or -name "*.sha1" -or -name "*.asc" -or -name "*-version" ')' -and -type f -and -user $USER) ; do
+  signature=${FILE}.asc
+  if [ ! -f ${signature} ]
+  then
+    echo -n "Creating: ${signature} ... "
+    echo "$PASSWORD" | gpg --default-key "$MY_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE" && echo done.
+    gpg --verify "$FILE.asc" "$FILE"
+  fi
+  signature=${FILE}.md5
+  if [ ! -f ${signature} ]
+  then
+    echo -n "Creating: ${signature} ... "
+    md5 -q "$FILE" | cut "-d " -f1 > "$FILE.md5" && echo done.
+  fi
+  signature=${FILE}.sha1
+  if [ ! -f ${signature} ]
+  then
+    echo -n "Creating: ${signature} ... "
+    sha1 -q "$FILE" | cut "-d " -f1 > "$FILE.sha1" && echo done.
+  fi
+done
+echo "Finished!"
+]]></source>
+            <p>This script will ask you your pgp key password and will recursively sign all artefacts YOU deployed and which were not yet signed.</p>
+          </li>
+        </ol>
+      </subsection>
+    </section>
+    <section name="Releasing Maven or a Plugin">
+      <p>For more general notes on making a release, please see the <a href="../using/releasing.html">Releasing</a> documentation in the User's Guide.</p>
+      <ul>
+        <li>
+          <p>Run <code>maven scm:prepare-release</code> and enter the appropriate tag (<code>maven-[projectname]_[major]_[minor]</code>) and version.</p>
+        </li>
+        <li>
+          <p>Produce a clean build using <code>maven -Dmaven.repo.list=apache.releases -Dmaven.site.deploy.live=true scm:perform-release</code>. When prompted for the tag, enter the one used in the previous step. When prompted for the goal, enter <code>plugin:repository-deploy,source:deploy,javadoc:deploy,site:deploy</code> for plugins, or <code>jar:deploy,source:deploy,javadoc:deploy,site:deploy</code> for an individual JAR. To release a Maven distribution, see below.</p>
+        </li>
+        <li>
+          <p>Sign your artefacts. Logon to people.apache.org and launch your signing script in the directory <code>/www/people.apache.org/repo/m1-ibiblio-rsync-repository/maven/</code></p>
+        </li>
+        <li>
+          <p>Check for the new version at <a href="http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/plugins/">http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/plugins/</a> or <a href="http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/jars/">http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/jars/</a>.</p>
+        </li>
+        <li>
+          <p>Go to the <a href="http://jira.codehaus.org/secure/project/ViewProjects.jspa">JIRA administration page</a> for the Maven subproject you have just released (Note that you need to be a JIRA administrator for this project) and <strong>release</strong> the version. Also make sure to <strong>add</strong> a new version for the following development version. This is required so that developers can assign a "fix for" version to issues.</p>
+        </li>
+        <li>
+          <p>Run <code>maven announcement</code>. Edit this, then send it in a release email to the Maven user and developer lists. If you are happy with the default announcement, run <code>maven announcement:mail</code>.</p>
+        </li>
+      </ul>
+    </section>
+    <section name="Releasing a Maven Distribution">
+      <p>There are a couple of additional steps when releasing a Maven distribution.</p>
+      <ul>
+        <li>
+          <p>Run <code>maven maven:build-plugin-profile</code> and check the versions are what you expect to distribute</p>
+        </li>
+        <li>
+          <p>Update the website files for the download links and release notes</p>
+        </li>
+        <li>
+          <p>Run <code>scm:perform-release</code> with the goals <code>jar:deploy,source:deploy,javadoc:deploy,maven:installer</code>. Do this on Windows so that the .exe file is generated</p>
+        </li>
+        <li>
+          <p>Manually upload the distributions to the distribution location (under <code>/binaries/</code>) and sign them.</p>
+        </li>
+        <li>
+          <p>Run <code>scm:perform-release</code> with the <code>site:deploy</code> goal, and mail out release notes</p>
+        </li>
+      </ul>
+    </section>
+    <section name="Some related FAQs">
+      <ul>
+        <li>
+          <p><b>Q</b> : When would I do a release?</p>
+          <p><b>A</b> : Plugins have their own release cycle now. So you can make a release whenever there is a change that you want to get into the hands of the users. This should be for major bugfixes and thoroughly tested and complete new features. You may also decide to make periodical releases every couple of months if there have only been minor bugfixes.</p>
+        </li>
+        <li>
+          <p><b>Q</b> : What is the convention for versioning?</p>
+          <p><b>A</b> : Rewrites and changes that break compatibility are a major version number change. Announcements for these plugins should details what old functionality would be broken and link to a migration document on the plugin project web site. Minor version increments are for feature enhancements, major bugfixes and groups of bugfixes. These versions can go beyond 10: eg <code>1.13</code>. A third version increment is optional and signifies minor updates. These may also be deployed as snapshots or users may just be asked to build out of CVS to acquire these fixes.</p>
+        </li>
+        <li>
+          <p><b>Q</b> : Who decides when a plugin can be released?</p>
+          <p><b>A</b> : The lead developer of a plugin has the responsibility for making sure releases happen, but must first hold a vote on the Maven Developer list before cutting the release. The vote should detail the changes made and confirm that the testing has been performed and that there is no pending work that should hold up the release.</p>
+        </li>
+      </ul>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/development/branches.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/development/branches.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/development/branches.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<document>
+
+  <properties>
+    <title>CVS Branches</title>
+    <author email="rafal at apache.org">Rafal Krzewski</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+
+  <section name="CVS Branches">
+    <p>
+      The branches are a feature of CVS that allows the development to be partitioned
+      so that one stream does not affect the other. They prove to be useful, when
+      there is a need to perform modifications that are hard to perform as a
+      consecutive gradual transitions that work well in the usual course of
+      development. When files that are depended upon by numerous other files need to
+      be substantially changed all the other would have to be modified along with
+      them. That would require that a lone developer performs all these changes in his
+      own snapshot and then checks them all in, causing the sources to leap forward.
+      As your project grows, situations arise that this is no longer possible. It's good to
+      have version control on the gradual changes as opposed to quantum-leap changes.
+      It's also important to have the larges set of eyes possible looking at the code
+      as soon as possible. On the other hand, we strive to keep Turbine CVS tree
+      compilable and working at all times. This calls for usage of branches whenever
+      vast modifications of the sources are needed.
+    </p>
+
+    <p>
+      The <a href="http://cvsbook.red-bean.com/">CVS book</a> describes multiple
+      approaches to performing development using branches. We decided that the
+      simplest approach called <em>Flying Fish technique</em> will fit our needs best.
+      It involves creating a branch when there is a need for a separate thread of
+      development, and abandoning the branch once all the changes are merged with the
+      trunk. If need arises for separated development on the same subject, a brand new
+      branch is created. This saves us the additional complexity of merging changes
+      back and forth between the trunk and the branches and keeping track of what was
+      merged into where. We want the things to be as simple as possible.
+    </p>
+
+    <p>
+      The naming scheme used for the branches is as following: The name of the branch
+      is composed of a name describing the subject being worked on, followed by an
+      underscore and a two digit number used to distinguish multiple branches  for the
+      same subject.<br/>
+
+      Actual tag names are then:<br/>
+      <em>subject</em>_<em>number</em>-sprout for marking the revision of the  trunk
+      where the branch diverged <br/>
+      <em>subject</em>_<em>number</em>-branch for the branch itself <br/>
+      <em>subject</em>_<em>number</em>-before-merge for marking the last revision of
+      files before merging in the branch <br/>
+      <em>subject</em>_<em>number</em>-merge for marking the revision of the trunk
+      with changes made on the branch merged in <br/>
+    </p>
+
+    <p>
+      Below, you can find a list of branches that were used during the development of
+      ${project.name}. The 'coordinating person' is responsible for exchange of information
+      between developers, maintaining the branches and timely merging the changes
+      into the trunk (closing the branch). The shorter a branch stays outside the
+      trunk, the better, because that decreases the number of conflict that will arise
+      while merging back. Developers that are working on the trunk of the  CVS should
+      not make modifications to the code named in 'affected sources' to prevent
+      merging  conflicts. Instead, they should direct all requests / patches to the
+      coordinating person. Developers wishing to join the development of the branching
+      code, should contact the coordinating person.
+    </p>
+
+    <p>
+      If you wish to learn more about branches, download the CVS book at
+      <a href="http://cvsbook.red-bean.com/">Red Bean.com</a>, or browse a
+      <a href="http://www.durak.org/cvswebsites/doc/cvs_5.php3#SEC54">CVS manual</a>
+      online.
+    </p>
+
+  </section>
+
+  <!-- Incorporate branch information stored in the project descriptor -->
+
+</body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/development/deprecation.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/development/deprecation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/development/deprecation.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<document>
+  <properties>
+    <title>Deprecation Policy</title>
+    <author email="jon at latchkey.com">Jon S. Stevens</author>
+   </properties>
+
+   <body>
+
+ <section name="Deprecation Policy">
+ <p>
+ In order for people to be comfortable with development of code based on
+ your project and not have to constantly worry about the rug being pulled out
+ from underneath them, we have instituted the following policy. Our goal
+ is to take this matter as an extremely serious practice. 
+ </p>
+ </section>
+ 
+ <section name="The Rules">
+
+<ol>
+<li>
+<strong>ALL</strong> existing class and method modification needs to go
+through a deprecation phase. We realize that this may make some of the
+API code look a bit ugly when you look at the source code, but this is a
+MUST have. It is recommend that developers who deprecate methods move
+them to the bottom of the .java file.
+</li>
+
+<li>
+<p>
+The amount of time between deprecation and removal must be at least one
+release of your project. It could be more than one version release before the
+deprecated item is removed, but it cannot be less than one version
+release. In other words, we can deprecate something in 2.1 and remove it
+in the release of 2.1.1. The amount of time between 2.1 and 2.1.1 could
+be measured in days, not months. Discussion will occur on the mailing
+list pertaining to the real number of versions between deprecation and
+removal. You will have a chance to express your concerns and we will
+take them into consideration. Most likely a major feature change will
+not be removed between a 2.1 and 2.1.1 release. Instead, we would wait
+until 2.2 to remove the deprecated items in that case.
+</p>
+
+<p>
+The reason why we do not feel that time is of importance is because 6
+months may not be a long enough time for a project to keep up and 2
+weeks might be fine for another project. By focusing on deprecation
+through releases, people can choose to code against a specific version
+of your project and feel comfortable that their code will compile for at
+least one released version. This also gives people the chance to compile
+against various previous releases to do incremental upgrades and find
+out what will break in the next release.
+</p>
+</li>
+
+<li>
+Any time a method is deprecated, notification <strong>MUST</strong> be
+sent to the developer mailing list documenting the methods that have
+been deprecated as well as the alternative use. This will allow people 
+to search the archives and find out when and why a method was deprecated
+as well as the procedure for upgrading to the latest methodology.
+</li>
+
+<li>
+Items that are not Java code related and cannot be deprecated (such as
+property key changes and DTD modifications) must be documented on the
+mailing list.
+</li>
+
+<li>
+All documentation must be updated at the time of modification to reflect
+the latest status of the code.
+</li>
+
+<li>
+Any patches or commits that do not follow these rules will be rejected
+and it is up to the person who has either checked in the modifications
+or sent the patch to submit a new patch, fix the problem or back the
+code out of CVS.
+</li>
+
+</ol>
+
+
+ </section>
+ <section name="Developers: Suggestions for following The Rules">
+ <p>
+ When changing the signature of a public or protected method or class,
+ this has the potential of breaking someones code who depends on the
+ method or class. Since we are developing Open Source software, there is
+ absolutely no way we can tell if someone is using our code or not.
+ Therefore, in order to minimize the effect of changes, it is possible
+ to use the concept of deprecation. When working on code, keep in mind
+ the following guidelines:
+ </p>
+ 
+    <ul>
+        <li>
+        When modifying an existing public or protected method or class
+        first mark the existing method as deprecated and create a new
+        one to replace the old one.
+        </li>
+        <li>
+        Do not remove any public or protected classes/interfaces that
+        have any chance of being used outside of the application.
+        Instead, mark them as deprecated.
+        </li>
+        <li>
+        When migrating code from one package to another, deprecate the
+        old package and then have the old code reference the new code as
+        a thin temporary wrapper. The deprecation tells people that the
+        wrapper will be going away at some point in the future.
+        </li>
+        <li>
+        Changes to configuration files needs to be well documented so
+        that people can have a laundry list of foo->bar conversions.
+        </li>
+        <li>
+        When changing a database schema, make sure to provide ALTER
+        TABLE statements to modify the schema so that people can convert
+        their existing databases easily.
+        </li>
+    </ul>
+ </section>
+
+ </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/development/distributions.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/development/distributions.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/development/distributions.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Distributions</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+    <section name="Distributions">
+      <p>
+      
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/development/release-process.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/development/release-process.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/development/release-process.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<document>
+
+<properties>
+  <title>Release process</title>
+  <author email="dlr at finemaltcoding.com">Daniel Rall</author>
+</properties>
+
+<body>
+
+<section name="Release process">
+
+<p>
+  Consider the following to be something of a checklist.
+
+  Turbine's release process consists of tagging one or more version
+  control modules (Turbine and its dependencies).  For the 2.x
+  development path, the module list to consider for tagging consists
+  of the following:
+</p>
+  <ul>
+    <li>jakarta-turbine-2</li>
+    <li>jakarta-turbine-fulcrum</li>
+    <li>jakarta-turbine-torque</li>
+    <li>jakarta-turbine-stratum</li>
+    <li>jakarta-turbine-maven</li>
+  </ul>
+  <!-- HELP: What about the TDK? -->
+<p>
+  After tagging the release (or each module), take a few minimal steps
+  to assure that the archives are in the expected place and valid.
+
+  Announce your release via news outlets such as web page changes,
+  email announcements, press releases, etc.  For instance, many Apache
+  projects update the <i>jakarta-site2/xdocs/site/news.xml</i>
+  document and their <a href="http://freshmeat.net/">Freshmeat</a>
+  entry.
+</p>
+
+</section>
+
+<section name="Tagging an individual module">
+
+<ol>
+  <li>
+    Send email to the development mailing list announcing a version
+    control freeze for tagging.
+  </li>
+  <li>
+    Check out fresh working copy of CVS module you're going to tag.
+  </li>
+  <li>
+    Set the release version number in Maven project.xml and/or Ant
+    default.properties.  For example, 3.0-dev would become 3.0-b1 or
+    3.0-rc1.
+  </li>
+  <li>
+    Update any dependency changes (possibly caused by previous module
+    tagging).  For Maven, this consists of modifying the
+    <code>version</code> and <code>jar</code> attributes of each
+    <code>dependency</code> element.
+  </li>
+  <li>
+    Perform a successful build and test suite execution, and run the
+    <i>clean</i> target to remove any generated files.
+  </li>
+  <li>
+    Commit your changes to the version control repository.
+  </li>
+  <li>
+    Tag the release via <code>cvs -q tag
+    <i>PROJECT_VERSION_MODIFIER</i></code>.  An example release tag is
+    <i>TURBINE_2_2_B1</i> or <i>TURBINE_3_0_RC1</i>.
+  </li>
+  <li>
+    Set the next development version number in Maven project.xml
+    and/or Ant default.properties and commit the change to the version
+    control repository.  For example, 3.0-b1 would become 3.0-b2-dev.
+  </li>
+  <li>
+    Send email to the development mailing list announcing completion
+    of the tag.
+  </li>
+</ol>
+
+</section>
+
+</body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/development-process.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/development-process.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/development-process.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<document>
+
+  <properties>
+    <title>Development Process</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+    <section name="Development Process">
+      <p>
+        One goal of Maven is to help disseminate information regarding
+        the best-practices used in the development process.  This page
+        is linked to every Maven-generated site in the hope that all
+        Maven projects will participate in these best-practices.  The
+        following documents are currently available:
+      </p>
+      <subsection name="Best-Practice Documents">
+        <table>
+          <tr><th>Document</th><th>Overview</th></tr>
+          <tr>
+            <td><a href="development/branches.html">Branches</a></td>
+            <td>
+              Provides some guidelines to use when creating branches.
+            </td>
+          </tr>
+          <tr>
+            <td><a href="development/deprecation.html">Deprecation</a></td>
+            <td>
+              Provides some guidelines to use when deprecating elements
+              of an API.
+            </td>
+          </tr>
+          <tr>
+            <td><a href="development/distributions.html">Distributions</a></td>
+            <td>
+              Provides some guidelines to use when creating distributions
+              for release.
+            </td>
+          </tr>
+          <tr>
+            <td><a href="development/release-process.html">Release Process</a></td>
+            <td>
+              Provides some guidelines to use when releasing new
+              versions of a project.  This includes instructions on how
+              to tag and branch your project.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/errors/404.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/errors/404.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/errors/404.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Page Not Found</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+<body>
+<section name="Page Not Found">
+
+<p>Sorry, the page you requested was not found. This may because:</p>
+<ul>
+  <li>The page has moved, was outdated, or has not been created yet</li>
+  <li>You typed the address incorrectly</li>
+  <li>You following a link from another site that pointed to this page.</li>
+</ul>
+
+<p>
+  We have recently reorganised our site, so please try looking in the navigation on the left for the item
+  you are looking for on Maven 1.x or the Maven project. For information about Maven 2.0 or Continuum, please
+  visit their sub sites, available from the links in the top right of the page.
+</p>
+
+<p>
+  There is no need to report this broken link to the Maven team, as errors are periodically monitored and repaired.
+</p>
+
+</section>
+
+</body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/faq.fml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/faq.fml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/faq.fml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,856 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<!-- TODO [later]: faqs need some sorting -->
+<faqs title="Frequently Asked Questions">
+
+  <part id="general">
+    <title>General</title>
+
+    <faq id="maven-definition">
+      <question>What does Maven mean?</question>
+      <answer><p>A maven (yi.=meyvn) is an experienced or knowledgeable person, such as an expert or freak.</p></answer>
+    </faq>
+
+    <faq id="maven-two">
+      <question>What is Maven 2?</question>
+      <answer>
+        <p>
+           Maven 2.0 is a complete rewrite of the 'original' Maven application ('Maven 1').
+           As such, it is very different from Maven 1, and not backwards-compatible
+           (eg, it cannot execute Maven 1 plugins). However, Maven 2.0 is the latest stable release
+           of the Maven application, and new users are generally encouraged to use
+           it for all new projects.
+        </p>
+        <p>
+          If you are familiar with Maven 1, you can find some information about moving to
+          Maven 2 <a href="http://maven.apache.org/maven1.html">here</a> or on the main
+          <a href="http://maven.apache.org/">Maven</a> site.
+        </p>
+      </answer>
+    </faq>
+
+  </part>
+  <part id="help">
+    <title>Where Can I Get Help?</title>
+   
+    <faq id="where-get-help">
+      <question>Where do I get help on Maven?</question>
+      <answer>
+        <p>
+          For help getting started, or basic use of Maven, refer to the documentation
+          that can be found from the left navigation of this site.
+        </p>
+        <p>
+          If these documents, and the other questions in this FAQ don't help you with your problem, the
+          <a href="mail-lists.html">Maven User List</a> is a good source for help.
+          Lots of problems have already been discussed there, so please search the mailing list archive
+          before posting a question or a new idea.
+          Most of the Maven developers are subscribed to the Maven User List, so there is no need to post
+          to the Maven Developers list unless you want to discuss making a change to Maven itself.
+        </p>
+        <p>
+          Maven developers meet via IRC: <code>irc://irc.codehaus.org#maven</code>, or
+          <a href="http://irc.codehaus.org/irc.cgi">irc.codehaus.org</a>,
+          channel <code>#maven</code>.
+          But please don't ask for solutions to Maven problems there, as
+          Maven user problems should be discussed at the mailing list
+          for several good reasons (e.g. mail archive, more subscribers) and 
+          usually you get a quick answer on the mailing list. But feel free to drop in and say hi.
+        </p>
+        <p>
+          You should not mail developers directly for Maven related issues, for 2 reasons. The most important
+          is that the project operates in the public, so all discussions should be kept on the list (for the
+          same reasons as given above). Secondly, they are busy and in various timezones, so mailing to the
+          list ensures you get the most prompt response from someone available and able to commit their time
+          at the moment. Direct questions to developers will rarely be answered.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="plugin-docs">
+      <question>How do I find help on a specific goal?</question>
+      <answer>
+        <p>
+          All Maven goals are provided by plugins. For example, the goals <code>jar</code> and <code>jar:install</code>
+          are provided by the <a href="http://maven.apache.org/maven-1.x/plugins/jar/index.html">jar plugin</a>. You can find a list of
+          plugins and there documentation <a href="http://maven.apache.org/maven-1.x/plugins/index.html">here</a>.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="jelly-help">
+      <question>Where can I get help on Jelly?</question>
+      <answer>
+        <p>
+          Jelly is a reasonably active project of it's own, used beyond Maven. If you have any questions about
+          it, including how to do certain Jelly things in a Maven build file, you should ask the question on
+          the <a href="http://jakarta.apache.org/commons/jelly/mail-lists.html">Jelly mailing lists</a>.
+        </p>
+        <p>
+          While the Maven User List archive is a good place to search for answers, it is preferred that you
+          only ask Jelly specific questions there if you were unable to find an answer on the Jelly lists.
+        </p>
+      </answer>
+    </faq>
+  </part>
+
+  <!-- TODO [later]: probably a document -->
+  <part id="contributing">
+    <title>Contributing</title>
+    <faq id="bug-reporting">
+      <question>I found a bug. How do I report it?</question>
+      <answer>
+        <p>
+          First, we'd appreciate if you search the <a href="/mail-lists.html">Mailing List Archives</a>
+          to see if anyone else has encountered it and found a resolution or a workaround.
+        </p>
+        <p>
+          If you are not using the current release of Maven, it is also worth trying that, and specifically
+          checking the release notes to see if that bug might have already been addressed.
+        </p>
+        <p>
+          If you are sure it is a bug, then it should go into JIRA, the issue tracking application for Maven.
+          First, search the Maven project (or related plugin) to see if the bug has already been reported.
+          If not, create a new issue. You must be registered and logged in to do so. This enables you to be
+          contacted if the bug is fixed or more information is required.
+        </p>
+        <p>
+          The location of Maven's JIRA instance is listed on the <a href="/issue-tracking.html">Issue Tracking</a>
+          page.
+        </p>
+        <p>
+          Please be patient. While the issue will usually be reviewed immediately, bugs do not always get fixed as
+          quickly. However, if you are able to submit your own fix, it will usually be applied for the next release.
+          See <a href="#submitting-patches">Submitting Patches</a> for more information.
+        </p>
+      </answer>
+    </faq>
+    <faq id="feature-suggestions">
+      <question>I have such a cool new idea for a feature. Where do I suggest it?</question>
+      <answer>
+        <p>
+          Great! The process is very similar as for <a href="#bug-reporting">Filing a Bug Report</a>.
+        </p>
+        <p>
+          Firstly - are you sure its a new idea? Try searching the <a href="/mail-lists.html">Mailing List Archives</a>
+          for <i>both</i> the user and developer lists to see if a similar idea has already been discussed.
+        </p>
+        <p>
+          Likewise, you should also search <a href="/issue-tracking.html">JIRA</a> to see if someone has proposed
+          it as a feature request already.
+        </p>
+        <p>
+          If not, there are two ways to proceed. If you have a rough idea but think it needs some discussion with
+          the developers, try posting to the developers mailing list. So that they know initially that you have
+          already thought this through, briefly detail what you did or didn't find when searching the mail archives.
+        </p>
+        <p>
+          Once you are confident that the idea is solid and fits the current direction of the project, submit it to
+          JIRA as a feature request.
+        </p>
+        <p>
+          Please be patient. While the issue will usually be reviewed immediately, features are usually not
+          implemented until the start of the next major development cycle.
+          However, if you are able to submit your own implementation, it will usually be applied for the next release.
+          See <a href="#submitting-patches">Submitting Patches</a> for more information.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="submitting-patches">
+      <question>How do I submit my own fix or new feature?</question>
+      <answer>
+        <p>
+          Bug fixes and features submitted by non-committers of the project take the form of a patch.
+          Submitting your own patch will ensure that the bug or feature gets addressed sooner, and gives
+          the submitter the warm fuzzy feeling from helping out!
+        </p>
+        <p>
+          Before working on a patch for a bug fix or new feature, it is essential that the steps above are followed
+          to ensure that there isn't already a patch, or that a new feature has been previously decided against
+          because it does not match the direction of the project. You don't want to waste time preparing a patch
+          if it won't be used, so please take the time to consult the current developers list in advance.
+        </p>
+        <p>
+          When preparing the patch, make sure it is against the latest code in version control by doing a full update
+          and testing it again. The easiest way to prepare the patch is then to run this in the base directory of
+          your source control checkout:
+        </p>
+        <source>maven scm:create-patch</source>
+        <p>
+          This is basically equivalent to running <code>svn diff</code>. Attach the resulting patch file to a JIRA
+          issue. Please rename it to the name of the JIRA issue so a developer can save it and still know what it is.
+          Do not mail it directly to a particular developer, or to the developers mailing list as attachments are
+          often stripped or the mails lost.
+        </p>
+        <p>
+          If you did not create the original JIRA issue, it is important that you select to "watch" the issue so
+          that feedback on the patch can be given.
+        </p>
+        <p>
+          If you are fixing a bug, make sure you submit a test case that fails without the patch, but succeeds with
+          the patch applied, proving that it works.
+        </p>
+        <p>
+          If you are submitting a new feature, it is important that you include test cases to verify the feature
+          works, and documentation for users on how it works.
+        </p>
+        <p>
+          It is important that you <b>don't</b> submit whole replacement files instead of differences or differences
+          where unrelated code is changed - such as changing formatting or spacing. Patches that violate these
+          rules will often not be applied.
+        </p>
+        <p>
+          Finally, adhere to the coding standards of the project, respecting the settings of the code surrounding
+          that of the change. This includes whitespace, and ensuring that spaces are used instead of tab characters.
+        </p>
+        <p>
+          If these rules are followed, you will usually find that developers will joyfully and quickly apply
+          the patch, and be appreciative of the efforts put in to help out.
+        </p>
+      </answer>
+    </faq>
+  </part>
+  
+  <part id="using">
+    <title>Using Maven</title>
+    <faq id="using-entities">
+      <question>What's the problem with entities in <code>project.xml</code>?</question>
+      <answer>
+        <p>
+          As of Maven 1.1, external entities will not be enabled by default in
+          <code>project.xml</code>, and their use is discouraged in Maven 1.0.x as well.
+          There will still be the ability to use them, but it will have to be enabled.
+        </p>
+        <p>
+          There are several reasons for this, but the main reason is that
+          the content of <code>project.xml</code> needs to be completely self-contained and
+          and able to be reproduced from a history at any point in time.
+        </p>
+        <p>
+          For this reason, using Jelly expressions other than <code>${pom.*}</code> references is
+          also not recommended and likely to be unsupported in future.
+        </p>
+        <p>
+          The most common use of this technique is to manage dependencies
+          across multiple projects. You should strongly consider using inheritence for this purpose.
+        </p>
+        <p>
+          <b>Note:</b> special character entities will always be supported and should
+          not have any current issues.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="masters-of-the-inheritence">
+      <question>How do I stop my top level properties being inherited in subprojects? I only want to inherit the
+        <code>project.xml</code> file.</question>
+      <answer>
+        <p>
+          This is a result of using the same project file at the top level of your multiple project structure as the
+          <i>master build</i> (ie, where you run your <code>multiproject</code> goals from) and the root of your
+          project inheritence tree.
+        </p>
+        <p>
+          We recommend that you separate these concerns by having both a master build project and a parent project
+          for extension (see the <code>maven-plugins</code> CVS tree for an example). Ther master build should remain
+          in the top level directory, but the shared project file should be in a subdirectory such as
+          <code>common-build</code>.
+        </p>
+      </answer>
+    </faq>
+    
+    <faq id="ignoring-broken-tests">
+      <question>How do I make my build complete even with broken tests?</question>
+      <answer>
+        <p>
+          See the <a href="http://maven.apache.org/maven-1.x/plugins/test/properties.html">Test Plugin Reference</a>.
+          Most notably, <code>maven.test.skip</code> and <code>maven.test.failure.ignore</code>.
+          <b>Heed the warnings!</b>
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="find-junit-messages">
+      <question>Where does the output from my JUnit tests go?</question>
+      <answer>
+        <p>If you are running <code>test:test</code>, the exceptions will usually be output to
+        <code>./target/test-reports/some.package.SomeClassTest.txt</code>.
+        If you want to see the errors in the output, set the property <code>maven.junit.usefile</code> to 
+        <code>false</code>.</p>
+      </answer>
+    </faq>
+
+    <faq id="disable-reports">
+      <question>How do I disable a report on my site?</question>
+      <answer>
+        <p>
+          The preferred way is to specify your own <code>&lt;reports/&gt;</code> section in the POM.
+          Reports are not inherited from parent projects, so only those included will be used.
+          The default reports are:
+        </p>
+        <source><![CDATA[<reports>
+  <report>maven-jdepend-plugin</report>
+  <report>maven-checkstyle-plugin</report>
+  <report>maven-changes-plugin</report>
+  <report>maven-changelog-plugin</report>
+  <report>maven-developer-activity-plugin</report>
+  <report>maven-file-activity-plugin</report>
+  <report>maven-license-plugin</report>
+  <report>maven-javadoc-plugin</report>
+  <report>maven-jxr-plugin</report>
+  <report>maven-junit-report-plugin</report>
+  <report>maven-linkcheck-plugin</report>
+  <report>maven-tasklist-plugin</report>
+</reports>]]></source>
+        <p>
+          If there is one specific report you want to disable, you can do so with a post-goal. For example,
+          to disable linkcheck whenever the <code>maven.linkcheck.disable</code> property is set, add this to
+          your <code>maven.xml</code> file:
+        </p>
+        <source><![CDATA[<!-- Conditionally disable linkcheck based on a property. -->
+<postGoal name="xdoc:register-reports">
+  <j:if test="${maven.linkcheck.disable}">
+    <attainGoal name="maven-linkcheck-plugin:deregister"/>
+    <echo>linkcheck is disabled.</echo>
+  </j:if>
+</postGoal>]]></source>
+      </answer>
+    </faq>
+
+    <faq id="using-xdoclet">
+      <question>How do I use Maven with XDoclet?</question>
+      <answer>
+        <p>The XDoclet plugin is provided by the XDoclet developers. All questions
+        about it should be directed to the XDoclet mailing lists.</p>
+      </answer>
+    </faq>
+
+    <faq id="speeding-maven">
+      <question>Maven takes a long time to load. Is there anyway to speed things up?</question>
+      <answer>
+        <p>You can use the
+        <a href="http://maven.apache.org/maven-1.x/plugins/console/">Console Plugin</a> to
+        get an interactive shell that will let load Maven once and run as many
+        goals as you want. On average machines it takes something like
+        ten seconds to compile and run unit tests, so that you can build often
+        and test your code often.</p>
+      </answer>
+    </faq>
+
+    <faq id="transitive-dependencies">
+      <question>Do I need to specify all the dependencies in the POM?</question>
+      <answer>
+        <p>The short answer is YES. Maven 2 will have a transitive dependency discovery mechanism
+        that will avoid this.</p>
+      </answer>
+    </faq>
+
+    <faq id="multiple-source-directories">
+      <question>How do I provide multiple source directories in my <code>project.xml</code>?</question>
+      <answer>
+        <p>You can't. However, if you really need it, you can use a snippet in <code>maven.xml</code>:</p>
+<source><![CDATA[<preGoal name="java:compile">
+   <ant:path
+       id="my.other.src.dir"
+       location="${basedir}/debug/src"/>
+   <maven:addPath
+       id="maven.compile.src.set"
+       refid="my.other.src.dir"/>
+</preGoal>]]></source>
+        <p>Please think about the reason you need this, and carefully consider whether it is necessary. Usually this
+        is used for writing plugins that handle source generation.</p>
+      </answer>
+    </faq>
+
+    <faq id="site-configuration">
+      <question>How can I customise the configuration for an entire installation?</question>
+      <answer>
+        <p>
+          Currently you can only configure settings at a project and per-user level.
+          There are no site-wise configuration settings available.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="log-output">
+      <question>How can I customise Maven's logging?</question>
+      <answer>
+        <p>
+          Maven uses <a href="http://logging.apache.org/log4j/docs/">Log4J</a> to log all of its output.
+        </p>
+        <p>
+          If you would like to write certain information to a file and piping is not an option or you want
+          greater control over what is controlled, you can override the log4j configuration. Refer to the log4j
+          documentation for how to override this using system properties.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="classloader-property">
+      <question>Why shouldn't I use the dependency classloader override property?</question>
+      <answer>
+        <p>
+          Because in most cases it isn't needed. <code>root.maven</code> is equivalent to the project classloader,
+          so is never needed.
+          While <code>root</code> is the Ant classloader and has some <a href="#BadXSLT">valid uses</a>, you should 
+          not load tasks into it unless absolutely necessary as it will then force itself
+          on the other plugins executed afterwards. In particular any jakarta-commons libraries should not be in the 
+          root classloader as these can clash with Jelly.
+        </p>
+        <p>
+          The correct way to use ant tasks in <code>maven.xml</code> or a plugin is something like:
+        </p>
+        <source><![CDATA[<ant:taskdef name="checkstyle"
+  classname="com.puppycrawl.tools.checkstyle.CheckStyleTask">
+  <ant:classpath>
+    <ant:pathelement location="${plugin.getDependencyPath('checkstyle:checkstyle')}"/>
+    <ant:path refid="maven.dependency.classpath"/>
+  <ant:classpath>
+<ant:taskdef>]]></source>
+      </answer>
+    </faq>
+
+    <faq id="find-groupid">
+      <question>How do I find a plugin's groupId?</question>
+      <answer>
+        <ol>
+          <li>
+            Check the plugin's web site page,
+            as should explain how to install it.
+            This information would include the group and artifact ids.
+          </li>
+          <li>
+            Check for a Downloads link.
+            If one exists, view that page and click the
+            Release Notes for the latest release.
+            The installation information is in the release notes.
+          </li>
+          <li>
+            If all else fails, look for it in maven repos, starting with ibiblio.
+            A repo search facility exists - refer to the
+            <a href="#search-repositories">search repositories</a>
+            question.
+          </li>
+        </ol>
+      </answer>
+    </faq>
+
+    <faq id="add-jar-to-local-repository">
+      <question>How do I add a JAR from a non-Maven project to my local repository?</question>
+      <answer>
+        <p>
+          If it is a JAR that cannot be uploaded to Ibiblio because of a license, or it is private,
+          you must manually copy it to your local repository. After picking a sensible group ID, and making
+          sure the filename is in the format <code>artifactId-version.jar</code>, copy it to
+          <code>${maven.repo.local}/groupId/jars/artifactId-version.jar</code>.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="share-local-repository">
+      <question>I share a development machine. How can I share the local repository to save downloading?</question>
+      <answer>
+        <p>
+          It is recommended that you <b>do not</b> share your local repository. The reason for this is that as you
+          build your projects, part of the process is usually to install your changes there for sharing with other
+          projects you are working on that depend on it.
+        </p>
+        <p>
+          If you share this with multiple developers, you will have to communicate with them about when you will
+          be developing a certain project to ensure your changes don't clash, and ensure each person is always
+          completely up to date.
+        </p>
+        <p>
+          Usually, it is better to work with a shared remote repository that you run yourself. This means that
+          dependencies are only downloaded once from the internet, and then downloaded to the local cache for each
+          developer as they need it. Company artifacts can also be published there.
+        </p>
+        <p>
+          See <a href="using/repositories.html">Working with Repositories</a> for more information.
+        </p>
+        <p>
+          If after this you really want to share a local repository, you can set the <code>maven.repo.local</code>
+          property. This is a directory (not a URL). The directory pointed to must be readable by all of the users
+          and may need to be writable if the users will be allowed to download dependencies or publish their changes.
+          The file system mask must also be set correctly so that changes retain the correct permissions.
+        </p>
+        <p>
+          Please note that this solution will not be supported by the Maven Users Mailing List, however.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="unversioned-jars">
+      <question>I want to store unversioned JARs in the Maven repository, why won't Maven let me?</question>
+      <answer>
+        <p>
+          There was a workaround to allow this in Maven 1.x, but it will be removed in future. The version is
+          required for Maven's dependency management to work effectively, and besides, it's a good practice.
+        </p>
+        <p>
+          The local repository is Maven's private cache area, so it is entitled to name the JARs as it sees fit to
+          operate correctly. When you put the resulting JARs into your webapps, etc, you should have the flexibilityo
+          to name them as you wish (though we recommend the default).
+        </p>
+        <p>
+          You can use a version of UNVERSIONED or similar as a last resort, but it is strongly recommended that you
+          use something recognisable.
+        </p>
+        <p>
+          You can get more information from the following sources:
+        </p>
+        <ul>
+          <li><a href="http://blogs.codehaus.org/projects/maven/archives/001052_why_maven_uses_jar_names_with_versions.html">Why Maven uses JAR names with versions</a></li>
+          <li><a href="http://blogs.codehaus.org/people/jdcasey/archives/001053_dependencies_to_version_or_not_to_version.html">Dependencies: To Version or Not To Version?</a></li>
+        </ul>
+      </answer>
+    </faq>
+    <faq id="finding-plugins">
+      <question>I've heard that there are lots of great plugins for Maven, where do I find them?</question>
+      <answer>
+        <p>
+        A list of plugins is maintained by the maven team 
+        <a href="http://maven.apache.org/maven-1.x/plugins/index.html">here</a> but developers of third party
+        plugins are <a href="reference/sharing-plugins.html">encouraged</a> to host
+        the plugin themselves so you may also need to search the web.
+        </p>
+      </answer>
+    </faq>
+    <faq id="install-plugins">
+      <question>How Do I Install A Third Party Plugin?</question>
+      <answer>
+        <p>
+        See <a href="reference/sharing-plugins.html#Step_4__So_now_that_they_found_my_plugin__how_do_users_install_it_">Sharing Plugins</a>
+        </p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="ibiblio">
+    <title>Ibiblio</title>
+
+    <faq id="ibiblio-repository">
+      <question>Why is the Maven repository on Ibiblio and not at Apache?</question>
+      <answer>
+        <p>There are several reasons why the Maven Repository was setup at
+        Ibiblio. Ibiblio is a massive archive of almost everything you could
+        imagine but one of the stated goals of Ibiblio is to "Expand and improve the distribution
+        of open source software". There is really no limit to how much we can stuff
+        in the repository at Ibiblio and it will be archived indefinitely. They have
+        a lot of bandwith, good redundancy and have a very secure setup. Another reason
+        we placed the repository there was that it is Apache policy not to store
+        any (L)GPL artifacts on our servers. We wanted Maven to work for as many
+        Java developers as possible so we chose Ibiblio where there is no restriction
+        on store (L)GPL artifacts. You can find out more about Ibiblio
+        <a href="http://www.ibiblio.org/about.html">here</a>.</p>
+      </answer>
+    </faq>
+
+    <faq id="ibiblio-upload">
+      <question>How do I upload a resource to or update a resource on http://www.ibiblio.org/maven?</question>
+      <answer>
+        <p>Read <a href="reference/repository-upload.html">Uploading to Ibiblio Instructions</a>.</p>
+      </answer>
+    </faq>
+
+    <faq id="ibiblio-mirrors">
+      <question>Are there any mirrors for the Maven repository at ibiblio?</question>
+      <answer>
+        <p>Yes, there are at least the following:</p>
+        <ul>
+          <li>http://www.ibiblio.org/maven/</li>
+          <li>http://public.planetmirror.com/pub/maven/</li>
+          <li>http://mirrors.dotsrc.org/maven/</li>
+          <li>http://ftp.up.ac.za/pub/linux/maven/</li>
+          <li>http://download.au.kde.org/pub/maven/</li>
+        </ul>
+      </answer>
+    </faq>
+
+    <faq id="search-repositories">
+      <question>Can I search the repositories?</question>
+      <answer>
+        <p>
+         There is a service available at 
+         <a href="http://maven.ozacc.com/">http://maven.ozacc.com/</a> 
+         that provides a search service, though not affiliated with the
+         Maven project.
+        </p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="scripting">
+    <title>Scripting</title>
+    <faq id="plugin-variables">
+      <question>How do I get or set plugin properties from Jelly?</question>
+      <answer>
+        <p>Plugin properties can be used with the following tags: 
+        <a href="tags.html#maven:get">maven:get</a> and 
+        <a href="tags.html#maven:set">maven:set</a>.
+        (These replace the deprecated versions of <code>${pom.getPluginContext(...).get/setVariable()}</code>
+        and <code>maven:pluginVar</code>.)</p>
+        <p>Example:</p>
+        <source><![CDATA[<maven:get plugin="maven-war-plugin" property="maven.war.src" var="warSourceDir" />
+<echo>The WAR source directory is ${warSourceDir}<echo>
+...
+<maven:set plugin="maven-multiproject-plugin" property="maven.multiproject.includes" value="subprojects/*/project.xml"/>]]></source>
+      </answer>
+    </faq>
+
+    <faq id="multiple-threads">
+      <question>How do I spin off a background process in a goal?</question>
+      <answer>
+        <p>
+          For example, before starting unit tests you might need to start a DB server. The DB server blocks until it is
+          terminated, so it needs to be started in the background. <code>&lt;ant:parallel&gt;</code> does not seem to 
+          work in this case because it blocks the main execution thread, which is exactly what needs to be avoided.
+        </p>
+        <p>
+          The solution is given in
+          <a href="http://marc.theaimsgroup.com/?l=turbine-maven-user&amp;m=105911458328637&amp;w=2">this
+          thread</a>.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="BadXSLT">
+      <question>How do I get the XSLT tasks to work?</question>
+      <answer>
+        <p>
+          A common symptom is that the Jelly or Ant tag are output instead of being processed.
+          See <a href="http://jira.codehaus.org/secure/ViewIssue.jspa?key=MAVEN-156">MAVEN-156</a>.
+        </p>
+        <p>
+          The solution is to add the JAXP system property via the Jelly script.
+        </p>
+        <source><![CDATA[${systemScope.setProperty('javax.xml.transform.TransformerFactory','org.apache.xalan.processor.TransformerFactoryImpl')} 
+<ant:style in="${basedir}/some.xml" out="${maven.build.dest}/other.xml" style="${basedir}/sheet.xsl" processor="trax"/> 
+]]></source>
+        <p>
+          Also make sure that Xalan is declared as dependencies in your project file, and added to the root classloader 
+          so that Ant can find it:
+        </p>
+        <source><![CDATA[<dependency>
+  <groupId>xalan</groupId> 
+  <artifactId>xalan</artifactId> 
+  <version>2.3.1</version> 
+  <url>http://xml.apache.org/xalan/</url> 
+  <properties>
+    <classloader>root</classloader>
+  </properties>
+</dependency>]]></source>
+      </answer>
+    </faq>
+  
+    <faq id="shareCode">
+      <question>How do I share build code between projects?</question>
+      <answer>
+        <p>
+          Write your own Maven plugin. It's not as difficult as you may
+          think it is, and it will probably save you much time when
+          your code grows in size.
+        </p>
+        <p>
+          Please read the <a href="using/developing-plugins.html">Developing Plugins</a>
+          documentation for instructions on how to do this.
+        </p>
+        <p>
+          It can also be helpful to refer to the source code for the existing
+          Maven plugins which you already have installed.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="sharing-plugins">
+      <question>How do I share my Maven plugin with others?</question>
+      <answer>
+        Read <a href="reference/sharing-plugins.html">Sharing Plugins</a>.
+      </answer>
+    </faq>
+  </part>
+    
+  <part id="troubleshooting">
+    <title>Troubleshooting Maven</title>
+
+    <faq id="debug-maven">
+      <question>How can I get Maven to give more verbose output?</question>
+      <answer>
+        <p>
+          If you received an exception at the end and want a full stack trace for more
+          information, you can run the same <code>maven</code> command again with the <code>-e</code>
+          switch, eg:
+        </p>
+        <source>maven -e jar:jar</source>
+        <p>
+          If you would like a full set of debugging information to trace what Maven is doing,
+          you can run the same <code>maven</code> command again with the <code>-X</code>
+          switch, eg:
+        </p>
+        <source>maven -X jar:jar</source>
+        <p>Note that <code>-X</code> implies <code>-e</code>, so there is no need to use both.</p>
+      </answer>
+    </faq>
+    
+    <faq id="unit-test-14">
+      <question>Why do the unit tests fail under Java 1.4?</question>
+      <answer>
+        <p>It is possible that the XML parser included with Maven is
+        interfering with the XML parser included in Java 1.4. Please set
+        the <code>${maven.junit.fork}</code>
+        <a href="http://maven.apache.org/maven-1.x/plugins/test/properties.html">property</a> to
+        <code>yes</code>.</p>
+        <b>Note:</b> This may not be necessary under Maven 1.1 as it no longer includes
+        an XML parser, using the one provided by the JDK by default.
+      </answer>
+    </faq>
+    
+    <faq id="changelog-no-local-copy">
+      <question>Why does change log ask me to check out the source code?</question>
+      <answer>
+        <p>When you run the cvs change log report in Maven, you may see an
+        error occasionally, such as:</p>
+        <source><![CDATA[cvs [log aborted]: there is no version here; do 'cvs checkout' first
+ ChangeLog found: 5 entries]]></source>
+        <p>This is caused by the cvs log command finding a directory in it's
+        repository that you don't have locally. Note: The directory may not
+        appear on a checkout or update if it is empty in the repository.
+        Please do a clean checkout of the code and retry the report.</p>
+      </answer>
+    </faq>
+
+    <faq id="changelog-broken">
+      <question>I have problems generating the changelog report. Why?</question>
+      <answer>
+        <p>
+        When you run the cvs change log report in Maven, the report hangs or the
+        final output is blank.
+        </p>
+        <p>
+          This is typically caused by the cvs command not running correctly.
+          The first port of call is to check Maven's output, search the lines containing for "SCM".
+        </p>
+        <p>
+          <source><![CDATA[SCM Working Directory: D:\Data\workspace\maven
+SCM Command Line[0]: cvs
+SCM Command Line[1]: -d
+SCM Command Line[2]: :pserver:bwalding at cvs.apache.org:/home/cvsroot
+SCM Command Line[3]: log
+SCM Command Line[4]: -d 2003-01-27]]></source>
+        </p>
+        <p>
+          Try running the command that you find in the log file manually. The results typically
+          speak for themselves.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="jelly-site-error">
+      <question>maven site fails with bizarre Jelly errors, what can I do?</question>
+      <answer>
+        When I try to generate my site I get something like this:
+
+        <source><![CDATA[BUILD FAILED
+null:58:46:
+<x:parse> Invalid source argument. Must be a String, Reader,
+InputStream or URL. Was type; java.io.File with value:
+/home/jvanzyl/js/com.werken/drools/target/jdepend-raw-report.xml
+Total time:  12 seconds]]></source>
+        <p>
+          This problem has been observed when a version of Jelly used as a
+          dependency is different than the one distributed with Maven.
+          If you align your versions of Jelly you should be able to generate
+          your site.
+        </p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="ant">
+    <title>Ant</title>
+
+    <faq id="project-help">
+      <question>What is the equivalent of <code>ant -projecthelp</code> in Maven?</question>
+      <answer>
+        <p>
+          To some extent, <code>maven -u</code> behaves the same way. For more information, please read the
+          <a href="start/quick-start.html">Quick Start</a> guide.
+        </p>
+      </answer>
+    </faq>
+    <faq id="maven-vs-ant-speed">
+      <question>I've heard Maven is much slower than Ant. Is there anything I can do to make it faster?</question>
+      <answer>
+        <p>
+          This has become a bit of an urban myth now, as Maven takes very little more than Ant
+          to initialise (with the exception of the very first run when plugins must be unpacked and parsed).
+        </p>
+        <p>
+          Part of the misconception comes from claims that building the site or building 30 projects
+          takes a lot of CPU and memory. Well, this would happen in Ant too if it were attempted!
+          Some extensions to Ant that build a web site take considerably longer than Maven to do that task.
+          This area is also a focus for future development so that generating these parts of the build
+          are much faster.
+        </p>
+        <p>
+          When it comes down to your day to day development and edit-build-test cycle, you
+          <i>can</i> speed up Maven's initialisation time by running the console, as shown in
+          <a href="#speeding-maven">this FAQ answer</a>.
+          This console keeps Maven loaded and ready to do your bidding for a specific project, and
+          <b>makes Maven faster than Ant for performing equivalent, subsequent builds!</b>
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="filtering-resources">
+      <question>How can I filter properties into resource files as part of the build?</question>
+      <answer>
+        <p>
+          This can be done using resource filtering. In your POM, add the filtering property to your existing
+          resources definition. Please refer to <a href="using/resources.html">Resources</a> for more information.
+        </p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="building">
+    <title>Building Maven</title>
+
+    <faq id="how-to-build">
+      <question>How do I build Maven?</question>
+      <answer>
+        <p>Please see the <a href="developers/building-from-source.html">Building Maven from Source</a> document.</p>
+      </answer>
+    </faq>
+
+    <faq id="build-firewall">
+      <question>How do I build Maven from behind a firewall?</question>
+      <answer>
+        <p>You typically need to set your HTTP proxy host and port details so that Maven can tunnel through your
+        HTTP Proxy. To do this you typically need to set the <code>maven.proxy.host</code> and 
+        <code>maven.proxy.port</code> properties.</p>
+        See the
+        <a href="./reference/properties.html#Proxy_Properties">Properties Reference</a> for more details.
+      </answer>
+    </faq>
+  </part>
+</faqs>
+   

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project-2.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project-2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project-blue.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project-blue.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/apache-maven-project.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/banner.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/banner.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/bg.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/bg.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/breadcrumbs.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/breadcrumbs.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/collapsed.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/collapsed.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/expanded.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/expanded.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/h3.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/h3.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/h3.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/h3.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/h5.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/h5.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/logo_apache.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/logo_apache.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/logo_maven.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/logo_maven.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-blue.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-blue.png
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-console.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-console.png
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-logo-2.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-logo-2.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-small.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/maven-small.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/images/maventxt_logo_200.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/images/maventxt_logo_200.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,195 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Welcome</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Welcome to Maven">
+      <!--
+      <div style="float: right">
+        <a href="http://www.apachecon.com/2005/US/index.html"><img src="http://www.apache.org/images/ac2005us_white_184x80.jpg" width="184" height="80" border="0" title="ApacheCon US 2005" /></a>
+      </div>
+      -->
+      <div id="newsbox">
+        <h5>Latest News</h5>
+
+        <dl>
+          <dt>Maven 1.1-beta-3 released!</dt>
+          <dd>
+            <ul>
+            <li>
+              <a href="start/download.html">Download</a>
+            </li>
+            <li>
+              <a href="start/install.html">Installation Instructions</a>
+            </li>
+            <li>
+              <a href="start/release-notes-1.1-beta-3.html">Release Notes</a>
+            </li>
+            <li>
+              <a href="start/index.html">Getting Started</a>
+            </li>
+            </ul>
+          </dd>
+        </dl>
+
+        <dl>
+          <dt>New plugin releases:</dt>
+          <dd>
+          <ul>
+            <li>
+              <a href="http://maven.apache.org/maven-1.x/plugins/antlr/">antlr plugin 1.2.2</a>
+            </li>
+            <li>
+              <a href="http://maven.apache.org/maven-1.x/plugins/cruisecontrol/">cruisecontrol plugin 1.8</a>
+            </li>
+            <li>
+              <a href="http://maven.apache.org/maven-1.x/plugins/faq/">faq plugin 1.6.1</a>
+            </li>
+            <li>
+              <a href="http://maven.apache.org/maven-1.x/plugins/nsis/">nsis plugin 2.0</a>
+            </li>
+          </ul>
+          </dd>
+        </dl>
+
+        <dl>
+          <dt>New section on basic Maven <a href="start/concepts.html">concepts</a>.</dt>
+        </dl>
+
+        <dl>
+          <dt>Updated <a href="roadmap.html">roadmap</a>.</dt>
+        </dl>
+
+        <dl>
+          <dt>New plugin releases:</dt>
+          <dd>
+          <ul>
+            <li>
+              <a href="http://maven.apache.org/maven-1.x/plugins/ant/">ant plugin 1.10</a>
+            </li>
+            <li>
+              <a href="http://maven.apache.org/maven-1.x/plugins/pdf/">pdf plugin 2.5</a>
+            </li>
+          </ul>
+          </dd>
+        </dl>
+
+
+      </div>
+
+      <p>
+        Maven is a software project management and comprehension tool. Based on the concept of a project object model
+        (<a href="reference/glossary.html#POM">POM</a>), Maven can manage a project's build, reporting and 
+        documentation from a central piece of information.
+      </p>
+      <p>
+        These pages are all about Maven 1.x. The latest version of Maven is the
+        2.0 tree, which is a complete rewrite of the original Maven application.
+        For more information on Maven 2, see the main
+        <a href="http://maven.apache.org/">Maven</a> site.
+      </p>
+
+
+      <subsection name="Maven 1.x News">
+        <dl>
+          <dt>01 August 2006 - Maven 1.1 Beta 3 Released</dt>
+          <dd>
+            <p>
+              Maven 1.1 Beta 3 has been released for testing. This release upgrades several dependencies of Maven,
+              in particular Jelly, Dom4j and Jaxen. Improvements since Maven 1.1 Beta 2 include a lot of new
+              plugin releases and a number of fixes for known issues in the Beta 2 release. See the
+              <a href="start/release-notes-1.1-beta-3.html">Release Notes</a> for more information.
+            </p>
+            <p>
+              <a href="start/download.html">Download it here</a>, and see
+              <a href="reference/backwards-compatibility.html">the compatibility section</a> for information on
+              compatibility with Maven 1.0 builds.
+            </p>
+          </dd>
+          <!--
+          <dt>Looking for Maven 1.1 Beta 3 SNAPSHOTs ?</dt>
+          <dd>
+            <p>
+              As often as possible we publish snapshots of the next beta. 
+              <a href="http://people.apache.org/repo/m1-snapshot-repository/maven/distributions/" target="_blank">
+              Download them here</a> and <a href="mail-lists.html">give us</a> your feedback.
+            </p>
+          </dd>
+          -->
+        </dl>
+      </subsection>
+
+      <subsection name="Getting Started with Maven">
+        <dl>
+          <dt>Need Maven to build a project you have downloaded?</dt>
+          <dd>
+            Read our <a href="start/quick-start.html">Quick Start</a> guide on
+            how to get and use Maven for a project that is already set up for Maven.
+          </dd>
+          <dt>Want to get Maven up and running on a new project?</dt>
+          <dd>
+            Give it the <a href="start/ten-minute-test.html">Ten Minute Test</a>! This will show you how to set up 
+            a simple project that uses Maven.
+          </dd>
+          <dt>Want to adapt an existing project to use Maven?</dt>
+          <dd>
+            Read our <a href="start/adapting.html">Adapting a Project</a> guide for a guide on how to introduce Maven
+            to an existing build.
+          </dd>
+          <dt>Familiar with Ant, and want to see how Maven relates to it?</dt>
+          <dd>
+            Read our <a href="using/migrating.html#Maven_for_Ant_Users">Maven for Ant Users</a> explanatory document.
+          </dd>
+        </dl>
+      </subsection>
+
+      <subsection name="Help and Feedback">
+        <p>
+          If you have any questions, suggestions or comments about Maven or
+          this website, please feel free to post them to the
+          <a href="mail-lists.html">Maven users mailing list</a>.
+        </p>
+      </subsection>
+
+      <subsection name="Release Information">
+        <p>
+          The current stable release for maven 1.x is version 1.0.2 and can be obtained from the
+          <a href="start/download.html">download page</a>.
+        </p>
+        <p>
+          The latest development release for maven 1.x is version 1.1-beta-3, it can be obtained from the
+          <a href="start/download.html">download page</a>.
+        </p>
+        <p>
+          The current development version is only available from Subversion at this point. For more information, see
+          <a href="developers/building-from-source.html">Building from Source</a> and
+          <a href="reference/backwards-compatibility.html">compatibility information</a>.
+        </p>
+      </subsection>
+
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/navigation.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/navigation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/navigation.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project name="Maven 1.x">
+  <title>Maven 1.x</title>
+  <body>
+
+    <breadcrumbs>
+      <item name="Apache" href="http://www.apache.org"/>
+      <item name="Maven" href="http://maven.apache.org/"/>
+    </breadcrumbs>
+
+    <links>
+      <item name="Plugins for Maven 1.x" href="/plugins/index.html"/>
+      <item name="Maven 2.x" href="http://maven.apache.org/"/>
+      <item name="Sitemap" href="/sitemap.html"/>
+    </links>
+
+    <sitemap/>
+
+    <menu name="About Maven 1.x">
+      <item name="Welcome" href="/index.html"/>
+      <item name="What is Maven?" collapse="true" href="/about/whatismaven.html">
+        <item name="Feature Summary" href="/about/features.html"/>
+      </item>
+      <item name="Download" collapse="true" href="/start/download.html">
+        <item name="Compatibility" href="/reference/backwards-compatibility.html"/>
+        <item name="Road Map" href="/roadmap.html"/>
+      </item>
+    </menu>
+
+    <!-- TODO [later]: clean up directory structure -->
+    <menu name="User's Guide">
+      <item name="Getting Started" collapse="true" href="/start/index.html">
+        <item name="Concepts" href="/start/concepts.html"/>
+        <item name="Installing" href="/start/install.html"/>
+        <item name="Building a Project" href="/start/quick-start.html"/>
+        <item name="Creating a Project" href="/start/ten-minute-test.html"/>
+        <item name="Adapting a Project" href="/start/adapting.html"/>
+        <item name="Migrating from Ant" href="/using/migrating.html"/>
+      </item>
+      <item name="Using Maven" collapse="true" href="/using/index.html">
+        <item name="Building JARs" href="/using/jar.html"/>
+        <item name="Resources" href="/using/resources.html"/>
+        <item name="Unit Testing" href="/using/tests.html"/>
+        <item name="Creating a Site" href="/using/site.html"/>
+        <item name="Source Control" href="/using/scm.html"/>
+        <item name="Making Releases" href="/using/releasing.html"/>
+        <item name="Web Applications" href="/using/war.html"/>
+        <item name="Multiple Modules" href="/using/multiproject.html"/>
+        <item name="Handling Dependencies" href="/using/managing-dependencies.html"/>
+        <item name="Best Practices" href="/using/bestpractices.html"/>
+        <item name="IDE Integration" href="/reference/ide/index.html" collapse="true">
+          <item name="IntelliJ IDEA" href="/reference/ide/idea.html"/>
+        </item>
+      </item>
+      <item name="Customising Maven" collapse="true" href="/using/customising.html">
+        <item name="Scripting" href="/reference/scripting.html"/>
+        <item name="Writing a Plugin" href="/using/developing-plugins.html"/>
+        <item name="Sharing Plugins" href="/reference/sharing-plugins.html"/>
+      </item>
+      <item name="Repositories" collapse="true" href="/using/repositories.html">
+        <item name="Internal Repositories" href="/reference/internal-repositories.html"/>
+        <item name="Sun JAR Names" href="/reference/standard-sun-jar-names.html"/>
+        <item name="Uploading to Ibiblio" href="/reference/repository-upload.html"/>
+      </item>
+      <item name="Reference" collapse="true" href="/reference/index.html">
+        <item name="Glossary" href="/reference/glossary.html"/>
+        <item name="Conventions" href="/reference/conventions.html"/>
+        <item name="Project Descriptor" href="/reference/project-descriptor.html"/>
+        <item name="Properties Reference" href="/reference/properties.html"/>
+        <item name="Maven Jelly Tag Library" href="/tags.html"/>
+        <item name="Command Line" href="/reference/command-line.html"/>
+      </item>
+      <item name="Plugins" collapse="true" href="/plugins/index.html">
+        <item name="Bundled Plugins" href="http://maven.apache.org/maven-1.x/plugins/bundled/"/>
+        <item name="History" href="/plugins/bundledHistory.html"/>
+        <item name="Plugins Sandbox" href="http://maven.apache.org/maven-1.x/plugins/sandbox/"/>
+        <item name="Plugins @ sf.net" href="http://maven-plugins.sourceforge.net/" target="_blank"/>
+        <item name="Other 3rd Party Plugins" href="/plugins/3rdparty.html"/>
+      </item>
+      <!-- TODO [later]: Borrow, share with /dev/ and jakarta -->
+      <item name="Contributing" href="/contributing/help.html" collapse="true">
+        <item name="Mailing Lists" href="/mail-lists.html"/>
+        <item name="Reporting Issues" href="/issue-tracking.html"/>
+        <item name="Building from Source" href="/developers/building-from-source.html"/>
+        <item name="Submitting Patches" href="/contributing/patches.html"/>
+      </item>
+      <item name="FAQ" href="/faq.html"/>
+      <item name="PDF Documentation" href="/maven.pdf" img="/images/pdf.gif"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="Powered by Maven" href="/about/powered.html"/>
+      <item name="Related links"    href="/reference/links.html" collapse="true">
+        <item name="Books and Articles" href="/reference/articles.html"/>
+        <item name="Maven Diaries"  href="http://blogs.codehaus.org/projects/maven/" target="_blank"/>
+        <item name="MavenBook.org"  href="http://www.mavenbook.org/" target="_blank"/>
+      </item>
+      <item name="Maven projects"   href="/project/index.html" collapse="true">
+        <item name="Maven 2.x"      href="http://maven.apache.org"/>
+        <item name="Continuum"      href="http://maven.apache.org/continuum/"/>
+        <item name="Maven Wagon"    href="http://maven.apache.org/wagon/" />
+        <item name="Maven SCM"      href="http://maven.apache.org/scm/" />
+        <item name="Maven JXR"      href="http://maven.apache.org/jxr/" />
+        <item name="Maven Doxia"    href="http://maven.apache.org/doxia/" />
+      </item>
+      <item name="Related projects" href="/project/related.html" collapse="true">
+        <item name="Mevenide"       href="http://mevenide.codehaus.org/" target="_blank"/>
+        <item name="Maven Proxy"    href="http://maven-proxy.codehaus.org/" target="_blank"/>
+        <item name="Ant"            href="http://ant.apache.org/" target="_blank"/>
+        <item name="Jelly"          href="http://jakarta.apache.org/commons/jelly/" target="_blank"/>
+      </item>
+      <!-- TODO [later]: actually, may want to fold up the whole top of the site when entering the "developer section" -->
+      <item name="For Developers"   href="/developers/index.html" collapse="true">
+        <!--<item name="Documenting" href="/developers/documentation-conventions.html"/>-->
+        <item name="Committers Guide"   href="/developers/committers.html"/>
+        <item name="Making Releases"    href="/developers/making-releases.html"/>
+        <item name="Apache Resources"   href="/developers/apache.html"/>
+      </item>
+    </menu>
+
+    <!--
+TODO [later]: overhaul development-process.xml and development directories
+-->
+    <!-- until next year...
+    <menu name="ApacheCon Europe 2005">
+      <item name="ApacheCon Europe 2005" href="http://www.apachecon.com/"
+            img="http://apache.org/images/ac2005eu_135x50.gif" />
+    </menu>
+-->
+  </body>
+</project>

Added: branches/maven1/upstream/1.1~beta3/xdocs/pdf-navigation.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/pdf-navigation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/pdf-navigation.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<project name="Maven 1.x">
+  <title>Maven 1.x</title>
+  <body>
+
+    <menu name="About Maven 1.x">
+      <item name="Welcome" href="/index.html"/>
+      <item name="What is Maven?" href="/about/whatismaven.html"/>
+      <item name="Feature Summary" href="/about/features.html"/>
+      <item name="Road Map" href="/roadmap.html"/>
+    </menu>
+
+    <menu name="Getting Maven 1.x">
+      <item name="Downloading" href="/start/download.html"/>
+      <item name="Release Notes" href="/start/release-notes-LATEST.html"/>
+      <item name="Compatibility" href="/reference/backwards-compatibility.html"/>
+    </menu>
+
+    <!-- TODO [later]: clean up directory structure -->
+    <menu name="User's Guide">
+      <item name="Getting Started" href="/start/index.html">
+        <item name="Installing" href="/start/install.html"/>
+        <item name="Building a Project" href="/start/quick-start.html"/>
+        <item name="Creating a Project" href="/start/ten-minute-test.html"/>
+        <item name="Adapting a Project" href="/start/adapting.html"/>
+        <item name="Migrating from Ant" href="/using/migrating.html"/>
+      </item>
+      <item name="Using Maven" href="/using/index.html">
+        <item name="Building JARs" href="/using/jar.html"/>
+        <item name="Resources" href="/using/resources.html"/>
+        <item name="Unit Testing" href="/using/tests.html"/>
+        <item name="Creating a Site" href="/using/site.html"/>
+        <item name="Source Control" href="/using/scm.html"/>
+        <item name="Making Releases" href="/using/releasing.html"/>
+        <item name="Web Applications" href="/using/war.html"/>
+        <item name="Multiple Modules" href="/using/multiproject.html"/>
+        <item name="Handling Dependencies" href="/using/managing-dependencies.html"/>
+        <item name="Best Practices" href="/using/bestpractices.html"/>
+        <item name="IDE Integration" href="/reference/ide/index.html">
+          <item name="IntelliJ IDEA" href="/reference/ide/idea.html"/>
+        </item>
+      </item>
+      <item name="Customising Maven" href="/using/customising.html">
+        <item name="Scripting" href="/reference/scripting.html"/>
+        <item name="Writing a Plugin" href="/using/developing-plugins.html"/>
+        <item name="Sharing Plugins" href="/reference/sharing-plugins.html"/>
+      </item>
+      <item name="Repositories" href="/using/repositories.html">
+        <item name="Internal Repositories" href="/reference/internal-repositories.html"/>
+        <item name="Sun JAR Names" href="/reference/standard-sun-jar-names.html"/>
+        <item name="Uploading to Ibiblio" href="/reference/repository-upload.html"/>
+      </item>
+      <item name="Reference" href="/reference/index.html">
+        <item name="Glossary" href="/reference/glossary.html"/>
+        <item name="Conventions" href="/reference/conventions.html"/>
+        <item name="Project Descriptor" href="/reference/project-descriptor.html"/>
+        <item name="Properties Reference" href="/reference/properties.html"/>
+        <item name="Command Line" href="/reference/command-line.html"/>
+      </item>
+      <item name="Plugins" href="/plugins/index.html">
+        <item name="History" href="/plugins/bundledHistory.html"/>
+        <item name="Other 3rd Party Plugins" href="/plugins/3rdparty.html"/>
+      </item>
+      <item name="FAQ" href="/faq.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="Powered by Maven" href="/about/powered.html"/>
+      <item name="Related links" href="/reference/links.html">
+        <item name="Books and Articles" href="/reference/articles.html"/>
+      </item>
+      <item name="Maven projects" href="/project/index.html" />
+      <item name="Related projects" href="/project/related.html" />
+    </menu>
+
+  </body>
+</project>

Added: branches/maven1/upstream/1.1~beta3/xdocs/plugins/3rdparty.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/plugins/3rdparty.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/plugins/3rdparty.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Third party plugins</title>
+    <author email="emmanuel at venisse.net">Emmanuel Venisse</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+  <body>
+    <section name="Third party plugins">
+      <p>
+        This page contains a list of known plugins sites. We would be
+        very interested if you would drop us a note if you are creating
+        a Maven plugin and would like to be added to this list.
+      </p>
+      <subsection name="Maven Plugins Project @ sf.net">
+        <p>
+          The <a href="http://maven-plugins.sourceforge.net/">Maven Plugins Project</a> at SourceForge develops a series of
+          plugins.
+        </p>
+      </subsection>
+      <subsection name="Independant Plugins">
+        <table>
+          <tr>
+            <td width="20%">
+              <a href="http://mevenide.codehaus.org/maven-nbm-plugin/">Maven NBM plugin</a>
+            </td>
+            <td width="80%">Plugin for creating Netbeans modules (both jars and NBMs) and autoupdate sites.</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://www.codeczar.com/products/maven-ejbgen-plugin/">Weblogic EJBGen plugin</a>
+            </td>
+            <td>Plugin for Weblogic EJBGen</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://www.codeczar.com/products/maven-tomcat-plugin/">Tomcat plugin</a>
+            </td>
+            <td>Plugin for managing webapps with Tomcat Manager</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven-validator.sourceforge.net/">Maven Validator</a>
+            </td>
+            <td>Validates XHTML</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://xdoclet.sourceforge.net/xdoclet/maven-plugin.html">XDoclet plugin</a>
+            </td>
+            <td>Plugin for XDoclet</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven-taglib.sourceforge.net/">Maven Taglib plugin</a>
+            </td>
+            <td>Taglib Plug-in is a maven plugin for jsp tag libraries developers</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://xframe.sourceforge.net/xsddoc/">Maven xsddoc plugin</a>
+            </td>
+            <td>Generates documentation of W3C XML Schema</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven-doccheck.sourceforge.net/">Maven DocCheck Plugin</a>
+            </td>
+            <td>Plugin for Doc Check Doclet</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://www.itbrain.com.mx/ucdd/">UCDD</a>
+            </td>
+            <td>Document Use Cases using maven and xml.</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://mavenhistorical.sourceforge.net/">Maven Historical Data</a>
+            </td>
+            <td>Record user specified values from each maven build to a database.</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://mavenosgiplugin.berlios.de/">Maven OSGi Plugin</a>
+            </td>
+            <td>Create OSGi bundles</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://emma.sourceforge.net/maven-emma-plugin/">Maven EMMA Plugin</a>
+            </td>
+            <td>Plugin using the EMMA code coverage tool</td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Projects With a Maven Plugin">
+        <table>
+          <tr>
+            <td width="20%">
+              <a href="http://cargo.codehaus.org/">Cargo</a>
+            </td>
+            <td width="80%">
+              <p>Cargo is a thin wrapper around existing containers (e.g. J2EE containers). It provides different APIs to easily manipulate containers.</p>
+              <p>Cargo provides the following APIs:</p>
+              <ul>
+                <li>A Java to start/stop/configure Java Containers and deploy modules into them. We also offer Ant tasks, Maven 1, Maven 2, Intellij IDEA and Netbeans plugins.
+    </li>
+                <li>A Java API to parse/create/merge J2EE Modules</li>
+              </ul>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://jakarta.apache.org/cactus/integration/maven/">Cactus plugin</a>
+            </td>
+            <td>Plugin for Jakarta Cactus</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://jakarta.apache.org/turbine/meta/">Turbine plugin</a>
+            </td>
+            <td>Plugin for Jakarta Turbine</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://csdl.ics.hawaii.edu/Tools/JBlanket/maven-plugin/">JBlanket plugin</a>
+            </td>
+            <td>Plugin for JBlanket test coverage tool</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://statcvs-xml.berlios.de/">StatCvs-XML plugin</a>
+            </td>
+            <td>Plugin for StatCvs-XML</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://www.jutils.com">Lint4j</a>
+            </td>
+            <td>Lint4j, the static Java source and bytecode analyzer and bug pattern detector</td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/plugins/bundledHistory.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/plugins/bundledHistory.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/plugins/bundledHistory.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,965 @@
+<?xml version="1.0"?>
+<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
+<!-- 
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Bundled plugins history</title>
+    <author email="aheritier at apache.org">Arnaud Heritier</author>
+  </properties>
+  <body>
+    <section name="Bundled plugins history">
+      <p>This page gives a list of plugins that were included in a given release of Maven. The symbol <img src="../images/icon_error_sml.gif" alt="Not available"/> means that the corresponding plugin was not included in this Maven release.</p>
+      <table>
+        <thead>
+          <tr>
+            <th width="25%" rowspan="2">Plugin</th>
+            <th width="60%" colspan="5">Plugin's release bundled in maven distribution</th>
+          </tr>
+          <tr>
+            <th width="15%">1.0</th>
+            <th width="15%">1.0.1</th>
+            <th width="15%">1.0.2 (current stable release)</th>
+            <th width="15%">1.1-beta2 (last test release)</th>
+            <th width="15%">1.1-beta3 <a href="#footer">*</a> (next test release)</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/abbot/">Maven Abbot Plugin </a>
+            </td>
+            <td>1.0</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/announcement/">Maven Announcement Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>1.4 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/ant/">Maven Ant Plugin </a>
+            </td>
+            <td>1.7</td>
+            <td>1.8.1</td>
+            <td>1.8.1</td>
+            <td>1.9</td>
+            <td>1.10 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/antlr/">Maven Antlr Plugin </a>
+            </td>
+            <td>1.2.1</td>
+            <td>1.2.1</td>
+            <td>1.2.1</td>
+            <td>1.2.1</td>
+            <td>1.2.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/appserver/">Maven AppServer Plugin </a>
+            </td>
+            <td>2.0</td>
+            <td>2.0</td>
+            <td>2.0</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/artifact/">Maven Artifact Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.6</td>
+            <td>1.8 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/ashkelon/">Maven Ashkelon Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/aspectj/">Maven AspectJ Plugin </a>
+            </td>
+            <td>3.1.1</td>
+            <td>3.2</td>
+            <td>3.2</td>
+            <td>3.2</td>
+            <td>4.0 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/aspectwerkz/">Maven AspectWerkz Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/caller/">Maven Caller Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/castor/">Maven Castor Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/changelog/">Maven Changelog Plugin </a>
+            </td>
+            <td>1.7.1</td>
+            <td>1.7.1</td>
+            <td>1.7.1</td>
+            <td>1.8.2</td>
+            <td>1.9.1</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/changes/">Maven Changes Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5.1</td>
+            <td>1.5.1</td>
+            <td>1.5.1</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/checkstyle/">Maven Checkstyle Plugin </a>
+            </td>
+            <td>2.4.1</td>
+            <td>2.5</td>
+            <td>2.5</td>
+            <td>2.5</td>
+            <td>3.0.1</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/clean/">Maven Clean Plugin </a>
+            </td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>1.4 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/clover/">Maven Clover Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.6</td>
+            <td>1.6</td>
+            <td>1.10</td>
+            <td>1.11 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/console/">Maven Console Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/cruisecontrol/">Maven Cruise Control Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.5</td>
+            <td>1.6</td>
+            <td>1.7</td>
+            <td>1.8 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/dashboard/">Maven Dashboard Plugin </a>
+            </td>
+            <td>1.3</td>
+            <td>1.5</td>
+            <td>1.6</td>
+            <td>1.8</td>
+            <td>1.9 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/developer-activity/">Maven Developer Activity Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5.1</td>
+            <td>1.5.1</td>
+            <td>1.5.2</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/dist/">Maven Distribution Plugin </a>
+            </td>
+            <td>1.6</td>
+            <td>1.6.1</td>
+            <td>1.6.1</td>
+            <td>1.6.1</td>
+            <td>1.7 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/docbook/">Maven DocBook Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/ear/">Maven EAR Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.6</td>
+            <td>1.7</td>
+            <td>1.9</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/eclipse/">Maven Eclipse Plugin </a>
+            </td>
+            <td>1.7</td>
+            <td>1.9</td>
+            <td>1.9</td>
+            <td>1.9</td>
+            <td>1.11</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/ejb/">Maven EJB Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.7.1</td>
+            <td>1.7.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/faq/">Maven FAQ Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.5</td>
+            <td>1.6.1</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/file-activity/">Maven File Activity Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5.1</td>
+            <td>1.5.1</td>
+            <td>1.5.2</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/genapp/">Maven Genapp Plugin </a>
+            </td>
+            <td>2.2</td>
+            <td>2.2</td>
+            <td>2.2</td>
+            <td>2.2.1</td>
+            <td>2.3 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/gump/">Maven Gump Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>2.0.1</td>
+            <td>2.0.1 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/hibernate/">Maven Hibernate Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.3</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/html2xdoc/">Maven Html2XDoc Plugin </a>
+            </td>
+            <td>1.3</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.4 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/idea/">Maven IDEA Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.6</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/j2ee/">Maven J2EE Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5.1</td>
+            <td>1.5.1</td>
+            <td>1.5.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jalopy/">Maven Jalopy Plugin </a>
+            </td>
+            <td>1.3</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.5</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jar/">Maven Jar Plugin </a>
+            </td>
+            <td>1.6</td>
+            <td>1.6.1</td>
+            <td>1.6.1</td>
+            <td>1.7</td>
+            <td>1.8 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/java/">Maven Java Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/javacc/">Maven Javacc Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/javadoc/">Maven Javadoc Plugin </a>
+            </td>
+            <td>1.6.1</td>
+            <td>1.7</td>
+            <td>1.7</td>
+            <td>1.7</td>
+            <td>1.8 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jboss/">Maven JBoss Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jbuilder/">Maven JBuilder Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jcoverage/">Maven JCoverage Plugin </a>
+            </td>
+            <td>1.0.7</td>
+            <td>1.0.9</td>
+            <td>1.0.9</td>
+            <td>1.0.9</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jdee/">Maven JDEE Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jdepend/">Maven JDepend Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.6.1</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jdeveloper/">Maven JDeveloper Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jdiff/">Maven JDiff Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.5</td>
+            <td>1.5 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jellydoc/">Maven JellyDoc Plugin </a>
+            </td>
+            <td>1.3</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.3.1 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jetty/">Maven Jetty Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jira/">Maven JIRA Plugin </a>
+            </td>
+            <td>1.1.1</td>
+            <td>1.1.2</td>
+            <td>1.1.2</td>
+            <td>1.1.2</td>
+            <td>1.3 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jnlp/">Maven JNLP Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/junit-report/">Maven JUnit Report Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5</td>
+            <td>1.5.1 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/junitdoclet/">Maven JUnitDoclet Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/jxr/">Maven JXR Plugin </a>
+            </td>
+            <td>1.4.1</td>
+            <td>1.4.2</td>
+            <td>1.4.2</td>
+            <td>1.4.3</td>
+            <td>1.5 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/latex/">Maven Latex Plugin </a>
+            </td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/latka/">Maven Latka Plugin </a>
+            </td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/license/">Maven License Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/linkcheck/">Maven LinkCheck Plugin </a>
+            </td>
+            <td>1.3.2</td>
+            <td>1.3.3</td>
+            <td>1.3.4</td>
+            <td>1.3.4</td>
+            <td>1.4 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/multichanges/">Maven MultiChanges Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/multiproject/">Maven Multi-Project Plugin </a>
+            </td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.3.1</td>
+            <td>1.4.1</td>
+            <td>1.5 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/native/">Maven Native Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/nsis/">Maven NSIS Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>2.0 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/pdf/">Maven PDF Plugin </a>
+            </td>
+            <td>2.1</td>
+            <td>2.2.1</td>
+            <td>2.2.1</td>
+            <td>2.4</td>
+            <td>2.5 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/plugin/">Maven Plugin Plugin </a>
+            </td>
+            <td>1.5.1</td>
+            <td>1.5.2</td>
+            <td>1.5.2</td>
+            <td>1.6</td>
+            <td>1.7 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/pmd/">Maven PMD Plugin </a>
+            </td>
+            <td>1.5</td>
+            <td>1.6</td>
+            <td>1.6</td>
+            <td>1.7</td>
+            <td>1.9</td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/pom/">Maven POM Plugin </a>
+            </td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.5 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/release/">Maven Release Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.0</td>
+            <td>1.0</td>
+            <td>1.4.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/repository/">Maven Repository Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/rar/">Maven RAR Plugin </a>
+            </td>
+            <td>1.0</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.0</td>
+            <td>1.1 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/scm/">Maven Source Control Management Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4.1</td>
+            <td>1.4.1</td>
+            <td>1.5</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/shell/">Maven Shell Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/simian/">Maven Simian Plugin </a>
+            </td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.4</td>
+            <td>1.5</td>
+            <td>1.6 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/site/">Maven Site Plugin </a>
+            </td>
+            <td>1.5.1</td>
+            <td>1.5.2</td>
+            <td>1.5.2</td>
+            <td>1.6.1</td>
+            <td>1.7 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/source/">Maven Source Plugin </a>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>1.0 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/struts/">Maven Struts Plugin </a>
+            </td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>1.3</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/tasklist/">Maven Tasklist Plugin </a>
+            </td>
+            <td>2.3</td>
+            <td>2.3</td>
+            <td>2.3</td>
+            <td>2.4</td>
+            <td>2.4 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/test/">Maven Test Plugin </a>
+            </td>
+            <td>1.6.2</td>
+            <td>1.6.2</td>
+            <td>1.6.2</td>
+            <td>1.7</td>
+            <td>1.8 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/tjdo/">Maven TJDO Plugin </a>
+            </td>
+            <td>1.0.0</td>
+            <td>1.0.0</td>
+            <td>1.0.0</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/uberjar/">Maven Uberjar Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/vdoclet/">Maven VDoclet Plugin </a>
+            </td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>1.2</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/war/">Maven WAR Plugin </a>
+            </td>
+            <td>1.6</td>
+            <td>1.6.1</td>
+            <td>1.6.1</td>
+            <td>1.6.1</td>
+            <td>1.6.2 </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/webserver/">Maven Webserver Plugin </a>
+            </td>
+            <td>2.0</td>
+            <td>2.0</td>
+            <td>2.0</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/wizard/">Maven Wizard Plugin </a>
+            </td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>1.1</td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+            <td>
+              <img src="../images/icon_error_sml.gif" alt="Not available"/>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a href="http://maven.apache.org/maven-1.x/plugins/xdoc/">Maven XDoc Plugin </a>
+            </td>
+            <td>1.8</td>
+            <td>1.8</td>
+            <td>1.8</td>
+            <td>1.9.2</td>
+            <td>1.10 </td>
+          </tr>
+        </tbody>
+      </table>
+      <p>
+        <a name="footer"/>* We are currently working on this release, thus the information here is preliminary. </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/plugins/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/plugins/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/plugins/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Plugins</title>
+    <author email="aheritier at apache.org">Arnaud Heritier</author>
+  </properties>
+  <body>
+    <section name="Plugins">
+      <p>Adding functionality to Maven is done through the plugin mechanism. You'll find here the links to the documentation sites for various plugins.</p>
+      <table>
+        <tr>
+          <th>
+            <a href="http://maven.apache.org/maven-1.x/plugins/bundled/">Bundled plugins</a>
+          </th>
+          <td>Plugins that are included in the Maven distribution.</td>
+        </tr>
+        <tr>
+          <th>
+            <a href="./bundledHistory.html">Bundled plugins history</a>
+          </th>
+          <td>The history of plugins included in the Maven distribution.</td>
+        </tr>
+        <tr>
+          <th>
+            <a href="http://maven.apache.org/maven-1.x/plugins/sandbox/">Sandbox plugins</a>
+          </th>
+          <td>Plugins that have been developed by the Maven team but are not included in the main distribution either because they are still in early development or because they are no longer maintained.</td>
+        </tr>
+        <tr>
+          <th>
+            <a href="http://maven-plugins.sourceforge.net/">Maven Plugins @ sf.net</a>
+          </th>
+          <td>The Maven Plugins Project at SourceForge develops a series of plugins in collaboration with the maven team.</td>
+        </tr>
+        <tr>
+          <th>
+            <a href="./3rdparty.html">Third party plugins</a>
+          </th>
+          <td>A list of known plugins developed outside the Maven project.</td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/project/components.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/project/components.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/project/components.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Components</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Components">
+      <p>
+        Current versions of Maven are being developed from a series of reusable components.
+        These components, while not fully fledged subprojects, can be reused in your own applications
+        to utilise some of Maven's behaviour.
+      </p>
+      <subsection name="Maven Model Library">
+        <p>
+          The <!--TODO [later]: build site... a href="../components/maven-model/index.html" -->Maven Model Library<!--/a--> is used in Maven 1.1 and above
+          to read project descriptors (<code>project.xml</code> and <code>pom.xml</code>). It also contains
+          the object definitions of the model. It does not, however, handle interpolation or inheritence - this is a
+          job left to the Maven core.
+        </p>
+        <p>
+          You should use this library if you need to load, save, or convert between versions of the Maven model in
+          Java.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/project/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/project/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/project/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>About the Maven Project</title>
+    <author email="brett at apache.org">Brett Porter</author>
+    <author email="aheritier at apache.org">Arnaud Heritier</author>
+  </properties>
+  <body>
+    <section name="About the Maven Project">
+      <p>The Maven Project at Apache has a scope greater than just the main Maven application upon which its foundation is built.
+      </p>
+      <p>The mission statement of the Maven Project is to build tools that make development, project comprehension and communication easier and more transparent. Projects built with Maven tools should be able to follow best practices by default, but be offered the flexibility necessary to extend their environment to achieve anything necessary.</p>
+      <p>
+        The Maven Project consists of the following subprojects:
+      </p>
+      <ul>
+        <li>
+          <a href="../index.html">Maven 1.x core</a> - The current incarnation of Maven 1</li>
+        <li>
+          <a href="http://maven.apache.org/maven-1.x/plugins/index.html">Maven 1.x Plugins</a> - Plugin development for the current version of Maven 1.</li>
+        <li>
+          <a href="http://maven.apache.org">Maven 2</a> - the new generation of Maven</li>
+        <li>
+          <a href="http://maven.apache.org/continuum/">Continuum</a> - Continuum is a continous integration server for building Java based projects.</li>
+        <li>
+          <a href="http://maven.apache.org/wagon/">Maven Wagon</a> - A common API for multiple transports, used to communicate with remote repositories to upload, download, and execute commands.</li>
+        <li>
+          <a href="http://maven.apache.org/scm/">Maven SCM</a> - A common API for executing source control commands across a number of providers such as CVS, Subversion and ClearCase.</li>
+        <li>
+          <a href="http://maven.apache.org/jxr/">JXR</a> - A source cross referencing tool.</li>
+        <li>
+          <a href="http://maven.apache.org/doxia/">Doxia</a> - A content generation framework which aims to provide its users with powerful techniques for generating static and dynamic content.</li>
+      </ul>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/project/index.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/project/initial-proposal.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/project/initial-proposal.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/project/initial-proposal.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,98 @@
+----------------------------------------------------------
+R A T I O N A L E  A N D  E X P L A N A T I O N
+----------------------------------------------------------
+
+Over the last year Maven has been in heavy development, is nearly
+production quality and is rapidly being adopted as the next generation
+build tool for Java-based projects. Maven initially started as an
+attempt to get a grasp on the ever increasing number of problems
+encountered in trying to build, maintain and document the Jakarta
+Turbine projects.
+
+Ironically, the Turbine projects are still the most difficult to build
+with Maven but fortunately this is not the case for countless other
+projects that have adopted Maven which is evident by the sheer number
+of Java projects cropping up everywhere with the Maven/Tigris look and
+feel.  The db.apache.org project finally has a site which is generated
+by Maven and we would challenge anyone at Apache to find an easier
+more elegant solution for deploy maintaining and deploying a top-level
+Apache project.
+
+On the whole most projects that are now using Maven are finding the
+general overall burden of building, maintaining and deploy greatly
+lifted. We would now like to bring Maven to a wider audience and
+continue trying to unify and codify the Java development process which
+would be the primary goal of this project.
+
+What follows is a list of people who would make up the initial PMC and
+the projects that would initially seed maven.apache.org if this 
+proposal is accepted.
+
+----------------------------------------------------------
+P M C  M E M B E R S
+----------------------------------------------------------
+
+The following list of people would make up the PMC. All those listed
+have participated in the development of Maven heavily to this point in
+time and would like to commit to initializing maven.apache.org.
+
+Dion Gillard
+Pete Kazmier
+Bob McWhirter
+James Strachan
+Jason van Zyl
+
+----------------------------------------------------------
+S E E D  P R O J E C T S
+----------------------------------------------------------
+
+To start, we plan to place the following projects into
+maven.apache.org:
+
+Maven: 
+The core Maven application that can be found at
+http://maven.apache.org/
+
+Plugins:
+A project for all the Plugins that have formed around Maven. There are
+currently 50+ Plugins for Maven in the Apache repository and another
+30+ living in different places around the world. We would like to
+provide a place for Plugin developers to keep their work and have it
+be separate from the Maven core.
+
+Continuum:
+Continuous Integration tool for Java-based projects that use Maven as
+their primary build tool. This package will be released when Maven 1.0
+is released.
+
+SCM:
+A Source Control Management abstraction that is slated to be used with
+Continuum but will serve as a general SCM tool for integration into
+any Java project.
+
+Artifact Downloading Mechanism:
+This project has yet to be named but it is the engine inside Maven
+that provides the artifact comparison and downloading capabilities of
+Maven. It has been requested that this functionality be separated from
+the core of Maven so that it can be utilized by other project like
+Ant.
+
+----------------------------------------------------------
+
+If the board deems the project is not meant to be a top-level Apache
+project then we would humbly ask the Board to release Maven from
+Apache and allow us to use the "Maven" name and move the entire
+project to maven.org. We fully understand any decision that the Board
+makes but ask that we be allowed to continue on the path we feel is
+best for Maven. We really feel that Maven is ready to leave the fold
+of Turbine where it started and become a project in its own right. We
+would prefer to be at Apache, but would take the project out of the
+Apache realm if the Board would grant us permission to do so.
+
+-- 
+jvz.
+
+Jason van Zyl
+jvanzyl at apache.org
+
+http://tambora.zenplex.org

Added: branches/maven1/upstream/1.1~beta3/xdocs/project/maven-resolution.txt
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/project/maven-resolution.txt	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/project/maven-resolution.txt	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,54 @@
+  WHEREAS, the Board of Directors deems it to be in
+  the best interests of the Foundation and consistent with
+  the Foundation's purpose to establish a Project Management
+  Committee charged with the creation and maintenance of
+  open-source software related to Java software development tools
+  which are predicated on the  use of Maven's Project Object Model (POM),
+  for distribution at no charge to the public.
+
+  NOW, THEREFORE, BE IT RESOLVED, that a Project Management
+  Committee (PMC), to be known as the "Maven PMC", be and
+  hereby is established pursuant to Bylaws of the Foundation;
+  and be it further
+
+  RESOLVED, that the Maven PMC be and hereby is responsible
+  for the creation and maintenance of software related to
+  Java software development, maintenance, comprehension, 
+  based on software licensed to the Foundation; and be it further
+
+  RESOLVED, that the office of "Vice President, Maven" be and
+  hereby is created, the person holding such office to serve
+  at the direction of the Board of Directors as the chair of the
+  Maven PMC, and to have primary responsibility for management
+  of the projects within the scope of responsibility of the
+  Maven PMC; and be it further
+
+  RESOLVED, that the persons listed immediately below be and hereby
+  are appointed to serve as the initial members of the Maven PMC:
+
+  * Dion Gillard
+  * Pete Kazmier
+  * Bob McWhirter
+  * James Strachan
+  * Jason van Zyl
+
+  NOW, THEREFORE, BE IT FURTHER RESOLVED, that Dion Gillard
+  be and hereby is appointed to the office of Vice President, Maven,
+  to serve in accordance with and subject to the direction of the
+  Board of Directors and the Bylaws of the Foundation until death,
+  resignation, retirement, removal or disqualification, or until a
+  successor is appointed; and be it further
+
+  RESOLVED, that the initial Maven PMC be and hereby is tasked
+  with the creation of a set of bylaws intended to encourage open
+  development and increased participation in the Maven Project;
+  and be it further
+
+  RESOLVED, that the initial Maven PMC be and hereby is tasked
+  with the migration and rationalization of the Jakarta PMC
+  Turbine Maven subproject; and be it further
+
+  RESOLVED, that all responsibility pertaining to the Jakarta
+  Turbine Maven sub-project and encumbered upon the Jakarta PMC are
+  hereafter discharged.
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/project/related.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/project/related.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/project/related.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Related Projects</title>
+    <author email="ltheussl at apache.org">Lukas Theussl</author>
+  </properties>
+  <body>
+    <section name="Related Projects">
+      <p>
+        Here is a short collection of links to Maven-related projects.
+      </p>
+      <ul>
+        <li><a href="http://mevenide.codehaus.org/">Mevenide</a></li>
+        <li><a href="http://maven-proxy.codehaus.org/">Maven Proxy</a></li>
+        <li><a href="http://ant.apache.org/">Ant</a></li>
+        <li><a href="http://jakarta.apache.org/commons/jelly/">Jelly</a></li>
+      </ul>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/project/related.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/articles.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/articles.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/articles.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+  <properties>
+    <title>Articles and Press</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Books on Maven">
+      <table>
+        <tr>
+          <th>Title</th>
+          <th>Publisher</th>
+          <th>Author</th>
+          <th>Date</th>
+        </tr>
+        <tr>
+          <td>
+           <a href="http://www.oreilly.com/catalog/mavenadn/">Maven: A Developer's Notebook</a>
+           (<a href="http://www.oreilly.com/catalog/mavenadn/chapter/ch01.pdf">Sample Chapter <img src="../images/pdf.gif" alt="pdf.gif"/></a>)
+          </td>
+          <td>O'Reilly</td>
+          <td>Vincent Massol, Timothy M. O'Brien</td>
+          <td>July 2005</td>
+        </tr>
+      </table>
+    </section>
+    <section name="Maven in the Press">
+      <p>
+        Have written or would like to write a story on Maven?
+        <a href="../mail-lists.html">Contact us</a> on the developers
+        mailing list.
+      </p>
+      <table>
+        <tr>
+          <th>Title</th>
+          <th>Publication</th>
+          <th>Author</th>
+          <th>Date</th>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.internetnews.com/dev-news/article.php/3381841">Apache's Maven Comes of Age</a>
+            (Coverage of the release of Maven 1.0)
+          </td>
+          <td>internetnews.com</td>
+          <td>Sean Michael Kerner</td>
+          <td>15 July 2004</td>
+        </tr>
+      </table>
+    </section>
+    <section name="Articles on Maven">
+      <table>
+        <tr>
+          <th>Title</th>
+          <th>Publication</th>
+          <th>Author</th>
+          <th>Date</th>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.onjava.com/pub/a/onjava/2005/09/07/maven.html">Building J2EE Projects with Maven</a>
+          </td>
+          <td>-</td>
+          <td>Vincent Massol</td>
+          <td>7 September 2005</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="https://sydneyjug.dev.java.net/files/documents/922/15554/sjug20050601.pdf">Maven 2.0 and Continuum SJUG Presentation</a>
+          </td>
+          <td>-</td>
+          <td>Brett Porter</td>
+          <td>1 June 2005</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www-128.ibm.com/developerworks/opensource/library/os-maven/index.html">Exploiting Maven in Eclipse</a>
+          </td>
+          <td>developerWorks</td>
+          <td>Gilles Dodinet</td>
+          <td>24 May 2005</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0503_boog/0503_boog.html?ca=dgr-lnxw09Maven">Managing WebSphere Portal V5.1 projects with Apache Maven and Rational Application Developer 6.0</a>
+          </td>
+          <td>developerWorks</td>
+          <td>Hinrich Boog</td>
+          <td>30 March 2005</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.codehaus.org/~vmassol/blog/Maven%201.0%20-%2020041216.ppt">Maven 1.0 Javapolis Presentation</a>
+          </td>
+          <td>-</td>
+          <td>Vincent Massol</td>
+          <td>16 December 2004</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.oracle.com/technology/pub/articles/masterj2ee/j2ee_wk2.html">Master and Commander by Julien Dubois</a>
+          </td>
+          <td>Oracle</td>
+          <td>Julien Dubois</td>
+          <td>November 2004</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.manfred-wolff.de/Maven-short.pdf">installing and working with Maven (in German)</a>
+          </td>
+          <td>-</td>
+          <td>Manfred Wolff</td>
+          <td>August 2004</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.onjava.com/pub/a/onjava/2004/03/17/maven.html">Extending Maven Through Plugins by Eric Pugh</a>
+          </td>
+          <td>OnJava</td>
+          <td>Eric Pugh</td>
+          <td>17 March 2004</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.theserverside.com/tt/articles/article.tss?l=MavenMagic">Maven Magic</a> - a
+            tutorial on Maven and J2EE projects.
+          </td>
+          <td>TheServerSide</td>
+          <td>Srikanth Shenoy</td>
+          <td>November 2003</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.jdocentral.com/JDO_Articles_20031117.html">JDO Meets Maven</a>
+          </td>
+          <td>JDOCentral</td>
+          <td>Andy Jefferson</td>
+          <td>17 November 2003</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.onjava.com/pub/a/onjava/2003/10/22/maven.html">Developing with Maven by Rob Herbst</a>
+          </td>
+          <td>OnJava</td>
+          <td>Rob Herbst</td>
+          <td>22 October 2003</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.devx.com/java/Article/17204">Apache Maven Simplifies the Java Build Process Even More Than Ant</a>
+          </td>
+          <td>DevX</td>
+          <td>Dave Ford</td>
+          <td>2 September 2003</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www-128.ibm.com/developerworks/java/library/j-maven/">Project management: Maven makes it easy</a>
+          </td>
+          <td>developerWorks</td>
+          <td>Charles Chan</td>
+          <td>8 July 2003</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.pivolis.com/pdf/J2EE_projects_Maven_V1.1.pdf">Building J2EE applications with Maven</a>
+            (Slides from TheServerSide Symposium).
+            <img src="../images/pdf.gif" alt="pdf.gif"/>
+          </td>
+          <td>TheServerSide</td>
+          <td>Vincent Massol</td>
+          <td>27 June 2003</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.javaworld.com/javaworld/jw-10-2002/jw-1011-maven.html">Maven ties together tools for better code management</a>
+          </td>
+          <td>JavaWorld</td>
+          <td>Jeff Linwood</td>
+          <td>11 October 2002</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://www.javausergroup.at/events/maven.pdf">The Stairway to Maven</a>
+            <img src="../images/pdf.gif" alt="pdf.gif"/>
+          </td>
+          <td></td>
+          <td>Siegfried GÖSCHL</td>
+          <td>26 June 2002</td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://wiki.astrogrid.org/bin/view/Astrogrid/MakingWarWithMaven">How to get Maven to build your web service into a WAR on AstroGrid</a>
+          </td>
+          <td>Astrogrid</td>
+          <td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://wiki.astrogrid.org/bin/view/Astrogrid/MavenFAQ">Some Maven FAQs on AstroGrid</a>
+          </td>
+          <td>Astrogrid</td>
+          <td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://wiki.astrogrid.org/bin/view/Astrogrid/UsefulMavenNotes">Some Useful Maven Notes on AstroGrid</a>
+          </td>
+          <td>Astrogrid</td>
+          <td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>
+            <a href="http://hotwork.sourceforge.net/hotwork/manual/maven/index.html">A tutorial for Maven, J2EE projects,
+            and MevenIDE</a> (in Portuguese).
+          </td>
+          <td></td>
+          <td></td>
+          <td></td>
+        </tr>
+      </table>
+      <p>
+        Have written or would like to write an article on Maven?
+        <a href="../mail-lists.html">Contact us</a> on the developers
+        mailing list to include it here.
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/backwards-compatibility.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/backwards-compatibility.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/backwards-compatibility.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,304 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Compatibility Issues</title>
+    <author email="brett AT apache DOT org">Brett Porter</author>
+    <author email="ltheussl AT apache DOT org">Lukas Theussl</author>
+    <author email="aheritiert AT apache DOT org">Arnaud Heritier</author>
+  </properties>
+
+  <body>
+    <section name="Compatibility Issues">
+      <p>
+        This page details some of the backwards compatibility issues that you
+        might encounter upgrading between Maven versions, and how to update your
+        project. You'll find here :
+      </p>
+      <ul>
+        <li><a href="#Changes_Between_Maven_1.0.2_and_Maven_1.1-beta-3">Changes Between Maven 1.0.2 and Maven 1.1-beta-3</a> : If you are using the last release.</li>
+        <li><a href="#Changes_Between_Maven_1.1-beta-2_and_Maven_1.1-beta-3">Changes Between Maven 1.1-beta-2 and Maven 1.1-beta-3</a> : If you are already using the last testing release.</li>
+      </ul>
+      <subsection name="Changes Between Maven 1.0.2 and Maven 1.1-beta-3">
+        <dl>
+          <dt>JDK requirement is now 1.4 and above</dt>
+          <dd>
+            <p>
+              The JDK required to <i>run</i> Maven is now 1.4 or above. This does not affect what JDKs you can build your
+              libraries for, however - you can still generate class files that will run on 1.1 JVMs as before.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Bundled Ant version changed from 1.5.3-1 to 1.6.5</dt>
+          <dd>
+            <p>
+              While in most cases this change should be transparent, those <b>using optional tasks will need to add them as
+              a dependency to their plugin/project</b>, as not all optional tasks are bundled with Maven any more.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Deprecated Plugins Removed</dt>
+          <dd>
+            <p>
+              The following plugins are no longer distributed with Maven by default. They are still available using
+              the <code>plugin:download</code> command to obtain the last version released, and the source
+              code is available from the plugin sandbox. If there is sufficient interest in maintaining them or moving
+              them to another project it will be considered.
+            </p>
+            <ul>
+              <li>abbot</li>
+              <li>appserver</li>
+              <li>ashkelon</li>
+              <li>aspectwerkz</li>
+              <li>caller</li>
+              <li>castor</li>
+              <li>docbook <i>(note that there is a superior docbook plugin at <a href="http://maven-plugins.sourceforge.net/">the SourceForge Maven Plugins project</a>)</i></li>
+              <li>hibernate</li>
+              <li>j2ee</li>
+              <li>jboss <i>(can be replaced by <a href="http://cargo.codehaus.org/Maven1+plugin">Cargo</a>)</i></li>
+              <li>jbuilder</li>
+              <li>jcoverage</li>
+              <li>jdee</li>
+              <li>jdeveloper</li>
+              <li>jetty <i>(can be replaced by <a href="http://cargo.codehaus.org/Maven1+plugin">Cargo</a>)</i></li>
+              <li>jnlp</li>
+              <li>junit-doclet</li>
+              <li>latex</li>
+              <li>latka</li>
+              <li>release <i>(replaced by <a href="http://maven.apache.org/maven-1.x/plugins/scm/">scm plugin</a>)</i></li>
+              <li>repository</li>
+              <li>shell</li>
+              <li>struts</li>
+              <li>tjdo</li>
+              <li>uberjar <i>(can be replaced by <a href="http://maven-plugins.sourceforge.net/maven-javaapp-plugin/">javaapp</a>)</i></li>
+              <li>vdoclet</li>
+              <li>webserver</li>
+              <li>wizard</li>
+            </ul>
+          </dd>
+        </dl>
+        <dl>
+          <dt>The <code>default</code> attribute in maven.xml has been deprecated</dt>
+          <dd>
+            <p>
+              The default goal should be specified in a <code>&lt;defaultGoal&gt;</code> tag inside the 
+              <code>&lt;build&gt;</code> section of project.xml instead of maven.xml.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Implicit dependencies on JARs in Maven's <code>lib</code> directory</dt>
+          <dd>
+            <p>
+              The following libraries are no longer distributed with Maven:
+            </p>
+            <ul>
+              <li><code>commons-digester</code></li>
+              <li><code>commons-graph</code></li>
+              <li><code>commons-lang</code></li>
+              <li><code>which</code></li>
+            </ul>
+            <p>
+              If a plugin did not declare a dependency but relied on its existence, it may fail to work under Maven 1.1.
+            </p>
+            <p>
+              In addition, the versions of some libraries have changed, which may affect plugins.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Upgrading <code>maven.jar</code></dt>
+          <dd>
+            <p>
+              If you are directly importing and using classes from this package, you may find classes
+              from the <code>org.apache.maven.project</code> package are missing as they have moved.
+              This may also apply if you are using <code>maven-jelly-tags</code>.
+            </p>
+            <p>
+              <b>Fix:</b> Include <code>maven-model-3.0.1</code> in your project's dependencies.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Changes to <code>org.apache.maven.project.Repository</code> (and use of <code>pom.repository.*</code> in Jelly)</dt>
+          <dd>
+            <p>
+              The <code>Repository</code> class now houses only the information from the project model.
+              You may find that static methods such as <code>splitSCMConnection</code> and <code>tokenizerToArray</code>
+              or fields such as <code>scmType</code>, which depended on the split function, are missing.
+            </p>
+            <p>
+              <b>Fix:</b>The static methods have been removed from the core 
+              but they exist in the <code>RepositoryUtils</code> class in <code>maven-changelog-plugin</code> if needed.
+              All other plugins had been manually splitting the connection string. 
+              See <code>maven-scm-plugin</code> for an example of this.
+              The future should see all plugins and code using Maven SCM for this task, and all dealings with an
+              SCM system.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Use of <code>Project.getDependencyPath</code> and <code>Project.getDependency</code></dt>
+          <dd>
+            <p>
+              If you have a single non-JAR artifact that you resolve using this function, it will no longer be
+              found.
+            </p>
+            <p>
+              <b>Fix:</b> Specify the type in the argument. The full form is
+              <code>getDependency('groupId:artifactId:type')</code>. Type is defaulted to <code>jar</code>.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>POM and Entities</dt>
+          <dd>
+            <p>
+              Due to a bug in the new model generated by modello (See <a href="http://jira.codehaus.org/browse/MAVEN-1755">MAVEN-1755</a>) relative SYSTEM entities do not work in the POM.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>XML APIs</dt>
+          <dd>
+            <p>
+              As in maven 1.0, <a href="/dependencies.html">xercesImpl,xml-apis and xml-resolver</a> 
+              are loaded in the endorsed libraries of the JVM. You can't override them and if you use 
+              another version of xml-apis in your tests, you have to fork the JVM.
+            </p>
+            <p>
+              If in a custom goal or in a plugin, you use some xslt transformations, we recommend that you not
+              use the style task in ant which will not work with all JDKs. Instead, you are encouraged 
+              to use a custom process launched in a forked JVM (like it's done in the PDF plugin
+              for example).
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Parse errors on previously 'valid' project files</dt>
+          <dd>
+            <p>
+              <code>project.xml</code> files that used to work in older versions of Maven may now present parse
+              errors. The parser in Maven 1.1 is much less tolerant of invalid <code>project.xml</code> files
+              to avoid silently masking syntax errors. Some XML features are not enabled (such as DOCTYPE ENTITY
+              declarations) - see the <a href="../faq.html">FAQ</a> for an explanation.
+            </p>
+            <p>
+              <b>Fix:</b> Check your project file against the XSD published for the model version you are using.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Deprecated <code>create-upload-bundle</code> goal.</dt>
+          <dd>
+            <p>
+              Replaced by <code>artifact:create-upload-bundle</code>.
+            </p>
+          </dd>
+        </dl>
+      </subsection>
+
+      <subsection name="Changes Between Maven 1.1-beta-2 and Maven 1.1-beta-3">
+        <dl>
+          <dt>Deprecated Plugins Removed</dt>
+          <dd>
+            <p>
+              The following plugins are no longer distributed with Maven by default. They are still available using
+              the <code>plugin:download</code> command to obtain the version released with Maven 1.0.2, and the source
+              code is available from the plugin sandbox. If there is sufficient interest in maintaining them or moving
+              them to another project it will be considered.
+            </p>
+            <ul>
+              <li>abbot</li>
+              <li>castor</li>
+              <li>hibernate</li>
+              <li>j2ee</li>
+              <li>jboss <i>(can be replaced by <a href="http://cargo.codehaus.org/Maven1+plugin">Cargo</a>)</i></li>
+              <li>jbuilder</li>
+              <li>jcoverage</li>
+              <li>jetty <i>(can be replaced by <a href="http://cargo.codehaus.org/Maven1+plugin">Cargo</a>)</i></li>
+              <li>jnlp</li>
+              <li>release <i>(replaced functionality by scm)</i></li>
+              <li>repository</li>
+              <li>uberjar <i>(can be replaced by <a href="http://maven-plugins.sourceforge.net/maven-javaapp-plugin/">javaapp</a>)</i></li>
+            </ul>
+          </dd>
+        </dl>
+        <dl>
+          <dt>XML APIs</dt>
+          <dd>
+            <p>
+              Due to the problems found in the parsers bundled in the different JDK, we re-introduced 
+              xerces in maven.
+            </p>
+            <p>
+              As in maven 1.0, <a href="../dependencies.html">xercesImpl,xml-apis and xml-resolver</a> 
+              are loaded in the endorsed libraries of the JVM. You can't override them and if you use 
+              another version of xml-apis in your tests, you have to fork the JVM.
+            </p>
+            <p>
+              If in a custom goal or in a plugin, you use some xslt transformations, we recommend that you not
+              use the style task in ant which will not work with all JDKs. Instead, you are encouraged to use 
+              a custom process launched in a forked JVM (Like it's done in the PDF plugin
+              for example).
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>XML Entities</dt>
+          <dd>
+            <p>
+              With the upgrade of Dom4J, relative SYSTEM entities work in xdocs and maven.xml.
+              Due to a bug in the new model generated by modello 
+              (See <a href="http://jira.codehaus.org/browse/MAVEN-1755">MAVEN-1755</a>) relative 
+              SYSTEM entities do not work in the POM.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Deprecated <code>create-upload-bundle</code> goal.</dt>
+          <dd>
+            <p>
+              Replaced by <code>artifact:create-upload-bundle</code>.
+            </p>
+          </dd>
+        </dl>
+        <dl>
+          <dt>Multi-projects issues fixed</dt>
+          <dd>
+            <p>
+              Several important issues concerning multi-projects are now fixed which resolve backward 
+              incompabilities with maven 1.0.x introduced in previous betas.
+              (<a href="http://jira.codehaus.org/browse/MPMULTIPROJECT-66">MPMULTIPROJECT-66</a>,
+              <a href="http://jira.codehaus.org/browse/MPMULTIPROJECT-60">MPMULTIPROJECT-60</a>,
+              <a href="http://jira.codehaus.org/browse/MAVEN-1638">MAVEN-1638</a>,
+              <a href="http://jira.codehaus.org/browse/MAVEN-1691">MAVEN-1691</a>, ...)
+            </p>
+          </dd>
+        </dl>
+      </subsection>
+
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/command-line.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/command-line.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/command-line.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Command Line Reference</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Command Line Reference">
+      <p>The following command line options are available when running Maven:</p>
+      <source><![CDATA[usage: maven [options] [goal [goal2 [goal3] ...]]
+
+Options:
+ -D,--define arg    Define a system property
+ -E,--emacs         Produce logging information without adornments
+ -P,--plugin-help   Display help on using a given plugin
+ -X,--debug         Produce execution debug output
+ -b,--nobanner      Suppress logo banner
+ -d,--dir arg       Set effective working directory (ignored with -p or -f)
+ -e,--exception     Produce exception stack traces
+ -f,--find arg      Set project file and effective working directory by finding
+                    the project file
+ -g,--goals         Display available goals
+ -h,--help          Display help information
+ -i,--info          Display system information
+ -o,--offline       Build is happening offline
+ -p,--pom arg       Set project file
+ -q,--quiet         Reduce execution output
+ -u,--usage         Display help on using the current project
+ -v,--version       Display version information]]></source>
+      <p>
+        Typically, Maven is run with a list of goals in the order they should be executed.
+        If no goals are specified, the default goal specified in <code>maven.xml</code> file.
+        Additionally, the following switches can be specified. Note that <code>-P</code>,
+        <code>-g</code>, <code>-h</code>, <code>-i</code>, <code>-u</code> and <code>-v</code>
+        cause Maven to exit immediately without running any goals given.
+      </p>
+      <table>
+        <tr>
+          <th width="10%">Option</th><th width="90%">Usage</th>
+        </tr>
+        <tr>
+          <td><a name="-D">-D</a></td>
+          <td>
+            Defines a system property. This will take priority over any other property specified.
+            eg. <code>maven -Dmaven.repo.remote=http://public.planetmirror.com/pub/maven</code>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-E">-E</a></td>
+          <td>
+            Output messages without adornments, making it more suitable for use in emacs.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-P">-P</a></td>
+          <td>
+            Get help with plugins. When used without any arguments, ie. <code>maven -P</code>, all installed
+            plugins are listed with a description. When a plugin name is given, the goals in that plugin are listed.
+            eg. <code>maven -g jar</code> lists the goals such as <code>jar:jar</code>, <code>jar:install</code>, and
+            so on.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-X">-X</a></td>
+          <td>
+            Output full debugging information while performing the build. This can be helpful in tracing what is
+            happening inside a plugin, or sending information to the Maven Developers about an internal bug.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-b">-b</a></td>
+          <td>
+            Don't show the ASCII Art banner.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-d">-d</a></td>
+          <td>
+            Set the effective working directory for running Maven in.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-e">-e</a></td>
+          <td>
+            Display the stack trace for any final exception that leads to a build failure.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-f">-f</a></td>
+          <td>
+            Set the effective working directory for running Maven in by searching for the closest
+            <code>project.xml</code>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-g">-g</a></td>
+          <td>
+            List all goals available, both in this project and all installed plugins. Best used with <code>grep</code>
+            or a pager such as <code>less</code>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-h">-h</a></td>
+          <td>
+            List the help commands above.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-i">-i</a></td>
+          <td>
+            Show system information. Lists environment properties such as the Java version, all installed plugins
+            and their versions, and the user's <code>build.properties</code> file.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-o">-o</a></td>
+          <td>
+            Run in offline mode. This is equivalent to specifying the property <code>maven.mode.online=false</code>.
+            Missing dependencies will cause failures, however old SNAPSHOTs will only cause a warning.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-p">-p</a></td>
+          <td>
+            Specify the project file to use. By default it is <code>project.xml</code> in the current directory.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-q">-q</a></td>
+          <td>
+            Run in quiet mode. Only errors are output. Note that some plugins do not honour this option, so it
+            should not be considered as a silent mode.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-u">-u</a></td>
+          <td>
+            Show the usage instructions for the current project. This will include the goals specified in
+            <code>maven.xml</code>, and the instructions listed in the <code>description</code> element of the project.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="-v">-v</a></td>
+          <td>
+            Show the Maven version and exit.
+          </td>
+        </tr>
+      </table>
+      <subsection name="MAVEN_OPTS">
+        <p>
+          Specify additional options using the <code>MAVEN_OPTS</code> environment variable.
+          It is for passing parameters to the Java VM when running Maven.
+          For example, to increase the amount of memory to 1024 Meg for the entire run of Maven, use:
+        </p>
+        <source>MAVEN_OPTS=-Xmx1024m</source>
+        <p>
+          Also note that a given plug-in may have a property to set for its memory usage,
+          such as the Javadoc plug-in's <code>maven.javadoc.maxmemory</code> property.
+          This is because that particular plugin forks an additional Java VM.
+        </p>
+        <p>
+          For another example, set the MAVEN_OPTS to run Java in debug mode:
+        </p>
+        <source>MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y</source>
+        <p>
+          After setting this property, run "maven cactus:test" (or whatever goal to debug)
+          and it will block, waiting for a debug connection.
+        </p>
+        <p>
+          Then, in your IDE, select the "Run -> Debug" window and craete a new "Remote Java Application"
+          configuration, passing the port set in MAVEN_OPTS (8787 in this case).
+        </p>
+        <p>
+          Once running this configuration in debug, the blocked Maven session will continue, enabling
+          debugging from your IDE.
+        </p>
+      </subsection>
+    </section>
+  </body>
+
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/conventions.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/conventions.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/conventions.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Maven Conventions</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="ceki at apache.org">Ceki G&#252;lc&#252;</author>
+    <author email="jon at latchkey.com">Jon S. Stevens</author>
+    <author email="donaldp at apache.org">Peter Donald</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Maven Conventions">
+      <p>
+        This document defines some conventions that Maven recommends projects adopt. This is especially important if
+        you intend to distribute your project publicly.
+      </p>
+    </section>
+
+    <section name="Artifact Naming">
+      <p>
+        This section outlines the naming conventions used in the Maven
+        project object model (POM). This document is an attempt to try and
+        unify the many various ways projects name the artifacts that they
+        publish for general consumption by the Java developer community (regardless of whether they are using Maven).
+      </p>
+      <p>
+        The first thing you will do when creating a project is to select a group ID and an artifact ID.
+        If you are building a project to be part of a larger product that is already using Maven, you should attempt to
+        follow any patterns already established by other projects for consistency.
+      </p>
+      <p>
+        These identifiers should be comprised of <i>lowercase</i> letters, digits, and hyphens only.
+      </p>
+      <p>
+        In general you should select a group ID that describes the entire product, and artifact IDs that are the
+        basis of filenames for each item you distribute. The artifact ID may or may not overlap the group ID.
+      </p>
+      <p>
+        For example:
+      </p>
+      <source>maven : maven-core
+maven : wagon-api</source>
+      <p>
+        As previously mentioned, the artifact ID should be the basis of the filename for the project, as by default
+        Maven will use that and the version to assemble the filename. Having the version as part of the filename is
+        strongly recommended to ensure that the version can be determined at a glance without having to check a possibly
+        non-existant manifest, or compare file sizes with the official releases.
+      </p>
+      <p>
+        Following these guidelines are particularly encouraged when distributing via the Maven Repository, to ensure
+        that it can easily fit alongside other projects and reduce the risk of conflicts and confusion.
+      </p>
+    </section>
+
+    <!-- Label referenced elsewhere -->
+    <section name="Directory Structure">
+      <p>
+        Having a common directory layout would allow for users familiar
+        with one Maven project to immediately feel at home in another
+        Maven project. The advantages are analogous to adopting a
+        site-wide look-and-feel.
+      </p>
+      <p>
+        The next two sections document the directory layout expected by
+        Maven and the directory layout created by Maven.  Please try to
+        conform to this structure as much as possible; however, if you
+        can't these settings can be overridden via the project descriptor.
+      </p>
+      <source>
+/
++- src/
+|  +- main/
+|  |  +- java/
+|  |  |  +- ...
+|  |  +- resources/
+|  |     +- ...
+|  +- test/
+|  |  +- java/
+|  |  |  +- ...
+|  |  +- resources/
+|  |     +- ...
+|  +- site/
+|     +- xdoc/
+|        +- ...
++- target/
+|  +- ...
++- project.xml
++- README.txt
++- LICENSE.txt</source>
+      <p>
+        At the top level files descriptive of the project: a <code>project.xml</code> file (and any properties,
+        <code>maven.xml</code> or <code>build.xml</code> if using Ant). In addition, there are textual documents meant
+        for the user to be able to read immediately on receiving the source: <code>README.txt</code>,
+        <code>LICENSE.txt</code>, <code>BUILDING.txt</code>, etc.
+      </p>
+      <p>
+        There are just two subdirectories of this structure: <code>src</code> and <code>target</code>. The only other
+        directories that would be expected here are metadata like <code>CVS</code> or <code>.svn</code>, and any
+        subprojects in a multiproject build (each of which would be laid out as above).
+      </p>
+      <p>
+        <b>Note:</b> currently, Maven 1.x violates this principle by defaulting the <code>xdocs</code> location to the
+        top level directory. It is proposed that in future this be moved to <code>src/site/xdoc</code>.
+      </p>
+      <p>
+        The <code>target</code> directory is used to house all output of the build.
+      </p>
+      <p>
+        The <code>src</code> directory contains all of the source material for building the project, its site and so on.
+        It contains a subdirectory for each type: <code>main</code> for the main build artifact, <code>test</code> for
+        the unit test code and resources, <code>site</code> and so on.
+      </p>
+      <p>
+        Within artifact producing source directories (ie. <code>main</code> and <code>test</code>), there is one
+        directory for the language <code>java</code> (under which the normal package hierarchy exists), and one for
+        <code>resources</code> (the structure which is copied to the target classpath given the default resource
+        definition).
+      </p>
+      <p>
+        If there are other contributing sources to the artifact build, they would be under other subdirectories: for
+        example <code>src/main/antlr</code> would contain Antlr grammar definition files.
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/glossary.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/glossary.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/glossary.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Glossary</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="stephanemor at yahoo.fr">Stéphane Mor</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Glossary">
+      <p>
+        This document describes some of the most common terms encountered while
+        using Maven. These terms, that have an explicit meaning for Maven, can 
+        sometimes be confusing for newcomers.
+      </p>
+      <table>
+        <tr><th width="20%">Term</th><th width="80%">Description</th></tr>
+        <tr>
+          <td>Project</td>
+          <td>
+            Maven thinks in terms of projects. Everything that you will build
+            are projects. Those projects follow a well defined "Project Object
+            Model". Projects can depend on other projects, in which case the
+            latter are called "dependencies". A project may consistent of several
+            subprojects, however these subprojects are still treated equally as
+            projects.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="POM">Project Object Model (POM)</a></td>
+          <td>
+            The Project Object Model, almost always referred as the POM for brevity,
+            is the metadata that Maven needs to work with your project. Its name is
+            "project.xml" and it is located in the root directory of each project.
+            <br/>
+            To learn how to build the POM for your project, please read about the
+            <a href="project-descriptor.html">project descriptor</a>.
+          </td>
+        </tr>
+        <tr>
+          <td>Artifact</td>
+          <td>
+            An artifact is something that is either produced or used by a
+            project. Examples of artifacts produced by Maven for a project
+            include: JARs, source and binary distributions, WARs.
+            Each artifact is uniquely identified by a <a href="#GroupId">group ID</a>
+            and an artifact ID which is unique within a group.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="GroupId">Group ID</a></td>
+          <td>
+            A group ID is a universally unique identifier for a project. While this is often just
+            the project name (eg. <code>commons-collections</code>), it is helpful to use a fully-qualified
+            package name to distinguish it from other projects with a similar name (eg. <code>org.apache.maven</code>).
+          </td>
+        </tr>
+        <tr>
+          <td>Dependency</td>
+          <td>
+            A typical Java project relies on libraries to build and/or run.
+            Those are called "dependencies" inside Maven. Those dependencies are
+            usually other projects' JAR artifacts, but are referenced by the POM
+            that describes them.
+          </td>
+        </tr>
+        <tr>
+          <td>Plugin</td>
+          <td>
+            Maven is organized in plugins. Every piece of functionality in
+            Maven is provided by a plugin. Plugins provide <a href="#Goal">goals</a> and use the
+            metadata found in the POM to perform their task. Examples of plugins are: jar,
+            eclipse, war. Plugins are written in <a href="http://jakarta.apache.org/commons/jelly/">Jelly</a> 
+            and can be added, removed and edited at runtime.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="Goal">Goal</a></td>
+          <td>
+            Goals are what are executed to perform an action on the project. For example, the
+            <code>jar:jar</code> will compile the current project and produce a JAR.
+            Each goal exists in a plugin (except for those that you define yourself), and the
+            goal name usually reflects the plugin (eg. <code>java:compile</code> comes from the
+            <code>java</code> plugin).
+          </td>
+        </tr>
+        <tr>
+          <td><a name="Repository">Repository</a></td>
+          <td>
+            A repository is a structured storage of project artifacts. Those
+            artifacts are organized under the following structure:
+            <br/>
+            <code>$MAVEN_REPO/group id/artifact type/project-version.extension</code>
+            <br/>
+            For instance, a Maven JAR artifact will be stored in a repository
+            under <code>/repository/maven/jars/maven-1.0-beta-8.jar</code>.
+            <br/>
+            There are different repositories that Maven uses. The "remote
+            repositories" are a list of repositories to download from.
+            This might include an internet repository, its mirrors, and a private company
+            repository. The "central repository" is the one to upload generated artifacts to
+            (for developers of a company for instance). The "local repository" is the one
+            that you will have on your computer. Artifacts are downloaded just once (unless they
+            are a <a href="#Snapshots">SNAPSHOT</a>) from the remote repository to your local
+            repository.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="Snapshots">Snapshots</a></td>
+          <td>
+            Projects can (and should) have a special version including <code>SNAPSHOT</code> 
+            to indicate that they are a "work in progress", and are not yet released. When a
+            snapshot dependency is encountered, it is always looked for in all remote repositories,
+            and downloaded again if newer than the local copy.
+            <br/>
+            The version can either be the string <code>SNAPSHOT</code> itself, indicating
+            "the very latest" development version, or something like <code>1.1-SNAPSHOT</code>,
+            indicating development that will be released as 1.1 (i.e. newer than 1.0, but not yet 1.1).
+          </td>
+        </tr>
+        <tr>
+          <td><a name="XDoc">XDoc</a></td>
+          <td>
+            XDoc is the format of documentation that Maven currently understands. It is quite simple, and
+            allows embedding XHTML within a simple layout that is transformed into a uniform site.
+            <br/>
+            For information on how to create XDoc files, refer to the
+            <a href="../using/site.html">Building a Project Web Site</a> document.
+          </td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/idea.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/idea.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/idea.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Using Maven in IntelliJ IDEA</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Using Maven in IntelliJ IDEA">
+      <p>
+        The recommended way to integrate Maven into your IntelliJ IDEA, is to use the 
+        <a href="http://mevenide.codehaus.org/mevenide-idea/">MevenIDE for IDEA</a> plugin. It will
+        allow you to execute goals from within the IDE, visually edit the POM (project.xml) file,
+        select favorite and common goals for each module, etc. The MevenIDE for IDEA project is
+        still young, but provides most of the basic tools you will need to use Maven from IntelliJ.
+      </p>
+      <p>
+        Alternatively, you can configure it as an external tool, which allows you to define command
+        lines that execute Maven with customizable parameters. To add Maven as an external tool in 
+        IntelliJ IDEA 4.0+, open the IDE settings, and click the "External Tools" button. From there, 
+        press "Add..." to open a new dialog. The following settings should be used:
+      </p>
+      <table>
+        <tr>
+          <th>Name:</th>
+          <td><code>Maven (prompt)</code></td>
+        </tr>
+        <tr>
+          <th>Group:</th>
+          <td><code>Maven</code></td>
+        </tr>
+        <tr>
+          <th>Description:</th>
+          <td><code>Run Maven, prompting me for the goals to run</code></td>
+        </tr>
+        <tr>
+          <th>Program:</th>
+          <td><i>select <code>maven.bat</code> or <code>maven</code> from the <code>MAVEN_HOME/bin</code> directory
+            using the file browser</i></td>
+        </tr>
+        <tr>
+          <th>Parameters:</th>
+          <td><code>$Prompt$</code></td>
+        </tr>
+        <tr>
+          <th>Working Directory:</th>
+          <td><code>$ProjectFileDir$</code></td>
+        </tr>
+      </table>
+      <p>
+        When selected from the tools menu, this will prompt you for the goals to run, and run it from the main
+        project directory.
+      </p>
+      <p>
+        There are other tools you might like to set up in a similar fashion. You can quickly do this by pressing the
+        "Copy..." button and renaming the new tool. Here are some examples:
+      </p>
+        <ul>
+          <li>
+            As above, but use <code>console</code> as the parameters instead of <code>$Prompt$</code>.
+            This will start Maven's console in a small pane inside IntelliJ</li>
+          <li>
+            As above, but use <code>idea</code> (or <code>idea:multiproject</code>) as the parameters.
+            Name this "Regenerate IntelliJ project". When run, it will regenerate all your IntelliJ projects, and
+            IntelliJ will prompt you to reload your project. For more information, see the
+            <a href="http://maven.apache.org/maven-1.x/plugins/idea/">IntelliJ IDEA Plugin</a> documentation.
+          </li>
+          <li>
+            As above, but use <code>$FileDir$</code> instead of <code>$ProjectFileDir$</code>. This is useful
+            in a multiproject setup to run a specific goal on a particular module. In this case you should
+            select the "context menu" option instead of the "tools menu" option so that you can right-click on
+            a file in the navigation pane.</li>
+        </ul>
+      <p>
+        Finally, you might like to set up an output filter. In the external tools dialog, press the
+        "Output Filters..." button, and use the following settings:
+      </p>
+      <table>
+        <tr>
+          <th>Name:</th>
+          <td><code>Maven error link</code></td>
+        </tr>
+        <tr>
+          <th>Description:</th>
+          <td><code>Highlight the error of the maven compile goal</code></td>
+        </tr>
+        <tr>
+          <th>Regular expression to match output:</th>
+          <td><code>$FILE_PATH$:$LINE$:.*</code></td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/ide/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Using Maven in your IDE</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Using Maven in your IDE">
+      <p>
+        There are three ways to use Maven with your IDE:
+      </p>
+        <ul>
+          <li>Integrated into the project support</li>
+          <li>As an external tool</li>
+          <li>Using Maven to generate your IDE project settings</li>
+        </ul>
+      <p>
+        Support for IDE integration is provided by the <a href="http://mevenide.codehaus.org/">MevenIDE</a>
+        project. Currently, they support project editing in NetBeans 4.0+ and Eclipse.
+      </p>
+      <p>
+        Using Maven as an external tool is usually quite simple, and allows you to run Maven goals from
+        within your IDE. Specific instructions for setting up your IDE are listed here:
+      </p>
+        <ul>
+          <li><a href="idea.html">IntelliJ IDEA</a></li>
+        </ul>
+      <p>
+        Maven also provides plugins for several IDEs that will generate project files from your Maven
+        project descriptor. Please refer to the plugin documentation for your IDE:
+      </p>
+        <ul>
+          <li><a href="http://maven.apache.org/maven-1.x/plugins/idea/">IntelliJ IDEA</a></li>
+          <li><a href="http://maven.apache.org/maven-1.x/plugins/eclipse/">Eclipse</a></li>
+        </ul>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Reference</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Reference">
+      <p>
+        The reference section contains the following documents:
+      </p>
+      <table>
+        <tr>
+          <th><a href="glossary.html">Glossary</a></th>
+          <td>
+            The glossary lists several terms used throughout the documentation that you should become familiar with.
+          </td>
+        </tr>
+        <tr>
+          <th><a href="conventions.html">Conventions</a></th>
+          <td>
+            The conventions reference defines some of the conections recommended by Maven, such as
+            project source layout and artifact naming.
+          </td>
+        </tr>
+        <tr>
+          <th><a href="project-descriptor.html">Project Descriptor</a></th>
+          <td>
+            The project descriptor reference lists all of the fields available in the project descriptor,
+            what they mean and how they are treated.
+          </td>
+        </tr>
+        <tr>
+          <th><a href="properties.html">Properties Reference</a></th>
+          <td>
+            The properties reference lists all of the properties used by the Maven core, their meaning and defaults.
+            It does not describe special properties that configure the various plugins: for those, you should
+            consult the individual plugin documentation.
+          </td>
+        </tr>
+        <tr>
+          <th><a href="../tags.html">Maven Jelly Tag Lirary</a></th>
+          <td>
+            The Maven Jelly Tag Library can be used from a Jelly based
+            application to perform the tasks of any of the <code>&lt;maven:*/&gt;</code> tags.
+          </td>
+        </tr>
+        <tr>
+          <th><a href="command-line.html">Command Line Reference</a></th>
+          <td>
+            The command line reference lists all of the options that can be passed to Maven and their meaning.
+          </td>
+        </tr>
+        <tr>
+          <th><a href="ide/index.html">IDE Integration</a></th>
+          <td>
+            The IDE integration reference includes documentation for using Maven with your favourite IDE.
+          </td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/internal-repositories.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/internal-repositories.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/internal-repositories.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Internal Repositories</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Internal Repositories">
+      <p>
+        When using Maven, particularly in a corporate environment, connecting to the internet to download dependencies
+        is not acceptable for security, speed or bandwidth reasons. For that reason, it is desirable to set up an
+        internal repository to house a copy of artifacts, and to publish private artifacts to.
+      </p>
+      <p>
+        Such an internal repository can be downloaded from using HTTP or the file system (using a <code>file://</code>
+        URL), and uploaded to using SCP, FTP, or a file copy.
+      </p>
+      <p>
+        Note that as far as Maven is concerned, there is nothing special about this repository: it is another
+        <i>remote repository</i> that contains artifacts to download to a user's local cache, and is a publish
+        destination for artifact releases.
+      </p>
+      <p>
+        Additionally, you may want to share the repository server with your generated project sites. For more
+        information on creating and deploying sites, see <a href="../using/site.html">Creating a Site</a>.
+      </p>
+      <subsection name="Setting up the Internal Repository">
+        <p>
+          To set up an internal repository just requires that you have a place to put it, and then start copying
+          required artifacts there using the same layout as in a remote repository such as
+          <a href="http://www.ibiblio.org/maven/">Ibiblio</a>.
+        </p>
+        <p>
+          It is <b>not</b> recommended that you scrape or rsync:// a full copy of Ibiblio as there is a large amount
+          of data there. You can use a program such as <a href="http://maven-proxy.codehaus.org/">Maven Proxy</a>,
+          running on your internal repository's server, to download from the internet as required and then hold
+          the artifacts in your internal repository for faster downloading later.
+        </p>
+        <p>
+          The other options available are to manually download and vet releases, then copy them to the internal
+          repository, or to have Maven download them for a user, and manually upload the vetted artifacts to the
+          internal repository which is used for releases. This step is the only one available for artifacts where
+          the license forbids their distribution automatically, such as several J2EE JARs provided by Sun.
+          Refer to the <a href="standard-sun-jar-names.html">Standard Sun JAR Names</a> document for more information.
+        </p>
+        <p>
+          It should be noted that Maven intends to include enhanced support for such features in the future,
+          including click through licenses on downloading, and verification of signatures.
+        </p>
+      </subsection>
+      <subsection name="Using the Internal Repository">
+        <p>
+          Using the internal repository is quite simple. Simply set the <code>maven.repo.remote</code> property in
+          your project's properties:
+        </p>
+        <source>maven.repo.remote=http://repository.company.com/
+  <em>or</em>
+maven.repo.remote=file:///shared/repository</source>
+      </subsection>
+      <subsection name="Deploying to the Internal Repository">
+        <p>
+          One of the most important reasons to have one or more internal repositories is to be able to publish
+          your own private releases to share.
+        </p>
+        <p>
+          To publish to the repository, you will need to have access via one of SCP, SFTP, FTP, or the filesystem.
+          For example, to set up an SCP transfer, you define the following properties:
+        </p>
+        <source>
+maven.repo.list=myrepo
+maven.repo.myrepo=scp://repository.mycompany.com/
+maven.repo.myrepo.directory=/www/repository.mycompany.com/
+maven.repo.myrepo.username=${user.name}
+maven.repo.myrepo.privatekey=${user.home}/.ssh/id_dsa
+        </source>
+        <p>
+          With this configured, the <code>*:deploy</code> goals will now send the published artifacts to the "remote"
+          repository for sharing. This includes <code>jar:deploy</code>, <code>dist:deploy</code>,
+          <code>war:deploy</code> and so on.
+        </p>
+        <p>
+          For more information, please refer to the <a href="http://maven.apache.org/maven-1.x/plugins/artifact/">Artifact Plugin Reference</a>
+          and the section on <a href="../using/releasing.html">Making Releases</a>.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/links.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/links.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/links.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Links</title>
+    <author email="ltheussl at apache.org">Lukas Theussl</author>
+  </properties>
+  <body>
+    <section name="Related Links">
+      <p>
+        Here is a short collection of links to Maven-related material.
+      </p>
+      <ul>
+        <li><a href="articles.html">Books and Articles</a></li>
+        <li><a href="http://blogs.codehaus.org/projects/maven/">Maven Diaries</a></li>
+        <li><a href="http://www.mavenbook.org/">MavenBook.org</a></li>
+      </ul>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/reference/links.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/project-descriptor.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/project-descriptor.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/project-descriptor.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,1399 @@
+<?xml version="1.0"?>
+<document>
+  <properties>
+    <title>Maven</title>
+  </properties>
+  <body>
+    <section name="Maven">
+      <p>
+  This is a reference for the Maven project descriptor used in Maven.
+      </p>
+      <p>
+  An XSD is available at:
+      </p>
+<ul>
+       <li><a href="http://maven.apache.org/maven-v3_0_0.xsd">http://maven.apache.org/maven-v3_0_0.xsd</a> for Maven 1.1.</li>
+       <li><a href="http://maven.apache.org/maven-v4_0_0.xsd">http://maven.apache.org/maven-v4_0_0.xsd</a> for Maven 2.0.</li>
+</ul>
+      <source>
+&lt;<a href="#class_Model">project</a>&gt;
+  &lt;extend/&gt;
+  &lt;pomVersion/&gt;
+  &lt;id/&gt;
+  &lt;groupId/&gt;
+  &lt;artifactId/&gt;
+  &lt;name/&gt;
+  &lt;currentVersion/&gt;
+  &lt;shortDescription/&gt;
+  &lt;description/&gt;
+  &lt;url/&gt;
+  &lt;logo/&gt;
+  &lt;issueTrackingUrl/&gt;
+  &lt;inceptionYear/&gt;
+  &lt;gumpRepositoryId/&gt;
+  &lt;siteAddress/&gt;
+  &lt;siteDirectory/&gt;
+  &lt;distributionSite/&gt;
+  &lt;distributionDirectory/&gt;
+  &lt;mailingLists&gt;
+    &lt;<a href="#class_MailingList">mailingList</a>&gt;
+      &lt;name/&gt;
+      &lt;subscribe/&gt;
+      &lt;unsubscribe/&gt;
+      &lt;post/&gt;
+      &lt;archive/&gt;
+      &lt;otherArchives/&gt;
+    &lt;/mailingList&gt;
+  &lt;/mailingLists&gt;
+  &lt;developers&gt;
+    &lt;<a href="#class_Developer">developer</a>&gt;
+      &lt;id/&gt;
+      &lt;name/&gt;
+      &lt;email/&gt;
+      &lt;url/&gt;
+      &lt;organization/&gt;
+      &lt;organizationUrl/&gt;
+      &lt;roles/&gt;
+      &lt;timezone/&gt;
+      &lt;properties/&gt;
+    &lt;/developer&gt;
+  &lt;/developers&gt;
+  &lt;contributors&gt;
+    &lt;<a href="#class_Contributor">contributor</a>&gt;
+      &lt;name/&gt;
+      &lt;email/&gt;
+      &lt;url/&gt;
+      &lt;organization/&gt;
+      &lt;organizationUrl/&gt;
+      &lt;roles/&gt;
+      &lt;timezone/&gt;
+      &lt;properties/&gt;
+    &lt;/contributor&gt;
+  &lt;/contributors&gt;
+  &lt;licenses&gt;
+    &lt;<a href="#class_License">license</a>&gt;
+      &lt;name/&gt;
+      &lt;url/&gt;
+      &lt;distribution/&gt;
+      &lt;comments/&gt;
+    &lt;/license&gt;
+  &lt;/licenses&gt;
+  &lt;versions&gt;
+    &lt;<a href="#class_Version">version</a>&gt;
+      &lt;name/&gt;
+      &lt;tag/&gt;
+      &lt;id/&gt;
+    &lt;/version&gt;
+  &lt;/versions&gt;
+  &lt;branches&gt;
+    &lt;<a href="#class_Branch">branch</a>&gt;
+      &lt;tag/&gt;
+    &lt;/branch&gt;
+  &lt;/branches&gt;
+  &lt;packageGroups&gt;
+    &lt;<a href="#class_PackageGroup">packageGroup</a>&gt;
+      &lt;title/&gt;
+      &lt;packages/&gt;
+    &lt;/packageGroup&gt;
+  &lt;/packageGroups&gt;
+  &lt;reports/&gt;
+  &lt;<a href="#class_Repository">repository</a>&gt;
+    &lt;connection/&gt;
+    &lt;developerConnection/&gt;
+    &lt;url/&gt;
+  &lt;/repository&gt;
+  &lt;<a href="#class_Organization">organization</a>&gt;
+    &lt;name/&gt;
+    &lt;url/&gt;
+    &lt;logo/&gt;
+  &lt;/organization&gt;
+  &lt;properties/&gt;
+  &lt;package/&gt;
+  &lt;<a href="#class_Build">build</a>&gt;
+    &lt;nagEmailAddress/&gt;
+    &lt;sourceDirectory/&gt;
+    &lt;unitTestSourceDirectory/&gt;
+    &lt;aspectSourceDirectory/&gt;
+    &lt;integrationUnitTestSourceDirectory/&gt;
+    &lt;sourceModifications&gt;
+      &lt;<a href="#class_SourceModification">sourceModification</a>&gt;
+        &lt;className/&gt;
+        &lt;property/&gt;
+        &lt;directory/&gt;
+        &lt;includes/&gt;
+        &lt;excludes/&gt;
+      &lt;/sourceModification&gt;
+    &lt;/sourceModifications&gt;
+    &lt;<a href="#class_UnitTest">unitTest</a>&gt;
+      &lt;resources&gt;
+        &lt;<a href="#class_Resource">resource</a>&gt;
+          &lt;targetPath/&gt;
+          &lt;filtering/&gt;
+          &lt;directory/&gt;
+          &lt;includes/&gt;
+          &lt;excludes/&gt;
+        &lt;/resource&gt;
+      &lt;/resources&gt;
+      &lt;includes/&gt;
+      &lt;excludes/&gt;
+    &lt;/unitTest&gt;
+    &lt;defaultGoal/&gt;
+    &lt;resources&gt;
+      &lt;<a href="#class_Resource">resource</a>&gt;
+        &lt;targetPath/&gt;
+        &lt;filtering/&gt;
+        &lt;directory/&gt;
+        &lt;includes/&gt;
+        &lt;excludes/&gt;
+      &lt;/resource&gt;
+    &lt;/resources&gt;
+  &lt;/build&gt;
+  &lt;dependencies&gt;
+    &lt;<a href="#class_Dependency">dependency</a>&gt;
+      &lt;id/&gt;
+      &lt;groupId/&gt;
+      &lt;artifactId/&gt;
+      &lt;version/&gt;
+      &lt;url/&gt;
+      &lt;jar/&gt;
+      &lt;type/&gt;
+      &lt;properties/&gt;
+    &lt;/dependency&gt;
+  &lt;/dependencies&gt;
+&lt;/project&gt;
+</source>
+      <a name="class_Model"/>
+      <subsection name="project">
+        <p>
+         The <code>&lt;project&gt;</code> element specifies various attributes 
+         about a project. This is the root element of the project descriptor. 
+         The following table lists all of the possible child elements. Child 
+         elements with children are then documented further in subsequent 
+         sections.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>extend</code>
+            </td>
+            <td>
+            The location of the parent project, if one exists. Values from the 
+            parent project will be the default for this project if they are 
+            left unspecified. The path may be absolute, or relative to the 
+            current project.xml file.
+            
+            <div class="source"><pre>&lt;extend&gt;${basedir}/../project.xml&lt;/extend&gt;</pre></div>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>pomVersion</code>
+            </td>
+            <td>
+            The current version of the Maven project descriptor. This version 
+            number enables Maven to automatically update an out-of-date project 
+            descriptor when a new version is available. This version number 
+            should not be changed after the descriptor has been created. Maven 
+            will update it automatically.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>id</code>
+            </td>
+            <td>
+            The short name of the project.  This value is used when naming 
+            <a href="http://maven.apache.org/maven-1.x/plugins/java/index.html">jars</a> and
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">distribution files</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>groupId</code>
+            </td>
+            <td>
+            The short name of the project group. This value is used to group
+            all jars for a project in one directory. For more info look at the
+            <a href="conventions.html">user guide</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>artifactId</code>
+            </td>
+            <td>
+            The short name of the project.  This value is used in conjunction
+            with <code>groupId</code>
+            when naming <a href="http://maven.apache.org/maven-1.x/plugins/java/index.html">jars</a> and 
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">distribution files</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>
+            The full name of the project.  This value is used when
+            generating <a href="http://maven.apache.org/maven-1.x/plugins/javadoc/index.html">JavaDoc</a>
+            titles.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>currentVersion</code>
+            </td>
+            <td>
+            The current version of the project.  This value is used when
+            naming <a href="http://maven.apache.org/maven-1.x/plugins/java/index.html">jars</a> and 
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">distribution files</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>shortDescription</code>
+            </td>
+            <td>
+             A short description of the project. The short description should be 
+             limited to a single line.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>description</code>
+            </td>
+            <td>
+            Optional. A detailed description of the project. 
+            This description is used as the default to generate the
+            <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">Mailing Lists</a>
+            of the project's
+            web site, and is shown when <code>maven --usage</code> is called on 
+            the project. While this element can be specified as CDATA to enable 
+            the use of HTML tags within the description, you are encouraged to 
+            provide an alternative home page using <code>xdocs/index.xml</code> 
+            if this is required.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>
+             The URL to the project's homepage.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>logo</code>
+            </td>
+            <td>
+            The URL to the project's logo image.  This can be an URL relative
+            to the base directory of the generated web site,
+            (e.g., <code>/images/project-logo.png</code>) or an absolute URL
+            (e.g., <code>http://my.corp/project-logo.png</code>).  This is used
+            when generating the project documentation.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>issueTrackingUrl</code>
+            </td>
+            <td>
+             Optional. The URL to the project's issue tracking system.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>inceptionYear</code>
+            </td>
+            <td>
+            The year of the project's inception specified with 4 digits.
+            This value is used when generating 
+            <a href="http://maven.apache.org/maven-1.x/plugins/javadoc/index.html">JavaDoc</a> copyright notices.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>gumpRepositoryId</code>
+            </td>
+            <td>
+            Optional. This is the Id of the Gump repository that this project is
+            part of (assuming it participates in the Gump integration
+            effort).
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>siteAddress</code>
+            </td>
+            <td>
+            Optional. The hostname of the web server that hosts the project's web
+            site.  This is used when the web site is 
+            <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">deployed</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>siteDirectory</code>
+            </td>
+            <td>
+            Optional. The directory on the web server where the public web site
+            for this project resides.  This is used when the web site is 
+            <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">deployed</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>distributionSite</code>
+            </td>
+            <td>
+            Optional. The server server where the final
+            distributions will be published.  This is used when the
+            distributions are
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">deployed</a>.
+            <p>
+              If this isn't defined, the central repository is used instead as
+              determined by <code>maven.repo.central</code> and 
+              <code>maven.repo.central.directory</code>
+            </p>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>distributionDirectory</code>
+            </td>
+            <td>
+            Optional. The directory on the web server where the final
+            distributions will be published.  This is used when the
+            distributions are
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">deployed</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>mailingLists</code>
+            </td>
+            <td>
+            Contains information about a project's mailing lists.  This
+            is used to generate the <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">front
+            page</a> of the site's web site.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>developers</code>
+            </td>
+            <td>
+            Describes the committers to a project.  This is used to
+            generate the <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">Project Team</a>
+            page of the project's web site.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>contributors</code>
+            </td>
+            <td>
+            Describes the contributors to a project.  This is used to generate
+            the <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">Project Team</a> page of
+            the project's web site.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>licenses</code>
+            </td>
+            <td>
+            This element describes all of the licenses for this project.  
+            Each license is described by a <code>license</code> element, which 
+            is then described by additional elements (described below).  The 
+            auto-generated site documentation references this information.  
+            Projects should only list the license(s) that applies to the project 
+            and not the licenses that apply to dependencies.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>versions</code>
+            </td>
+            <td>
+            Optional. Contains information on previous versions of the
+            project. This information is used when invoking the 
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html"><code>maven:dist</code></a>
+            target.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>branches</code>
+            </td>
+            <td>
+            Optional. Contains information on branches of the
+            project. This information is used when invoking the 
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html"><code>maven:dist</code></a>
+            target.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>packageGroups</code>
+            </td>
+            <td>Package groups required for complete javadocs.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>reports</code>
+            </td>
+            <td>
+            
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>repository</code>
+            </td>
+            <td>Specification for the SCM used by the project.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>organization</code>
+            </td>
+            <td>
+            This element describes various attributes of the organization to
+            which the project belongs.  These attributes are utilized when
+            documentation is created (for copyright notices and links).
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>properties</code>
+            </td>
+            <td>
+             Project properties that will be used by various plugins
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>package</code>
+            </td>
+            <td>
+            The Java package name of the project.  This value is used
+            when generating <a href="http://maven.apache.org/maven-1.x/plugins/javadoc/index.html">JavaDoc</a>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>build</code>
+            </td>
+            <td>Information required to build the project.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>dependencies</code>
+            </td>
+            <td>
+            <p>
+              This element describes all of the dependencies associated with a
+              project.  Each dependency is described by a
+              <code>dependency</code> element, which is then described by
+              additional elements (described below).
+            </p>
+            <p>
+              These dependencies are used to construct a classpath for your 
+              project during the build process.
+            </p>
+            <p>
+              Maven can automatically download these dependencies from a 
+              <a href="../using/repositories.html">remote repository</a>.
+            </p>
+            <p>
+              The filename that Maven downloads from the repository is 
+              <code>artifactId-version.jar</code> where <code>artifactId</code> 
+              corresponds to the <code>artifactId</code> element and 
+              <code>version</code> corresponds to the <code>version</code> element.
+            </p>
+            <p>
+              When Maven goes looking for a dependency in the remote repository, 
+              it uses the dependency element to construct the URL to download 
+              from. This URL is defined as:
+            </p>
+            <div class="source">
+              <pre>${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}</pre>
+            </div>
+            <p>
+              Where
+            </p>
+            <dl>
+              <dt>repo</dt>
+              <dd>
+                is the remote repository URL specified by 
+                <code>${maven.repo.remote}</code>
+              </dd>
+              
+              <dt>groupId</dt>
+              <dd>is taken from the dependency element</dd>
+              
+              <dt>type</dt>
+              <dd>is taken from the dependency element</dd>
+              
+              <dt>artifactId</dt>
+              <dd>is taken from the dependency element</dd>
+              
+              <dt>version</dt>
+              <dd>is taken from the dependency element</dd>
+            </dl>
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_MailingList"/>
+      <subsection name="mailingList">
+        <p>
+        This element describes all of the mailing lists associated with
+        a project.  Each mailing list is described by a
+        <code>mailingList</code> element, which is then described by
+        additional elements (described below).  The auto-generated site
+        documentation references this information.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>The name of the mailing list.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>subscribe</code>
+            </td>
+            <td>
+            The email address or link that can be used to subscribe to the mailing list.
+            If this is an email address, a
+            <code>mailto:</code> link will automatically be created when
+            the documentation is created.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>unsubscribe</code>
+            </td>
+            <td>
+            The email address or link that can be used to unsubscribe to
+            the mailing list.  If this is an email address, a
+            <code>mailto:</code> link will automatically be created
+            when the documentation is created.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>post</code>
+            </td>
+            <td>
+            The email address or link that can be used to post to
+            the mailing list.  If this is an email address, a
+            <code>mailto:</code> link will automatically be created
+            when the documentation is created.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>archive</code>
+            </td>
+            <td>
+            The link to a URL where you can browse the mailing list archive.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>otherArchives</code>
+            </td>
+            <td>
+            The link to other URLs where you can browse the list archive.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Developer"/>
+      <subsection name="developer">
+        <p>
+        Information about one of the committers on this project. Derived from
+        <code>Contributor</code>.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>id</code>
+            </td>
+            <td>The username of the developer.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>The full name of the contributor.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>email</code>
+            </td>
+            <td>The email address of the contributor.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>The URL for the homepage of the contributor.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>organization</code>
+            </td>
+            <td>The organization to which the contributor belongs.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>organizationUrl</code>
+            </td>
+            <td>The URL of the organization.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>roles</code>
+            </td>
+            <td>
+            The roles the contributor plays in the project.  Each role is
+            described by a <code>role</code> element, the body of which is a
+            role name.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>timezone</code>
+            </td>
+            <td>
+            The timezone the contributor is in. This is a number in the range -11 to 12.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>properties</code>
+            </td>
+            <td>
+            Properties about the contributor, such as an instant messenger handle.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Contributor"/>
+      <subsection name="contributor">
+        <p>
+        Description of a person who has contributed to the project, but who does
+        not have commit privileges. Usually, these contributions come in the 
+        form of patches submitted.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>The full name of the contributor.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>email</code>
+            </td>
+            <td>The email address of the contributor.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>The URL for the homepage of the contributor.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>organization</code>
+            </td>
+            <td>The organization to which the contributor belongs.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>organizationUrl</code>
+            </td>
+            <td>The URL of the organization.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>roles</code>
+            </td>
+            <td>
+            The roles the contributor plays in the project.  Each role is
+            described by a <code>role</code> element, the body of which is a
+            role name.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>timezone</code>
+            </td>
+            <td>
+            The timezone the contributor is in. This is a number in the range -11 to 12.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>properties</code>
+            </td>
+            <td>
+            Properties about the contributor, such as an instant messenger handle.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_License"/>
+      <subsection name="license">
+        <p>
+        Describes the licenses for this project.  This is used to generate
+        the <a href="http://maven.apache.org/maven-1.x/plugins/site/index.html">License</a> page of
+        the project's web site. Typically the licenses listed for the project
+        are that of the project itself, and not of dependencies.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>The full legal name of the license.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>The official url for the license text.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>distribution</code>
+            </td>
+            <td>
+              The primary method by which this project may be distributed.
+            <dl>
+              <dt>repo</dt>
+              <dd>may be downloaded from the Maven repository</dd>
+              <dt>manual</dt>
+              <dd>user must manually download and install the dependency.</dd>
+            </dl>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>comments</code>
+            </td>
+            <td>
+            Addendum information pertaining to this license.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Version"/>
+      <subsection name="version">
+        <p>
+        This element describes each of the previous versions of the
+        project. Each version is described by a <code>version</code>
+        element
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>
+            The external version number under which this release was distributed. Examples include:
+            <code>1.0</code>,
+            <code>1.1-alpha1</code>,
+            <code>1.2-beta</code>,
+            <code>1.3.2</code> etc.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>tag</code>
+            </td>
+            <td>
+            The name given in the version control system (e.g. cvs) used by the project for the source
+            code associated with this version of the project.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>id</code>
+            </td>
+            <td>
+            A unique identifier for a version.  This ID is
+            used to specify the version that
+            <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">
+              <code>maven:dist</code>
+            </a> builds.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Branch"/>
+      <subsection name="branch">
+        <p>
+       Optional. Contains information on branches of the project. This  
+       information is used when invoking the 
+       <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html"><code>maven:dist</code></a> target.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>tag</code>
+            </td>
+            <td>
+            The branch tag in the version control system (e.g. cvs) used by the 
+            project for the source code associated with this branch of the
+            project.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_PackageGroup"/>
+      <subsection name="packageGroup">
+        <p>
+          Javadoc allows related packages to be gathered together into logical 'groups'.
+          Groups of packages appear under a common subheading in the javadoc overview documentation.
+        </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>title</code>
+            </td>
+            <td>The title that appears as a subheading in the javadoc overview page.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>packages</code>
+            </td>
+            <td>The packages that should be grouped together.</td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Repository"/>
+      <subsection name="repository">
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>connection</code>
+            </td>
+            <td>
+            <p>
+              Optional.  The source configuration management system URL
+              that describes the repository and how to connect to the
+              repository.  This is used by Maven when <a href="http://maven.apache.org/maven-1.x/plugins/dist/index.html">building versions</a>
+              from specific ID.
+            </p>
+            <p>
+              The format of this element is as follows:
+            </p>
+            <source>scm:&lt;provider&gt;&lt;delimiter&gt;&lt;provider-parameters&gt;</source>
+            <p>where <code>&lt;delimiter&gt;</code> can be either ':' (colon) or '|' (pipe).</p>
+            <p>For cvs, the format for pserver repositories should be:</p>
+            <div class="source">
+              <pre>scm:cvs:pserver:user at host:/cvs/root:module-name</pre>
+            </div>
+            <p>
+              For local networked repositories (eg. pserver to local machine)
+            </p>
+            <div class="source">
+              <pre>scm:cvs:lserver:user at host:/cvs/root:module-name</pre>
+            </div>
+            <p>
+              For ssh access:
+            </p>
+            <div class="source">
+              <pre>scm:cvs:ext:user at host:/cvs/root:module-name</pre>
+            </div>
+
+            Remember that CVS will expect an environment variable called
+            <code>CVS_RSH</code> to be set, typically to <code>ssh</code> or your
+            ssh client.
+            
+            <p>
+              Some cvs clients support other protocols, such as ntserver and extssh.
+              Here's an example using CVS NT and ntserver:
+            </p>
+            <div class="source">
+              <pre>scm:cvs|ntserver|user at server|e:\cvs|Deployment</pre>
+            </div>
+  
+            Note the use of the vertical bar as delimiter as the repository has a 
+            colon (<code>:</code>) in it.
+            
+            <p>
+              For local file system repositories
+            </p>
+            <div class="source">
+              <pre>scm:cvs:local:ignored:/cvs/root:module-name</pre>
+            </div>
+  
+            <p>
+              For StarTeam access: 
+            </p>
+            <div class="source">
+              <pre>scm:starteam:username:password at host:port/project/view/folder</pre>
+            </div>
+
+            All of this information can be had from either the StarTeam Universal 
+            Client (Tools-&gt;Server Administration-&gt;Server Properties) or from the 
+            administrator. 
+            
+            <p>
+              The delimiter is determined by the character after "scm". eg.
+              <code>scm|cvs|pserver|user at host|/cvs/root|module-name</code> 
+              is equivalent to that listed above. This can be useful for Windows users
+              who have : in their cvsroot parameter (eg. D:\cvsroot)
+            </p>
+            <p>
+              Where <code>pserver</code> is the protocol used to access CVS,
+              <code>user at host</code> is the user name to log in to the specified
+              cvs <strong>host</strong>, <code>/cvs/root</code> is the cvs root
+              directory, and <code>module-name</code> is the name of the cvs
+              module to be worked on
+            </p>
+
+            <p>As an example, the settings for an Apache project are usually:</p>
+            <pre>scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:module-name</pre>
+            
+            <p>
+              Currently CVS, Starteam and  SubVersion are the only supported scm's.
+              Others will be added as soon as possible
+            </p>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>developerConnection</code>
+            </td>
+            <td>
+            Just like connection, but for developers, i.e. this scm connection
+            will not be read only.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>The URL to the project's browsable CVS repository.</td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Organization"/>
+      <subsection name="organization">
+        <p>Specifies the organization who produces this project.</p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>name</code>
+            </td>
+            <td>The full name of the organization.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>The URL to the organization's home page.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>logo</code>
+            </td>
+            <td>
+            The URL to the organization's logo image.  This can be an URL relative
+            to the base directory of the generated web site,
+            (e.g., <code>/images/org-logo.png</code>) or an absolute URL
+            (e.g., <code>http://my.corp/logo.png</code>).  This value is used
+            when generating the project documentation.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Build"/>
+      <subsection name="build">
+        <table>
+          <tr>
+            <th width="40%">Element</th>
+            <th width="60%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>nagEmailAddress</code>
+            </td>
+            <td>
+            An address to which notifications regarding the status of builds
+            for this project can be sent. This is intended for use by tools
+            which do unattended builds, for example those providing for
+            continuous integration. Currently this is used by the
+            <a href="http://maven.apache.org/maven-1.x/plugins/gump/">gump plugin</a>
+            target.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>sourceDirectory</code>
+            </td>
+            <td>
+            This element specifies a directory containing the source
+            of the project. The generated build system will compile
+            the source in this directory when the project is built.
+            The path given is relative to the project descriptor.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>unitTestSourceDirectory</code>
+            </td>
+            <td>
+            This element specifies a directory containing the unit test
+            source of the project. The generated build system will
+            compile these directories when the project is being tested.
+            The unit tests must use the JUnit test framework.
+            The path given is relative to the project descriptor.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>aspectSourceDirectory</code>
+            </td>
+            <td>    
+             This element specifies a directory containing Aspect    
+             sources of the project.  The generated build system will    
+             compile the Aspects in this directory when the project is    
+             built if Aspects have been enabled (see the    
+             <a href="http://maven.apache.org/maven-1.x/plugins/aspectj/goals.html">Aspectj goals</a>
+             document).
+             The path given is relative to the project descriptor.    
+           </td>
+          </tr>
+          <tr>
+            <td>
+              <code>integrationUnitTestSourceDirectory</code>
+            </td>
+            <td>    
+             This element specifies a directory containing integration test    
+             sources of the project.    
+           </td>
+          </tr>
+          <tr>
+            <td>
+              <code>sourceModifications</code>
+            </td>
+            <td>
+            This element describes all of the sourceModifications associated 
+            with a project.  Each source modification is described by a
+            <code>sourceModification</code> element, which is then described by
+             additional elements (described below).  These modifications are used 
+            to exclude or include various source depending on the environment
+             the build is running in.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>unitTest</code>
+            </td>
+            <td>
+            This element specifies unit tests associated with the project.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>defaultGoal</code>
+            </td>
+            <td>
+            The default goal (or phase in Maven 2) to execute when none is specified for the project.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>resources</code>
+            </td>
+            <td>
+            This element describes all of the resources associated with a 
+            project or unit tests. Each resource is described by a resource 
+            element, which is then described by additional elements (described 
+            <a href="#resource">below</a>). These resources are used to complete 
+            the jar file or to run unit test.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_SourceModification"/>
+      <subsection name="sourceModification">
+        <p>
+        This element describes all of the sourceModifications associated with a
+        project.  Each source modification is described by a
+        <code>sourceModification</code> element, which is then described by
+        additional elements (described below).  These modifications are used 
+        to exclude or include various source depending on the environment
+        the build is running in.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>className</code>
+            </td>
+            <td>
+            If the class with this name can <strong>not</strong> be
+            loaded, then the includes and excludes specified below 
+            will be applied to the contents of the 
+            <a href="#sourceDirectory">sourceDirectory</a>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>property</code>
+            </td>
+            <td>An optional property.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>directory</code>
+            </td>
+            <td>
+            Describe the directory where the resource is stored.
+            The path may be absolute, or relative to the project.xml file.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>includes</code>
+            </td>
+            <td>Files to include.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>excludes</code>
+            </td>
+            <td>Files to exclude.</td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_UnitTest"/>
+      <subsection name="unitTest">
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>resources</code>
+            </td>
+            <td>Resources needed to run the unit tests.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>includes</code>
+            </td>
+            <td>Files to include.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>excludes</code>
+            </td>
+            <td>Files to exclude.</td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Resource"/>
+      <subsection name="resource">
+        <p>
+        This element describes all of the resources associated with a project or 
+        unit tests. Each resource is described by a resource element, which is 
+        then described by additional elements (described 
+        <a href="#resource">below</a>). These resources are used to complete the 
+        jar file or to run unit test.
+      </p>
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>targetPath</code>
+            </td>
+            <td>
+            Describe the resource target path. For example, if you want that 
+            resource appear into a specific package 
+            (<code>org.apache.maven.messages</code>), you must specify this 
+            element with this value : <code>org/apache/maven/messages</code>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>filtering</code>
+            </td>
+            <td>Boolean. Describe if resources are filtered or not.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>directory</code>
+            </td>
+            <td>
+            Describe the directory where the resource is stored.
+            The path may be absolute, or relative to the project.xml file.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>includes</code>
+            </td>
+            <td>Resources to include.</td>
+          </tr>
+          <tr>
+            <td>
+              <code>excludes</code>
+            </td>
+            <td>Resources to exclude.</td>
+          </tr>
+        </table>
+      </subsection>
+      <a name="class_Dependency"/>
+      <subsection name="dependency">
+        <table>
+          <tr>
+            <th width="20%">Element</th>
+            <th width="80%">Description</th>
+          </tr>
+          <tr>
+            <td>
+              <code>id</code>
+            </td>
+            <td>
+            <p>The name of the dependency.</p>
+            <p>
+              <strong>Note:</strong> The use of the id element for
+              a dependency is deprecated. Please use <code>groupId</code> and
+              <code>artifactId</code> together instead.
+            </p>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>groupId</code>
+            </td>
+            <td>
+            The project group that produced the dependency, e.g.
+            <code>geronimo</code>.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>artifactId</code>
+            </td>
+            <td>
+            The unique id for an artifact produced by the project group, e.g.
+            <code>germonimo-jms</code>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>version</code>
+            </td>
+            <td>
+            The version of the dependency, e.g. <code>3.2.1</code>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>url</code>
+            </td>
+            <td>
+            This url will be provided to the user if the jar file cannot be downloaded
+            from the central repository.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>jar</code>
+            </td>
+            <td>
+            Literal name of the artifact. Used to override the calculated artifact name.
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>type</code>
+            </td>
+            <td>
+            The type of dependency. This defaults to <code>jar</code>.
+            Known recognised dependency types are:
+            <ul>
+            <li><code>jar</code></li>
+            <li><code>ejb</code></li>
+            <li><code>plugin</code></li>
+            </ul>
+          </td>
+          </tr>
+          <tr>
+            <td>
+              <code>properties</code>
+            </td>
+            <td>
+            Properties about the dependency. Various plugins allow you to 
+            <code>mark</code> dependencies with properties. For example the 
+            <a href="http://maven.apache.org/maven-1.x/plugins/war/index.html">war</a> plugin looks for a
+            <code>war.bundle</code> property, and if found will include the 
+            dependency in <code>WEB-INF/lib</code>. For example syntax, check 
+            the war plugin docs.
+          </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/properties.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/properties.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/properties.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,438 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Properties Reference</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Properties Reference">
+      <p>
+        In Maven, properties are used to customise the behaviour of Maven and its plugins.
+      </p>
+      <subsection name="Property Processing">
+        <p>
+          Maven supports a hierarchy of different properties to allow specifying defaults and
+          overriding them at the appropriate level.
+        </p>
+        <p>
+          The properties files in Maven are processed in the following order:
+        </p>
+          <ol>
+            <li>Built-in properties are processed</li>
+            <li><code>${basedir}/project.properties</code> (<code>basedir</code> is replaced by the directory where the <code>project.xml</code> file in use resides)</li>
+            <li><code>${basedir}/build.properties</code></li>
+            <li><code>${user.home}/build.properties</code></li>
+            <li>System properties</li>
+          </ol>
+        <p>
+          The built-in properties are specified in the <code>plugin.properties</code> file of a plugin, or in
+          <code>defaults.properties</code> within Maven itself.
+        </p>
+        <p>
+          Both the <code>project.properties</code> and <code>build.properties</code> files in the project
+          directory are also inherited along with the related <code>project.xml</code> file.
+        </p>
+        <p>
+          The last definition takes precedence, so <code>${user.home}/build.properties</code> will override
+          anything specified in a project, and properties given on the command line using <code>-D</code> will
+          override everything.
+        </p>
+        <p>
+          <b>Note:</b> there are no per-user defaults, as there has not been a property shown where this concept
+          makes sense. Currently, there are also no site-wide defaults, however this is planned for future versions
+          of Maven.
+        </p>
+        <p>
+          The following table explains how each file should be used.
+        </p>
+        <table>
+          <tr>
+            <td width="30%"><code>${basedir}/project.properties</code></td>
+            <td width="70%">
+              These are properties specific to the project and can be used to set the values for
+              plugin and Maven properties that are appropriate for that project.
+              This file should be checked into your source repository and distributed.
+            </td>
+          </tr>
+          <tr>
+            <td><code>${basedir}/build.properties</code></td>
+            <td>
+              These are properties specific to the project, but also the user running it. It is for
+              overriding values in the <code>project.properties</code> for this user only.
+              It should <i>not</i> be checked into the source repository. If a user is required to
+              set any of these properties for a build to run properly, a <code>build.properties.sample</code>
+              file should be created and checked into the source repository as a courtesy.
+            </td>
+          </tr>
+          <tr>
+            <td><code>${user.home}/build.properties</code></td>
+            <td>
+              These are properties specific to the user but shared among all projects.
+              This typically specifies remote repositories to download from and upload to,
+              proxy settings, file system locations, and so on.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+
+    <section name="Built-in Maven Properties">
+      <p>
+        The following properties are built-in to Maven and apply to all projects.
+      </p>
+      <subsection name="Maven Configuration Properties">
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Description</th>
+            <th>Default Value</th>
+          </tr>
+          <tr>
+            <td><code>maven.home.local</code></td>
+            <td>
+              The directory on the local machine Maven uses to write user specific details
+              to, such as expanded plugins and cache data.
+            </td>
+            <td><code>${user.home}/.maven</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.plugin.dir</code></td>
+            <td>
+              Where Maven can find it's plugins.
+            </td>
+            <td><code>${maven.home}/plugins</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.plugin.user.dir</code></td>
+            <td>
+              Where Maven can find plugins for this user only.
+            </td>
+            <td><code>${maven.home.local}/plugins</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.plugin.unpacked.dir</code></td>
+            <td>
+              Where Maven expands installed plugins for processing.
+            </td>
+            <td><code>${maven.home.local}/cache</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.repo.local</code></td>
+            <td>
+              The repository on the local machine Maven should use to store
+              downloaded artifacts (jars etc).
+            </td>
+            <td><code>${maven.home.local}/repository</code></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Build Structure Properties">
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Description</th>
+            <th>Default Value</th>
+          </tr>
+  
+          <tr>
+            <td><code>basedir</code></td>
+            <td>
+              This is the base directory of the currently building project.
+              It is an absolute path.
+            </td>
+            <td>-</td>
+          </tr>
+
+          <tr>
+            <td><code>maven.build.dir</code></td>
+            <td>
+              The directory where generated output, e.g. class files, documentation,
+              unit test reports etc goes.
+            </td>
+            <td><code>${basedir}/target</code></td>
+          </tr>
+
+          <tr>
+            <td><code>maven.build.dest</code></td>
+            <td>
+              The directory where generated classes go.
+            </td>
+            <td><code>${maven.build.dir}/classes</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.build.src</code></td>
+            <td>
+              The directory where generated source goes.
+              <b>DEPRECATED</b>:  Currently unused. There is no replacement - any plugin generating source
+              has it's own specific property.
+            </td>
+            <td><code>${maven.build.dir}/src</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.conf.dir</code></td>
+            <td>
+              The directory that holds configuration files.
+              <b>DEPRECATED</b>:  Currently unused. Instead, use the <code>&lt;resources&gt;</code>
+              element of the POM.
+            </td>
+            <td><code>${basedir}/conf</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.src.dir</code></td>
+            <td>
+              The base directory for source code.
+              <b>DEPRECATED</b>:  Currently unused. Instead, use the <code>&lt;sourceDirectory&gt;</code>
+              element of the POM.
+            </td>
+            <td><code>${basedir}/src</code></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Documentation Properties">
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Description</th>
+            <th>Default Value</th>
+          </tr>
+          <tr>
+            <td><code>maven.docs.dest</code></td>
+            <td>
+              The output directory for the generated HTML for the site documentation.
+            </td>
+            <td><code>${maven.build.dir}/docs</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.docs.omitXmlDeclaration</code></td>
+            <td>
+              Whether generated documentation should have an xml declaration, e.g.
+              <source>&lt;?xml version="1.0"?&gt;</source>
+            </td>
+            <td><code>false</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.docs.outputencoding</code></td>
+            <td>
+              The character encoding for generated documentation.
+            </td>
+            <td><code>ISO-8859-1</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.docs.src</code></td>
+            <td>
+              The directory for user supplied documentation.
+            </td>
+            <td><code>${basedir}/xdocs</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.gen.docs</code></td>
+            <td>
+              The directory where generated xdocs that need to be transformed to HTML
+              are placed.
+            </td>
+            <td><code>${maven.build.dir}/generated-xdocs</code></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Connection Properties">
+        <p>
+          Please refer to <a href="../using/repositories.html">Working with Repositories</a> for more information.
+        </p>
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Description</th>
+            <th>Default Value</th>
+          </tr>
+  
+          <tr>
+            <td><code>maven.mode.online</code></td>
+            <td>
+              Whether you are connected to the internet or not.
+            </td>
+            <td><code>true</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.repo.remote</code></td>
+            <td>
+              The repository maven should use to download artifacts
+              (jars etc) that it can't find in the local repository.
+              You should set this to one of the <a href="../faq.html#ibiblio-mirrors">Ibiblio mirrors</a>.
+              You can also specify multiple repositories, separated by commas.
+            </td>
+            <td><code>http://www.ibiblio.org/maven</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.repo.remote.enabled</code></td>
+            <td>
+              Whether or not a remote repository should be used.
+            </td>
+            <td><code>true</code></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Proxy Properties">
+        <p>
+          If you do require a proxy, the most appropriate place to set these
+          values would be in your <code>${user.home}/build.properties</code>
+          file.
+        </p>
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Description</th>
+            <th>Default Value</th>
+          </tr>
+          <tr>
+            <td><code>maven.proxy.host</code></td>
+            <td>
+              The IP or address of your proxy.
+            </td>
+            <td>-</td>
+          </tr>
+          <tr>
+            <td><code>maven.proxy.port</code></td>
+            <td>
+              The port number of your proxy.
+            </td>
+            <td>-</td>
+          </tr>
+          <tr>
+            <td><code>maven.proxy.username</code></td>
+            <td>
+              User name if your proxy requires authentication.
+            </td>
+            <td>-</td>
+          </tr>
+          <tr>
+            <td><code>maven.proxy.password</code></td>
+            <td>
+              Password if your proxy requires authentication.
+            </td>
+            <td>-</td>
+          </tr>
+          <tr>
+            <td><code>maven.proxy.ntlm.host</code></td>
+            <td>
+              The host to use if you are using NTLM authentication.
+            </td>
+            <td>-</td>
+          </tr>
+          <tr>
+            <td><code>maven.proxy.ntlm.domain</code></td>
+            <td>
+              The NT domain to use if you are using NTLM authentication.
+            </td>
+            <td>-</td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Deployment Properties">
+        <p>
+          <b>DEPRECATED</b>: The following have all been deprecated in favour of using the relevant elements in the
+          POM, and the properties of the <a href="http://maven.apache.org/maven-1.x/plugins/artifact/">artifact plugin</a>.
+        </p>
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Description</th>
+            <th>Default Value</th>
+          </tr>
+  
+          <tr>
+            <td><code>maven.repo.central</code></td>
+            <td>
+              This is the host that Maven will attempt to deploy to. This is deprecated in
+              favour of <code>distributionSite</code> and <code>siteAddress</code>.
+            </td>
+            <td>-</td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.repo.central.directory</code></td>   
+            <td>
+              This is the directory that Maven will attempt to deploy to. This is deprecated in
+              favour of <code>distributionDirectory</code> and <code>siteDirectory</code>.
+            </td>
+            <td>-</td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.scp.executable</code></td>
+            <td>
+              The executable to use for secure copies.
+            </td>
+            <td><code>scp</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.ssh.executable</code></td>
+            <td>
+              The executable to use for executing commands remotely.
+            </td>
+            <td><code>ssh</code></td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.username</code></td>
+            <td>
+              The remote username to log in as when deploying.
+            </td>
+            <td>-</td>
+          </tr>
+  
+          <tr>
+            <td><code>maven.remote.group</code></td>
+            <td>
+              The group to set the artifact to once deployed.
+            </td>
+            <td><code>maven</code></td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+  
+    <section name="Built-in Plugin Properties">
+      <p>
+        Each plugin has a set of built in properties. For a reference of these properties, you can find a
+        "Properties" link in the left hand navigation of the <a href="http://maven.apache.org/maven-1.x/plugins/">plugin documentation</a> of
+        each individual plugin. 
+      </p>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/repository-upload.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/repository-upload.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/repository-upload.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Uploading to ibiblio</title>
+    <author email="bwalding at apache.org">Ben Walding</author>
+    <author email="jason at maven.org">Jason van Zyl</author>    
+    <author email="brett at apache.org">Brett Porter</author>    
+  </properties>
+
+  <body>
+    <section name="Uploading to Ibiblio">
+      <p>
+        So you want a resource uploaded to ibiblio?
+      </p>
+      
+      <p>
+        To save time for everybody, here is how you go about it.  
+      </p>
+  
+      <subsection name="Step 1. Create an upload bundle">
+        <p>
+          Use the artifact plugin, provided with the standard Maven
+          distribution, to create an upload bundle:
+        </p>
+      
+        <source>maven artifact:create-upload-bundle</source>
+      
+        <p>
+          The bundle will be created in your "target" directory of the form:
+          <code>${pom.artifactId}-${pom.currentVersion}-bundle.jar</code>
+        </p>
+      
+        <p>
+          If you are not using maven as your build system but want something
+          uploaded to Ibiblio then you just need to make a JAR (using the <code>jar</code> 
+          executable, not <code>zip</code>, <code>pkzip</code> or equivalent) with the following
+          format:
+        </p>
+      
+        <source><![CDATA[LICENSE.txt
+project.xml
+foo-1.0.jar (or whatever artifact is referred to in the project.xml)]]></source>
+
+        <p>
+          Note that the bundle will be read by a script, so it must follow the above format. Also, 
+          the <code>project.xml</code> should at least contain the following elements:
+        </p>
+        <ul>
+          <li>groupId (all lowercase)</li>
+          <li>artifactId (all lowercase)</li>
+          <li>name</li>
+          <li>currentVersion</li>
+          <li>dependencies</li>
+        </ul>
+        <p>
+          Some considerations about the <b>groupId</b>: it will identify your project uniquely across all
+          projects, so we need to enforce a naming schema. For projects with artifacts already uploaded to ibiblio it can
+          be equal to the previous used, 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. 
+          <a href="http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.7">
+          More information about package names</a>.
+        </p>
+        <p>
+          Examples:
+        </p>
+          <ul>
+            <li>www.springframework.org -> org.springframework</li>
+            <li>oness.sf.net -> net.sf.oness</li>
+          </ul>
+
+        <h4>Maven 2 projects</h4>
+        <p>
+          You can request a upload for a maven 2 project just using the maven 2 pom.xml instead of 
+          the maven 1 project.xml referenced previously.
+          The jar will be uploaded to both maven 1 and maven 2 repos. Check this
+          <a href="http://maven.apache.org/guides/mini/guide-ibiblio-upload.html">mini guide</a>
+          for more information.
+        </p>
+
+      </subsection>
+  
+      <subsection name="Step 2. Posting the request">
+        <p>
+          Post your request to <a href="http://jira.codehaus.org/secure/CreateIssue.jspa?pid=10367&amp;issuetype=3">JIRA</a>.
+          In the description you should write the URL of the upload bundle
+          (if you're uploading more than one bundle please add all the urls under the same issue),
+          then leave a blank line and provide the following:
+        </p>
+          <ul>
+            <li>a url where the project can be found.</li>
+            <li>if you are one of its developers, a url where your name or email can be found inside the project site.</li>
+          </ul>
+        <p>
+          This will speed up the uploading process.<br/>
+          You can place any additional comments you wish in the following paragraph. So the
+          description field might look like:
+        </p>  
+
+        <source><![CDATA[http://wiggle.sourceforge.net/downloads/wiggle-1.0-bundle.jar
+          
+http://wiggle.sourceforge.net
+http://wiggle.sourceforge.net/team-list.html
+          
+Wiggle is a fantastic new piece of software for automating the
+clipping of nose hairs. Please upload!]]></source>
+
+      </subsection>
+    
+      <subsection name="Explanation">
+        <p>
+          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. So we have changed the process of uploading
+          artifacts to include the POM in an attempt to get transitive
+          dependencies working as quickly as possible. The other applications
+          that may be possible 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.
+        </p>
+        <p>
+          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.
+        </p>
+      </subsection>
+    </section>
+
+    <section name="Maven partners">
+      <p>
+        The following sites sync automatically their project repository with the central one.
+        If you want a project from any of this sites to be uploaded to ibiblio you'll have to
+        contact the project maintainers.
+      </p>
+        <ul>
+          <li><a href="http://www.apache.org">The Apache Software Foundation</a></li>
+          <li><a href="http://www.codehaus.org">Codehaus</a></li>
+          <li><a href="http://jetty.mortbay.org">MortBay Jetty</a></li>
+          <li><a href="http://www.opensymphony.com/">OpenSymphony</a></li>
+          <li><a href="http://www.osjava.org">OS Java</a></li>
+        </ul>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/scripting.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/scripting.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/scripting.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,301 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Scripting References</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Scripting References">
+      <p>
+        Customised scripting in Maven is achieved in one of two ways:
+      </p>
+      <ul>
+        <li>Creating a
+          <code>maven.xml</code> file containing custom goals
+        </li>
+        <li>Creating your own plugin containing custom goals</li>
+      </ul>
+      <p>
+        Note that there are several
+        <a href="../using/bestpractices.html#Scripting">best practices</a> related to
+        scripting that it is worth adhering to.
+      </p>
+      <p>
+        All scripts in Maven 1.x are written in the
+        <a href="http://jakarta.apache.org/commons/jelly/">Jelly</a>
+        XML scripting language.
+      </p>
+      <p>
+        For an explanation of how to develop a plugin, please see
+        <a href="../using/developing-plugins.html">Developing
+        Plugins</a>, or for details about
+        <code>maven.xml</code> see the section on
+        <a href="../using/customising.html">Customising Maven</a>, both in the User's Guide.
+      </p>
+    </section>
+    <section name="Jelly">
+      <p>
+        Maven uses
+        <a href="http://jakarta.apache.org/commons/jelly/">Jelly</a>
+        as it's scripting language, and any valid jelly tags can be placed in
+        the
+        <code>maven.xml</code>, or inside a plugin.
+      </p>
+      <p>
+        Here's an example
+        <code>maven.xml</code>:
+      </p>
+      <source><![CDATA[<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util">
+  <goal name="nightly-build">
+    <j:set var="goals" value="java:compile,test" />
+    <ant:mkdir dir="${maven.build.dir}" />
+    <u:tokenize var="goals" delim=",">${goals}</u:tokenize>
+    <j:forEach items="${goals}" var="goal" indexVar="goalNumber">
+      Now attaining goal number ${goalNumber}, which is ${goal}
+      <attainGoal name="${goal}" />
+    </j:forEach>
+  </goal>
+</project>]]></source>
+      <p>
+        XML Namespaces are used to declare the Jelly tag libraries you want to use, much like JSTL (in fact, many of
+        the Jelly tag libraries closely follow their JSTL equivalents).
+      </p>
+      <p>
+        More information on Jelly can be found at:
+      </p>
+      <ul>
+        <li>The
+          <a href="http://jakarta.apache.org/commons/jelly/">Jelly Project Home Page</a>
+        </li>
+        <li>The
+          <a href="http://jakarta.apache.org/commons/jelly/tags.html">Jelly Tag Libraries</a>
+        </li>
+        <li>
+          Dion Gillard's blog about Jelly examples:
+          <ol>
+            <li>
+              <a href="http://www.multitask.com.au/people/dion/archives/000202.html">Core Jelly - structuring scripts using import</a>
+            </li>
+            <li>
+              <a href="http://www.multitask.com.au/people/dion/archives/000277.html">The Jelly Util Taglib</a>
+            </li>
+          </ol>
+        </li>
+      </ul>
+    </section>
+    <section name="Jexl">
+      <p>
+        Jexl is the expression language used by Jelly. This allows you to get the values of properties, but also
+        to execute functions on the Java objects behinf those variables. For example:
+      </p>
+      <ul>
+        <li>
+          <code>${myVar}</code> gets the value of the variable
+          <code>myVar</code>
+        </li>
+        <li>
+          <code>${empty(myVar)}</code> calls the "empty" function in Jexl to test if the string is null or 0-length
+        </li>
+        <li>
+          <code>${pom.inceptionYear.equals('2001')}</code> tests equality
+        </li>
+        <li>
+          <code>${pom.build.resources.isEmpty()}</code> calls the
+          <code>isEmpty()</code> method on the
+          <code>List</code>
+        given by
+          <code>pom.build.resources</code>.
+        </li>
+      </ul>
+      <p>
+        For more information about Jexl, see it's
+        <a href="http://jakarta.apache.org/commons/jexl/">home page</a>.
+      </p>
+    </section>
+    <section name="Ant">
+      <p>
+        It is important to note that most of the functionality in Maven 1.x comes from the equivalent Ant tasks.
+        To check the functionality of that task, or use it within your own script, refer to the
+        <a href="http://ant.apache.org/manual/index.html">Ant Documentation</a>.
+      </p>
+    </section>
+    <section name="Using Werkz in Jelly">
+      <p>
+        Werkz is the library used to handle the goal chain in Maven. You can use Jelly scripts to define new goals for
+        works or attach actions to existing ones. This is described in the sections that follow.
+      </p>
+      <subsection name="Declaring Goals">
+        <p>
+          Declaring new goals is quite simple and is done in both
+          <code>maven.xml</code> and plugins. To declare a goal
+          add code such as this:
+        </p>
+        <source><![CDATA[
+<goal name="my-goal" prereqs="some-other-goal" description="My Goal">
+  ...
+</goal>]]></source>
+        <p>
+          The goal name can be anything you desire. If an existing goal exists by that name is defined, any given in
+          <code>maven.xml</code> takes precedence (overriding plugins). If it exists in multiple plugins, then the
+          results are undefined. For this reason, goal names in plugins are usually prefixed with the plugin name, eg:
+          <code>java:compile</code>.
+        </p>
+        <p>
+          <code>prereqs</code> is a comma separated list of goals that must be executed before this goal is. If they
+          have already been executed, they will not be run again.
+        </p>
+        <p>
+          The description is used for generating plugin documentation, and for displaying on the command line when the
+          <code>-g</code>, or
+          <code>-P</code> parameters are used.
+        </p>
+      </subsection>
+      <subsection name="Calling Goals">
+        <p>
+          If, within a goal, you need to execute another goal, it can be done using:
+        </p>
+        <source><![CDATA[<attainGoal name="my-goal" />]]></source>
+        <p>
+          This is usually used in
+          <code>preGoal</code> and
+          <code>postGoal</code> definitions that can not specify
+          <code>prereqs</code>, as you'll see in the next section.
+        </p>
+      </subsection>
+      <subsection name="Customising Goals">
+        <p>
+          Customising existing Maven goals is quite simple as long as you know where to hook in to.
+          As an example, let's consider you want to generate some resources and have them placed into the
+          produced JAR file.
+        </p>
+        <p>
+          <b>Note:</b> Generally resources should be specified in the
+          <code>&lt;resources&gt;</code>
+          section of the
+          <code>project.xml</code> file. However, if they are generated as part of the build, you
+          will want to copy them to the destination yourself.
+        </p>
+        <p>
+          So, here is a sample
+          <code>maven.xml</code> file that demonstrates how this would be achieved:
+        </p>
+        <source><![CDATA[<project xmlns:ant="jelly:ant">
+  <!-- The java:jar-resources goal copies resources into target/classes
+       so that they are included in the JAR at / -->
+  <postGoal name="java:jar-resources">
+    <attainGoal name="generate-dynamic-resources" />
+    <!-- maven.build.dest is the location where resources are put -->
+    <ant:copy todir="${maven.build.dest}">
+      <ant:fileset dir="${maven.build.dir}/generated-resources" />
+    </ant:copy>
+  </postGoal>
+
+  <!-- Here is the goal you've defined to generate the resources in some fashion -->
+  <goal name="generate-dynamic-resources">
+    <!-- Place them into ${maven.build.dir}/generated-resources in accordance with
+         the fragment above -->
+    ...
+  </goal>
+</project>]]></source>
+      </subsection>
+    </section>
+    <section name="Accessing the Current Project">
+      <p>
+        The current project is always available under the context variable
+        <code>${pom}</code>. This allows the retrieval
+        of project variables in your scripts. This is the same as how they are used within the project file itself when
+        it is <a href="../using/customising.html#Property_Substitution_in_the_Project_Descriptor">interpolated</a>.
+      </p>
+      <p>
+        The variables and functions you can access are those listed in the
+        <a href="../apidocs/org/apache/maven/project/Project.html">javadoc</a>. For example:
+        <code>${pom.artifactId}</code>
+        calls
+        <code>getArtifactId()</code> to retrieve the artifact ID.
+        <code>${pom.getVersionById(pom.currentVersion).tag}</code>
+        gets the tag associated with the version which has an ID equivalent to the current version of the project.
+      </p>
+      <p>
+        Note that inside a plugin, the <code>${pom}</code> variable refers the project currently being built, not the
+        project that the plugin is defined in. To access the project variables of the plugin itself, use the variable
+        <code>${plugin}</code>.
+      </p>
+    </section>
+    <section name="Using Dependencies">
+      <p>
+        There are three ways to access the dependencies declared on the current project being built.
+      </p>
+      <p>
+        The first is to use the entire set as an Ant path reference, if you are only passing it to an Ant task.
+        The reference that contains all the dependencies in the classpath is <code>maven.dependency.classpath</code>.
+        For example:
+      </p>
+      <source><![CDATA[<javac ...>
+  <classpath refid="maven.dependency.classpath" />
+</javac>]]></source>
+      <p>
+        If you need the path to a specific dependency, you can use the
+        <a href="../apidocs/org/apache/maven/project/Project.html#getDependencyPath(String)"><code>getDependencyPath()</code></a>
+        method. For example:
+      </p>
+      <source><![CDATA[<ant:path id="my-classpath">
+  <ant:path refid="maven.dependency.classpath"/>
+  <ant:pathelement path="${maven.build.dest}"/>
+  <ant:pathelement location="${plugin.getDependencyPath('junit:junit')}"/>
+</ant:path>]]></source>
+      <p>
+        Finally, you can iterate through the artifacts within a project to process them individually. For example:
+      </p>
+      <source><![CDATA[<j:forEach var="lib" items="${pom.artifacts}">
+  <j:set var="dep" value="${lib.dependency}"/>
+  <j:if test="${dep.getProperty('war.bundle')=='true'}">
+    <ant:copy todir="${webapp.build.lib}" file="${lib.path}"/>
+  </j:if>
+</j:forEach>]]></source>
+    </section>
+    <section name="Working with Plugin Properties">
+      <p>
+        As you will have seen many plugins have their own properties. You can set these values in the current
+        project before the plugin is initialised, and they will be recognised. However, once it is initialised, setting
+        them in the current project will have no effect, and changes made within the plugin are not visible to the
+        current project.
+      </p>
+      <p>
+        If you need to get a property from the plugin, you can use the
+        <a href="../tags.html#maven:get"><code>maven:get</code></a> tag. For example:
+      </p>
+      <source><![CDATA[<maven:get var="out_var" plugin="maven-war-plugin" property="maven.war.final.name" />]]></source>
+      <p>
+        <b>Note:</b> you may also see references to a <code>maven:pluginVar</code> tag, and the expression
+        <code>${pom.getPluginContext('maven-war-plugin').getVariable('maven.war.final.name')}</code>. These are both
+        deprecated forms of the above tag.
+      </p>
+      <p>
+        Likewise, you can set a plugin property using the
+        <a href="../tags.html#maven:set"><code>maven:set</code></a> tag. For example:
+      </p>
+      <source><![CDATA[<maven:set plugin="maven-war-plugin" property="maven.war.final.name" value="${in_var}" />]]></source>
+    </section>
+  </body>
+
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/reference/scripting.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/sharing-plugins.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/sharing-plugins.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/sharing-plugins.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Sharing your plugin</title>
+    <author email="timpub at pobox.com">Tim Shadel</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Sharing Plugins">
+      <p>
+        You've just created a killer Maven plugin. Now what?!
+      </p>
+      <p>
+        Where should plugins live?  Who can update them?  Does it really make a difference?
+      </p>
+      <subsection name="Can you put my plugin in the Maven distribution?">
+        <p>
+          The main Maven distribution includes many plugins, but the growing trend is for plugin owners to host
+          the plugins themselves (<a href="#Step_1__How_do_I_host_my_Maven_plugin_">What do you mean, host?</a>).
+          Why?  There are many advantages for the plugin owners, the users, and the Maven team.
+        </p>
+      </subsection>
+
+      <subsection name="Plugin owners are the best maintainers">
+        <p>
+          Since only Maven committers may update the <code>maven-plugins</code> repository, changes you make to your
+          plugin will take a while to make it into a Maven distribution.  Each plugin needs a committer willing to
+          maintain it, and that plugin is not the only piece of Maven the committer works on.
+        </p>
+        <p>
+          Plugin owners are in a much better position to maintain the plugin.  They originally wrote the plugin.
+          They have a vested interest in seeing it succeed.  If they
+          <a href="#Step_1__How_do_I_host_my_Maven_plugin_">host</a> the plugin themselves, then updates can be
+          incorporated quickly, and users get the benefits of updated software quicker.
+        </p>
+        <p>
+          This benefit is often maximized when a team that writes a library, like the StatCvs group, also creates the
+          Maven plugin.  As the library changes, the plugin may be updated to keep in sync.  In fact, the 
+          <a href="http://jakarta.apache.org/cactus/integration/maven/">Cactus</a> and
+          <a href="http://statcvs-xml.berlios.de/maven-plugin/">StatCvs</a>
+          plugins were among the first to voluntarily remove their plugins from the Maven distribution and be hosted
+          with their respective libraries.
+        </p>
+      </subsection>
+    </section>
+
+    <section name="Publishing Your Plugin">
+      <subsection name="Step 1. How do I host my Maven plugin?">
+        <p>
+          To "host" a Maven plugin, you require only two things:
+        </p>
+          <ul>
+            <li>A place to keep your source code</li>
+            <li>A website to deploy the following
+              <ul>
+                <li>Your plugin's site (<code>maven site</code>) documentation</li>
+                <li>Your plugin's JAR bundles for ibiblio upload requests</li>
+              </ul>
+            </li>
+          </ul>
+        <p>
+          There are a variety of options available for each need.  Your source code may simply be kept on your hard
+          drive, using a local installation of a version control tool like <a href="http://ximbiot.com/cvs/cvshome/">CVS</a> or
+          <a href="http://subversion.tigris.org/">Subversion</a> (you do use version control, don't you?).  If you'd
+          like to share your plugin source with others, you can request a new project at a service like
+          <a href="http://sourceforge.net">SourceForge</a> or <a href="http://java.net">Java.Net</a>, or request to join an
+          existing project like the <a href="http://maven-plugins.sourceforge.net/">Maven-Plugins</a> project on
+          SourceForge.
+        </p>
+        <p>
+          If you're creating a plugin for an existing open-source (or even closed-source) library, the ideal situation
+          is to approach the library maintainers about hosting your plugin source and site.  That way the plugin source
+          is close to the people most likely to care about its success, and ensure it works well far into the future. 
+          The plugin site is located close to the already well-known library site.  In the end, this cooperation means
+          a better chance at happy users, and up-to-date plugins for everyone.
+        </p>
+      </subsection>
+
+      <subsection name="Step 2. OK. My plugin has a host, how can I put it on ibiblio.org?" id="upload">
+        <p>
+          If the project is part of the repository mirroring program, such as <code>maven-plugins.sourceforge.net</code>,
+          publishing it at SourceForge will automatically mirror it to ibiblio with further work.
+        </p>
+
+        <p>
+          However, if the project is an independant, please see the
+          <a href="repository-upload.html">instructions</a> for uploading a resource to ibiblio.org.
+        </p>
+
+        <p>
+          <strong>NOTE:</strong> If your plugin requires resources (JAR files) that are not already at ibilio.org, you
+           may need to make several separate upload requests.
+        </p>
+      </subsection>
+
+      <subsection name="Step 3. My upload request was granted, but no one knows my plugin exists!">
+        <p>
+          There are two ways to let your potential users know about your plugin.  The first is through sending an
+          announcement to the <code>maven-user</code> mailing list.  Here's a few pointers on how to go about it:
+        </p>
+          <ul>
+            <li>
+              Review an <a href="http://www.mail-archive.com/users@maven.apache.org/msg09117.html">excellent
+              announcement</a> sent by the StatCvs group, which includes plugin installation instructions.
+            </li>
+            <li>
+              Combine the advice of the two parts to make your own effective announcement. You may like to use
+              the <a href="http://maven.apache.org/maven-1.x/plugins/announcement/">Announcement Plugin</a> to generate and perhaps
+              mail the announcement.
+            </li>
+            <li>Make sure you've subscribed to the <code>maven-user</code> mailing list.</li>
+            <li>Send your annoucement to the <code>maven-user</code> mailing list.</li>
+          </ul>
+        <p>
+          The second way to publicize your plugin is on the Maven site itself.  The Maven project currently maintains a
+          list of other sites that host plugins. Simply raise a request in JIRA to have a link added. Be sure to include
+          the relevant information, following an existing plugin's description as an example.
+        </p>
+      </subsection>
+
+      <subsection name="Step 4. So now that they found my plugin, how do users install it?">
+        <p>
+          Here's the general idea:
+        </p>
+        <source>maven plugin:download -DartifactId=[artifactId] -DgroupId=[groupId] -Dversion=[version]</source>
+        <p>
+          For example:
+        </p>
+        <source>maven plugin:download -DartifactId=maven-statcvs-plugin -DgroupId=statcvs -Dversion=2.4</source>
+      </subsection>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/reference/sharing-plugins.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/reference/standard-sun-jar-names.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/reference/standard-sun-jar-names.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/reference/standard-sun-jar-names.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Standard Sun JAR Names</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Standard Sun JAR Names">
+      <p>
+        A common problem when trying to use Maven to build a project is if that project depends
+        on a particular JAR from Sun that cannot be distributed via Ibiblio due to its license.
+        (refer to <a href="http://maven.apache.org/sun-licensing-journey.html">this document</a> for a history)
+      </p>
+      <p>
+        This particularly affects J2EE technologies, but includes some other reference implementations.
+        Projects are now starting to develop clean room implementations of some of these specifications
+        under open source licenses, however in many cases they are not complete, or projects are not
+        using them.
+      </p>
+      <p>
+        The only alternative is to download the JARs yourself (accepting Sun's license), and to place them
+        into your local or internal repository.
+      </p>
+      <p>
+        Should you need to use them, this document aims to list a standard location for the JARs so that
+        all projects can reference them consistently, and so will only need to be downloaded and put in
+        place once. It may not be complete, so if you have use for a Sun JAR that is not listed here, please
+        contact the <a href="../mail-lists.html">Developer's Mailing List</a> so that it can be added.
+      </p>
+      <p>
+        The current list of JARs have been built up by convention.
+        The rule is use the two first package levels as groupId and the name of the reference implementation
+        jar as artifactId
+      </p>
+      <table>
+        <tr>
+          <th>Product artifact</th><th>Group ID</th><th>Artifact ID</th>
+        </tr>
+        <tr>
+          <td>Java Activation Framework</td><td>javax.activation</td><td>activation</td>
+        </tr>
+        <tr>
+          <td>J2EE</td><td>javax.j2ee</td><td>j2ee</td>
+        </tr>
+        <tr>
+          <td>JDO</td><td>javax.jdo</td><td>jdo</td>
+        </tr>
+        <tr>
+          <td>JMS</td><td>javax.jms</td><td>jms</td>
+        </tr>
+        <tr>
+          <td>JavaMail</td><td>javax.mail</td><td>mail</td>
+        </tr>
+        <tr>
+          <td>EJB 3</td><td>javax.persistence</td><td>ejb</td>
+        </tr>
+        <tr>
+          <td>J2EE Connector Architecture</td><td>javax.resource</td><td>connector-api</td>
+        </tr>
+        <tr>
+          <td>Java Authorization Contract for Containers</td><td>javax.security</td><td>jacc</td>
+        </tr>
+        <tr>
+          <td>Servlet</td><td>javax.servlet</td><td>servlet-api</td>
+        </tr>
+        <tr>
+          <td>Servlet JSP</td><td>javax.servlet</td><td>jsp-api</td>
+        </tr>
+        <tr>
+          <td>Servlet JSTL</td><td>javax.servlet</td><td>jstl</td>
+        </tr>
+        <tr>
+          <td>JDBC 2.0 Optional Package</td><td>javax.sql</td><td>jdbc-stdext</td>
+        </tr>
+        <tr>
+          <td>Java Transaction API (JTA)</td><td>javax.transaction</td><td>jta</td>
+        </tr>
+        <tr>
+          <td>Java XML RPC</td><td>javax.xml</td><td>jaxrpc</td>
+        </tr>
+        <tr>
+          <td>Portlet</td><td>javax.portlet</td><td>portlet-api</td>
+        </tr>
+        <tr>
+          <td>JNDI</td><td>javax.naming</td><td>jndi</td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/roadmap.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/roadmap.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/roadmap.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Roadmap</title>
+    <author email="brett at apache.org">Brett Porter</author>
+    <!-- TODO [later]: Perhaps we can utilise the JIRA plugin -->
+  </properties>
+
+  <body>
+    <section name="Roadmap">
+      <p>
+        This document details the current plans for the Maven 1.x project.
+        Please visit the main <a href="http://maven.apache.org/">Maven</a>
+        page for information on Maven 2.
+        More information on the Maven project as a whole can be found in JIRA under the
+        <a href="http://jira.codehaus.org/browse/MPA">MPA</a> project.
+      </p>
+      <p>
+        While this roadmap has a focus on Maven 1.1, individual projects have their own roadmaps which are 
+        also defined in JIRA. For example, the full Maven 1.x roadmap can be browsed under the
+        <a href="http://jira.codehaus.org/browse/MAVEN">MAVEN</a> JIRA project.
+      </p>
+      <subsection name="Maven 1.1-beta-3">
+        <p>
+          Maven 1.1-beta-3 is available for testing, you can download it
+          <a href="start/download.html">here.</a>
+        </p>
+        <p>
+          The main changes with respect to Maven 1.0.2 are:
+        </p>
+        <ul>
+          <li>Integration of Maven 2 technologies such as Maven Wagon, Maven SCM and the new model code</li>
+          <li>Ant 1.6 support</li>
+          <li>Upgrade to later releases of dependencies, in particular Jelly, Dom4j and Jaxen</li>
+          <li>Improved POM layout</li>
+          <li>Updated versions of almost every bundled plugin</li>
+          <li>Documentation improvements</li>
+          <li>Bugfixes - check the JIRA <a href="http://jira.codehaus.org/browse/MAVEN?report=com.atlassian.jira.plugin.system.project:changelog-panel">changelog</a>.</li>
+        </ul>
+        <p>
+          With just a few <a href="reference/backwards-compatibility.html">exceptions</a>, Maven 1.1 will be backwards
+          compatible with Maven 1.0. 
+        </p>
+      </subsection>
+      <subsection name="Maven 1.1-rc1">
+        <p>
+          Maven 1.1-beta-3 is a feature complete version of Maven 1.1, after some time of testing,
+          it should become Maven 1.1-rc1. One issue we plan to fix still is the regression of
+          <a href="http://jira.codehaus.org/browse/MAVEN-1755">MAVEN-1755</a>.
+        </p>
+      </subsection>
+      <subsection name="Maven 1.1">
+        <p>
+          After sufficient testing of the beta(s) and at least one release candidate, Maven 1.1 will be released.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/adapting.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/adapting.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/adapting.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Adapting an Existing Project to Use Maven</title>
+    <author email="brett at apache.org">Brett Porter</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+    <section name="Adapting an Existing Project to Use Maven">
+      <p>
+        This guide will discuss introducing Maven to an existing project which may have some other build system or none
+        at all. It is assumed that you are now a little familiar with Maven, and have given it the
+        <a href="ten-minute-test.html">Ten Minute Test</a>, so have already created a simple project.
+      </p>
+      <p>
+        There is really only one step to introducing Maven into a project: the creation of the project descriptor.
+        Since this does not affect your other build files and should be able to match your current layout,
+        the process is the same as for starting a new project, however more of the values will be customised.
+      </p>
+      <p>
+        This approach can allow you to start getting some of the benefits of Maven without disturbing something that
+        is already working.
+      </p>
+      <p>
+        However, eventually this will mean maintaining information in two locations, which is not ideal. Hopefully you
+        will see that Maven offers the functionality of your existing build environment without much additional work
+        and so will migrate towards using that as the sole platform.
+      </p>
+      <p>
+        For Ant users, there is a document called <a href="../using/migrating.html">Migrating from Ant</a>
+        that will be of assistance.
+      </p>
+      <p>
+        No matter what you are using, the principles are similar: move small portions of your build to Maven, and make
+        Maven the central entry point for goals. For functionality remainining in the existing environment, Maven can
+        call out to it to perform those tasks, using <code>&lt;ant:ant/&gt;</code> or <code>&lt;ant:exec/&gt;</code>.
+      </p>
+      <p>
+        While Maven can usually be configured to match your environment, it is also important to consider refactoring
+        your build, in the same way you would for your code. Changes small, known pieces at a time towards a layout
+        that is encouraged by Maven's <a href="../reference/conventions.html">Conventions Reference</a>.
+      </p>
+      <p>
+        If you need real-world examples, there are plenty of <a href="../about/powered.html">Maven powered
+        projects</a> that can be used as references. However, it is worth checking more than one and referring to the
+        <a href="../using/bestpractices.html">Best Practices</a> document as you do this.
+      </p>
+    </section>
+  </body>
+
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/start/adapting.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/concepts.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/concepts.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/concepts.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,240 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+  <properties>
+    <title>Concepts to Understand Before Using Maven</title>
+    <author email="jeffjensen at upstairstechnology.com">Jeff Jensen</author>
+  </properties>
+
+  <body>
+    <section name="Basic Maven Concepts">
+      <subsection name="Plugins">
+        <h4>What are Plugins?</h4>
+        <p>
+          Read the "Plugin" definition in the
+          <a href="../reference/glossary.html">glossary</a>.
+        </p>
+        <p>
+          Maven plugins implement the functionality.
+          For example, the "java" plugin does java operations
+          such as the "compile" goal.
+        </p>
+        <p>
+          Plugins are installed in the local Maven repository
+          along with the other non-plugin dependencies.
+        </p>
+        <p>
+          For plugin reference information,
+          refer to the <a href="http://maven.apache.org/maven-1.x/plugins/index.html">Plugins</a> page.
+        </p>
+        <p>
+          Maven 1 has two types of plugins: bundled and non-bundled.
+          See below for details on these plugin types.
+        </p>
+        <p>
+          Note that in Maven 2, all plugins are non-bundled.
+        </p>
+        <h4>Bundled Plugins</h4>
+        <p>
+          Bundled plugins are those that come with the Maven distribution.
+          Users need no additional actions to use them.
+          Refer to the
+          <a href="http://maven.apache.org/maven-1.x/plugins/bundled/index.html">Plugins List</a>.
+        </p>
+        <h4>Non-Bundled Plugins</h4>
+        <p>
+          Non-bundled plugins are those that do not come with the Maven distribution.
+          This is how Maven is expandable with new functionality -
+          anyone can create a Maven plugin.
+          Since these plugins do not ship with Maven,
+          the user must install them into the local Maven repository.
+        </p>
+        <p>
+          There are three ways to make a Maven plugin visible to your project:
+        </p>
+        <ol>
+          <li>
+            Declare the plugin as a dependency in the project.
+            Maven will then automatically download and
+            install it into the local repository.
+            <p>
+             This is typically the preferred method.
+             The benefits of this approach are:
+            </p>
+            <ul>
+              <li>Reproducibility: The project has plugin dependencies documented in addition to jar dependencies.</li>
+              <li>Ease: The download and install is automatic for all users/computers.</li>
+              <li>Snapshots: When the version is a SNAPSHOT, Maven always checks for newer versions.</li>
+            </ul>
+            For example:
+<source><![CDATA[
+<dependency>
+  <groupId>maven-plugins</groupId>
+  <artifactId>maven-findbugs-plugin</artifactId>
+  <version>1.3</version>
+  <type>plugin</type>
+</dependency>
+]]></source>
+            <p>
+              Note that this method does not install the plugin into Maven's plugin directory,
+              which means that the plugin will only be usable by the project declaring
+              it as dependency. In order to permanently install a plugin and make it visible
+              to all your projects, you should use one of the following methods.
+            </p>
+          </li>
+          <li>
+            Use the "plugin:download" goal to
+            download the plugin and install it into Maven's plugin directory.
+            For example:
+<source>maven plugin:download -DgroupId=maven-plugins -DartifactId=maven-findbugs-plugin -Dversion=1.3</source>
+          </li>
+          <li>
+            Alternatively to the above, you may just manually download and install the plugin.
+          </li>
+        </ol>
+        <p>
+          Refer to the non-bundled plugins in the list on the
+          <a href="http://maven.apache.org/maven-1.x/plugins/index.html">Plugins</a> page.
+        </p>
+      </subsection>
+
+      <subsection name="Goals">
+        <p>
+          Read the "Goal" definition in the
+          <a href="../reference/glossary.html">glossary</a>.
+        </p>
+        <p>
+          Ant users run custom created "targets", Maven users run goals.
+          Usually, one runs pre-defined Maven goals
+          (the bundled or non-bundled plugins have the goals),
+          but sometimes users create their own goals in either
+          a new plugin or in the maven.xml file.
+        </p>
+        <p>
+          For example,
+        </p>
+        <source>maven java:compile</source>
+        <p>
+          compiles the Java source.
+        </p>
+        <p>
+          Note that you can run multiple goals one after the other
+          in the same invocation of Maven.
+          For example,
+        </p>
+        <source>maven faq xdoc</source>
+        <p>
+          runs the faq plugin followed by the xdoc plugin.
+        </p>
+        <p>
+          Note that some plugin goals cause other plugin goals to run first.
+          For example, running
+        </p>
+        <source>maven jar</source>
+        <p>
+          causes these goals to run in this order:
+        </p>
+        <ol>
+          <li>java:compile</li>
+          <li>test:test</li>
+          <li>jar:jar</li>
+        </ol>
+        <p>
+          Refer to the
+          <a href="index.html">Getting Started</a> and
+          <a href="../using/index.html">Using Maven</a>
+          pages for more info.
+        </p>
+
+      </subsection>
+
+      <subsection name="project.xml">
+        <p>
+          The project.xml file is the "POM" - project object model.
+          It contains the configuration information for the project.
+        </p>
+        <p>
+          Refer to the
+          <a href="../reference/project-descriptor.html">Project Descriptor</a>
+          on the Reference page for its info.
+        </p>
+        <p>
+          Refer to th 
+          <a href="../using/customising.html#Project_Inheritence">Project Inheritence</a>
+          section in
+          <a href="../using/customising.html">Customising Maven</a>
+          for more info.
+        </p>
+      </subsection>
+
+      <subsection name="project.properties">
+        <p>
+          Properties for the project are set in this file.
+          When a plugin lists customization properties,
+          this is the file to put them in.
+        </p>
+        <p>
+          When extending from another POM,
+          this file is inherited too.
+        </p>
+        <p>
+          In addition to plugin properties,
+          the Maven core itself has many properties.
+        </p>
+        <p>
+          Refer to the
+          <a href="../reference/properties.html">Properties Reference</a>
+          on the Reference page and the
+          <a href="../using/customising.html#Extending_the_Build_with_Properties">Extending the Build with Properties</a>
+          section in
+          <a href="../using/customising.html">Customising Maven</a>
+          for more info.
+        </p>
+      </subsection>
+
+      <subsection name="maven.xml">
+        <p>
+          Note, it is recommended to limit use of this file.
+          The maven.xml file can contain processing customization.
+          This includes
+          complete custom goals and
+          adding to the lifecycle of another plugin.
+        </p>
+        <p>
+          Refer to the
+          <a href="../reference/scripting.html">Scripting</a> section,
+          <a href="../using/customising.html">Customising Maven</a> and
+          <a href="../tags.html">Maven Jelly Tag Libraries</a>
+          for more info.
+        </p>
+        <p>
+          One of the best ways to understand maven.xml
+          is to look at ones in existing Maven projects,
+          including those in Maven source.
+        </p>
+        <p>
+          Note that Maven 2 does not have this file.
+          Instead, the plugins and the POM has all processing and configuration.
+        </p>
+      </subsection>
+    </section>
+
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/download.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/download.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/download.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Download</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <head>
+    <style type="text/css"><![CDATA[
+      #bodyColumn a.externalLink { background : none; padding-right: 0px }
+    ]]></style>
+  </head>
+
+  <body>
+    <section name="Download Maven 1.x">
+      <p>
+        Maven is currently distributed in several formats for your convenience. For instructions on
+        how to install maven, see the <a href="install.html">Installation Instructions</a>.
+        You can find both these and older releases <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/">here</a>.
+      </p>
+      <subsection name="Latest Stable Release: Download Maven 1.0.2">
+
+        <p>
+          Please read the <a href="release-notes-LATEST.html">Release Notes</a>.
+        </p>
+  
+        <p>
+          The current release is 1.0.2. Below are the links to the latest release in various formats.
+          See also the list of available updates below the main download list.
+        </p>
+        
+        <ul>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.exe">Windows Installer</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.exe.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.exe.asc">PGP</a>)
+          </li>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.tar.bz2">.tar.bz2 archive</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.bz2.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.bz2.asc">PGP</a>)
+          </li>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.tar.gz">.tar.gz archive</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.gz.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.tar.gz.asc">PGP</a>)
+          </li>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.zip">.zip archive</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.zip.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.0.2.zip.asc">PGP</a>)
+          </li>
+        </ul>
+  
+        <p>
+          Maven is distributed under the <a href="../license.html">Apache License, version 2.0</a>.
+        </p>
+      </subsection>
+      <subsection name="Testing Releases: Download Maven 1.1 Beta 3">
+        <p>
+          Please read the <a href="release-notes-1.1-beta-3.html">Release Notes</a>. In particular, note that
+          you <b>must adjust your path</b> when installing side by side with Maven 1.0.2.
+        </p>
+
+        <ul>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.1-beta-3.exe">Windows Installer</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.exe.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.exe.asc">PGP</a>)
+          </li>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.1-beta-3.tar.bz2">.tar.bz2 archive</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.tar.bz2.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.tar.bz2.asc">PGP</a>)
+          </li>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.1-beta-3.tar.gz">.tar.gz archive</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.tar.gz.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.tar.gz.asc">PGP</a>)
+          </li>
+          <li>
+            <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.1-beta-3.zip">.zip archive</a>
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.zip.md5">checksum</a>)
+            (<a href="http://www.apache.org/dist/maven/binaries/maven-1.1-beta-3.zip.asc">PGP</a>)
+          </li>
+        </ul>
+      </subsection>
+      <subsection name="Plugins for Maven 1.x">
+        <p>
+          The following plugins have been released since the last stable release (Maven 1.0.2), and can be downloaded
+          manually: <a href="http://maven.apache.org/maven-1.x/plugins/bundled/multichanges-report.html">plugin releases</a>.
+          See the main <a href="http://maven.apache.org/maven-1.x/plugins/">plugins</a> page for other plugins.
+        </p>
+      </subsection>
+    </section>
+
+    <section name="Maven 2.0">
+      <p>
+        Maven 2.0 is the current stable release of Maven. For more information and
+        installation instructions, see the <a href="http://maven.apache.org/download.html">Maven 2.0</a> section.
+      </p>
+    </section>
+
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<document>
+  <properties>
+    <title>Quick Start</title>
+    <author email="ltheussl at apache.org">Lukas Theussl</author>
+  </properties>
+  <body>
+    <section name="Getting Started">
+      <p>
+        This guide will give you quick instructions on how to
+        get Maven up and running on your system.
+      </p>
+      <ul>
+        <li><a href="concepts.html">Concepts</a> - Concepts to understand before using Maven</li>
+        <li><a href="install.html">Installing</a> - Installation instructions</li>
+        <li><a href="quick-start.html">Building a Project</a> - How to use Maven to build a given project</li>
+        <li><a href="ten-minute-test.html">Creating a Project</a> - A 'Ten Minute Test' on how to create a project with Maven</li>
+        <li><a href="adapting.html">Adapting a Project</a> - How to adapt an existing project to use Maven</li>
+        <li><a href="../using/migrating.html">Migrating from Ant</a> - How to migrate an existing Ant build to Maven</li>
+      </ul>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/start/index.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/install.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/install.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/install.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,155 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Install</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Installing Maven">
+      <p>
+        You must first <a href="download.html">download</a> Maven
+        (please refer to the documentation).
+      </p>
+
+      <p>
+        Please refer to the appropriate section for the download you have obtained:
+      </p>
+        <ul>
+          <li><a href="#Windows_Installer">Windows Installer</a></li>
+          <li><a href="#Other_Archives">Other Archives</a></li>
+        </ul>
+
+      <p>
+        The final optional step is to set up a <code>${user.home}/build.properties</code> file
+        to customise your Maven installation. For information on the properties you can use, see
+        the <a href="../reference/properties.html">Properties Reference</a>.
+      </p>
+
+      <subsection name="Windows Installer">
+        <p>
+          Installing from the Windows Installer behaves like other Windows Installers:
+          simply run the program and follow the prompts.
+        </p>
+        <p>
+          If you were updating a previous installation, you do not need to do anything further. Note that Maven
+          does not overwrite a previous install, so you may want to remove it from <i>Add/Remove Programs</i>.
+          This can be done safely at any time, as it does not affect your user profile.
+        </p>
+        <p>
+          During the process, you must select an installation directory. This will be set
+          as <code>MAVEN_HOME</code> in your environment, however if you need to be able to run
+          Maven from anywhere, you should add it to your path.
+          To do this under Windows 2000 and Windows XP, open the Control Panel, and open the System
+          panel. Under the Advanced tab, select the Environment Variables button.
+          Create a new user variable (or edit it if it exists) to add <code>%MAVEN_HOME%\bin</code>
+          (eg. <code>PATH=%PATH%;%MAVEN_HOME%\bin</code>
+        </p>
+        <p>
+          You will also need to define the <code>JAVA_HOME</code> environment variable.
+          This variable should be the directory where a Java Development Kit is installed (note
+          that a JRE is not sufficient).
+          This directory will contain the <code>bin</code>, <code>jre</code> and <code>lib</code> directories.
+        </p>
+        <p>
+          Next, you should create your local repository by running the following command:
+        </p>
+          <source><![CDATA[For Windows:
+  %MAVEN_HOME%\bin\install_repo.bat %USERPROFILE%\.maven\repository]]></source>
+        <p>
+          <b>Notes:</b>
+        </p>
+        <ul>
+          <li>This step is optional, but will save downloading several JARs
+            a second time.
+          </li>
+          <li>On Windows systems, your local repository is set by default to 
+            <code>%USERPROFILE%\.maven\repository</code>, which can be annoying when using
+            roaming profiles, you can change its location using the
+            <a href="../reference/properties.html#Maven_Configuration_Properties">maven.repo.local</a>
+            property.
+          </li>
+        </ul>
+        <p>
+          To confirm that you can start Maven, run
+        </p>
+        <source><![CDATA[maven -v]]></source>
+
+      </subsection>
+      
+      <subsection name="Other Archives">
+        <p>
+          If you have downloaded an install archive, it contains a single top-level
+          directory named <code>maven-VERSION</code>, where VERSION is the version
+          downloaded (eg. 1.0). This directory contains all the 
+          Maven related files beneath that. You can now unpack the install
+          archive using <code>tar</code> or <code>unzip</code>.
+        </p>
+      
+        <p>
+          Before you begin using Maven you will need to
+        </p>
+        <ul>
+          <li>
+            define the <code>MAVEN_HOME</code> environment variable which is the
+            directory where you just unpacked the Maven install archive,
+          </li>
+          <li>
+            add <code>MAVEN_HOME/bin</code> to your path so that you can run
+            the scripts provided with Maven.
+          </li>
+        </ul>
+
+        <p>
+          If you are updating from a previous version, you do not need to do anything further. You can safely
+          remove the old install if you wish as it does not contain any user profile information.
+        </p>
+      
+        <p>
+          You will also need to define the <code>JAVA_HOME</code> environment variable.
+          This variable should be the directory where a Java Development Kit is installed (note
+          that a JRE is not sufficient).
+          This directory will contain the <code>bin</code>, <code>jre</code> and <code>lib</code> directories.
+        </p>
+
+        <p>
+          Next, you should create your local repository by running the following command:
+        </p>
+          <source><![CDATA[For Unix:
+  $MAVEN_HOME/bin/install_repo.sh $HOME/.maven/repository]]></source>
+        <p>
+          <b>Note:</b> This step is optional, but will save downloading several JARs
+          a second time.
+        </p>
+
+        <p>
+          To confirm that you can start Maven, run
+        </p>
+        <source><![CDATA[maven -v]]></source>
+
+      </subsection>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/quick-start.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/quick-start.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/quick-start.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,252 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Quick Start - Building a Project with Maven</title>
+    <author email="brett at apache.org">Brett Porter</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+    <section name="Quick Start - Building a Project with Maven">
+      <p>
+        Ok, so you've downloaded a project that requires Maven to build, and
+        you've <a href="download.html">downloaded</a> Maven and <a href="install.html">installed</a> it.
+        This guide will show you how to use it on that project.
+      </p>
+      <p>
+        If you find you don't understand the meaning of a term, you should refer to the
+        <a href="../reference/glossary.html">Glossary</a> for commonly used terminology that is
+        either unique to Maven or has a special meaning.
+      </p>
+      <subsection name="Being Prepared">
+        <p>
+          Maven will run with sensible defaults, so you can get right into it. However, if you are
+          operating under a particularly restrictive environment you might need to prepare to run
+          Maven. When Maven first runs it will:
+        </p>
+          <ol>
+            <li>Expand plugins into a cache directory</li>
+            <li>Download additional dependencies for the plugins and project being built</li>
+          </ol>
+        <p>
+          The <a href="../reference/properties.html">Properties Reference</a> explains how to configure Maven to use
+          different locations for the cache and download repository. By default, these reside under
+          <code>$HOME/.maven</code>.
+        </p>
+        <p>
+          The first time a project is built or a specific plugin is used, you may need to be online to obtain
+          dependencies. If you have them, JARs can be put into your local repository manually if desired, and you can
+          also run a local mirror of needed dependencies. For more information, refer to
+          <a href="../using/repositories.html">Working with Repositories</a>.
+        </p>
+        <p>
+          This might seem onerous, but remember the following advantages:
+        </p>
+          <ul>
+            <li>
+              All Maven projects (including Maven and its plugins) share the repository, so each dependency is
+              only downloaded once.
+            </li>
+            <li>
+              This avoids needing to download each dependency manually and place it in the correct place for each
+              build.
+            </li>
+            <li>
+              No large binaries need to be stored in CVS where they are downloaded and checked for updates often.
+            </li>
+            <li>
+              Maven automatically and uniformly handles proxy servers, multiple remote sources and mirrors.
+            </li>
+          </ul>
+        <p>
+          Occasionally, some dependencies will not be downloadable because of the distribution license they
+          have. These must be downloaded manually and placed into the local repository. This is explained for
+          the commonly requested Sun reference JARs. See
+          <a href="../reference/standard-sun-jar-names.html">Standard Sun JAR names</a> for more information.
+        </p>
+      </subsection>
+
+      <subsection name="Common Tasks">
+        <p>
+          Maven provides standard tasks for common operations. For example, to build a JAR from the current project,
+          run:
+        </p>
+        <source><![CDATA[maven jar]]></source>
+        <p>
+          You'll notice that all of the code is compiled, the unit
+          tests are run, and finally it is packaged into a JAR file. The unit tests
+          generate reports that can later be parsed to create an HTML report
+          that is part of the generated site documentation.  The JAR file
+          can also be automatically distributed if making a release, or shared with other local projects.
+        </p>
+        <p>
+          The output of this task is in the <code>target</code> directory, as with all Maven output. For example:
+        </p>
+          <ul>
+            <li><code>target/classes</code> - compiled source classes and resources</li>
+            <li><code>target/test-classes</code> - compiled test classes and resources</li>
+            <li><code>target/test-reports</code> - Text and XML representations of the test results</li>
+            <li><code>target/project-X.Y.Z.jar</code> - the output JAR, built from the <code>target/classes</code>
+            directory.</li>
+          </ul>
+        <p>
+          For more information on the JAR plugin, including references for goals and properties,
+          see the <a href="http://maven.apache.org/maven-1.x/plugins/jar/">jar plugin documentation</a>.
+        </p>
+        <p>
+          The individual goals that make up the JAR goal can also be called individually, for example:
+        </p>
+        <source><![CDATA[maven java:compile
+maven test]]></source>
+        <p>
+          If you are not building a JAR, there are other plugins for building different types of artifacts.
+          Examples of these can be seen from the "Using Maven" section in the left hand navigation.
+        </p>
+        <p>
+          Another common task when building from the source is to build a local copy of the project site
+          for documentation and reference. This is done with the goal:
+        </p>
+        <source><![CDATA[maven site]]></source>
+        <p>
+          <b>Note:</b> building the site can require a large number of dependencies to be downloaded the
+          first time as several different reports are run.
+        </p>
+        <p>
+          The result of this command is a <code>target/docs</code> directory in
+          the project's base directory that contains an entire web site of
+          documentation. If you are the website maintainer, you can also publish this to a
+          local or remote web server.
+        </p>
+        <p>
+          As for any plugin, more information on the <code>site</code> goals can be 
+          seen in the <a href="http://maven.apache.org/maven-1.x/plugins/site/">site plugin documentation</a>.
+          In addition to a goal and property reference, some plugins also have their own set
+          of FAQs and examples.
+        </p>
+        <p>
+          To clean up after a build and start fresh, simply run:
+        </p>
+        <source><![CDATA[maven clean]]></source>
+        <p>
+          While the standard goals suffice for most day to day usage of Maven, there are plenty of
+          <a href="http://maven.apache.org/maven-1.x/plugins/">other plugins</a> to use. The next section will explain
+          how to get specific help building a project.
+        </p>
+        <p>
+          For information on incorporating Maven into your own project, start with the
+          <a href="ten-minute-test.html">Ten Minute Test</a>.
+        </p>
+      </subsection>
+    </section>
+      
+    <section name="Getting Help on a Maven Project">
+      <p>
+        Ok, you have a project you've just downloaded, and you know it builds with Maven.
+        There's no documentation to speak of for the project itself, so where to start?
+      </p>
+      <subsection name="Help in Ant">
+        <p>
+          If you were using Ant, you'd probably run <code>ant -projecthelp</code>, and if that didn't help, 
+          just run "ant" and hope the default target is what you wanted.
+          A <code>build.properties.sample</code> file may have been provided so you'd copy that and edit it to see
+          if that helped. Then you'd fix individual problems as they came up.
+          If everything goes wrong and you can't find the right target or what property it's expecting, you dig into
+          <code>build.xml</code> and look at what it is attempting.
+        </p>
+        <p>
+          The process for Maven should be at least as easy, and usually simpler.
+        </p>
+      </subsection>
+      <subsection name="Help for a Maven project without a maven.xml file">
+        <p>
+          If there is no <code>maven.xml</code> file, then you know the build hasn't been customised so you can rely on
+          a few things working.
+        </p>
+        <p>
+          If you know it is a JAR, <code>maven jar</code> should do what you expect. If you know it is a web application
+          then <code>maven war</code> should produce the expected results, and if there are subprojects,
+          <code>maven multiproject:artifact</code> is the standard build task. Finally, <code>maven site</code> (or 
+          <code>maven multiproject:site</code>) should produce some documentation or at least the standard reports.
+        </p>
+        <p>
+          Though it is much less likely than in Ant, a <code>build.properties.sample</code> file may have been
+          provided so you'd copy that and edit it too.
+        </p>
+        <p>
+          Otherwise, you shouldn't expect to have to define any properties outside what the project has provided and 
+          you have already defined to get Maven running, as only the standard Maven plugin properties are being used,
+          and you know how they behave.
+        </p>
+      </subsection>
+      <subsection name="Help for a Maven project with a maven.xml file">
+        <p>
+          If there is a <code>maven.xml</code> file, then the build has been customised. You can still rely on the
+          above goals doing what they advertise, but they might not be the recommended way of building that
+          particular project. This is especially true when projects define their own multi-project structure without
+          using the multiproject plugin to build.
+        </p>
+        <p>
+          The first step would be to run <code>maven -u</code>. Similar to <code>ant -projecthelp</code>, it 
+          will list all of the goals in <code>maven.xml</code> and any description listed with the goal by the
+          author. Standard goals like <code>jar</code> will be omitted as their behaviour is already known.
+        </p>
+        <p>
+          You may just run <code>maven</code> and rely on the default goal being what you wanted.
+        </p>
+        <p>
+          You may still get some of the ant problems, where the above doesn't help or the properties are required 
+          and not defined. The same process will apply here - you investigate <code>maven.xml</code> which should be
+          much shorter as it only contains customisations.
+        </p>
+        <p>
+          There will always be bad builds under either system, but Maven gives you quite a head start by providing a
+          standard set of build pieces that you can expect to work out of the box.
+        </p>
+      </subsection>
+      <subsection name="Where it usually goes wrong in Maven">
+        <p>
+          Having said that, there are still a few areas where a Maven build won't work out of the box.
+          By far the most common occurrence of this is depending on a JAR that is not published to a public place.
+          This might be because of licensing (eg a lot of the standard Sun JARs cannot be redistributed by Maven),
+          or because it is a development build of some library that was being built locally. For more information,
+          see <a href="../reference/standard-sun-jar-names.html">Standard Sun JAR names</a>.
+        </p>
+        <p>
+          If you are downloading the source to a project, it is always worth running <code>maven build:end</code>
+          once on each <code>project.xml</code>. This won't do anything except download all the dependencies
+          the project wants. If some can't be found, then you should track them down while still online.
+          If it has been particularly troublesome and undocumented, you might want to harass 
+          the authors of the project via their users mailing list (which you should also find in
+          <code>project.xml</code>).
+        </p>
+      </subsection>
+      <subsection name="More Help">
+        <p>
+          For a complete reference on how to get help about building a Maven project from the command line, see
+          the <a href="../reference/command-line.html">Maven Command Line Reference</a>.
+        </p>
+      </subsection>
+    </section>
+  </body>
+
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/start/quick-start.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-2.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-2.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-2.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Release Notes</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Maven 1.1-beta-2 Released">
+      <p>
+The Apache Maven team is pleased to announce the release of Maven 1.1-beta-2
+</p><p>
+<a href="download.html">http://maven.apache.org/start/download.html</a>
+</p>
+<p>
+Maven is a project management and project comprehension tool. Maven is based 
+on the concept of a project object model: builds, documentation creation, site 
+publication, and distribution publication are all controlled from the project 
+object model. Maven also provides tools to create source metrics, change logs 
+based directly on source repository, and source cross-references.
+</p>
+<p>
+This release focuses on the following objectives:
+</p>
+        <ul>
+          <li>Integration of Maven 2 technologies such as Maven Wagon, Maven SCM and the new model code</li>
+          <li>Ant 1.6.5 support</li>
+          <li>Upgrade to later releases of dependencies, in particular Jelly</li>
+          <li>Significant improvements in memory usage</li>
+          <li>Improved POM layout</li>
+          <li>Bugfixes</li>
+        </ul>
+        <p>
+          With just a <a href="../reference/backwards-compatibility.html">few exceptions</a>, Maven 1.1 is backwards
+          compatible with Maven 1.0.
+        </p>
+<p>
+ For a full list of changes, please see <a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?version=10211&amp;styleName=Html&amp;projectId=10030&amp;Create=Create">JIRA</a>.
+</p>
+<p>
+<b>IMPORTANT: </b> You must ensure that Maven 1.1 is first in your path if you want to have it installed side-by-side with Maven 1.0.2
+</p>
+<p>
+We hope you enjoy using Maven! If you have any questions, please consult:
+</p>
+<ul>
+<li>the FAQ: <a href="../faq.html">http://maven.apache.org/faq.html</a></li>
+<li> the maven-user mailing list: <a href="../mail-lists.html">http://maven.apache.org/mail-lists.html</a></li>
+</ul>
+<p>
+For news and information, see:
+</p>
+<ul>
+<li>Maven Blogs: <a href="http://www.mavenblogs.com/">http://www.mavenblogs.com/</a></li>
+</ul>
+<p>
+<i>- The Apache Maven Team</i>
+</p>
+</section>
+</body>
+</document>
+
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-3.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-3.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-1.1-beta-3.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Release Notes</title>
+    <author email="ltheussl AT apache DOT org">Lukas Theussl</author>
+    <author email="aheritier AT apache DOT org">Arnaud Heritier</author>
+  </properties>
+
+  <body>
+    <section name="Maven 1.1-beta-3 Released">
+      <p>
+        The Apache Maven team is pleased to announce the release of Maven 1.1-beta-3!
+      </p>
+      <p>
+        <a href="download.html">Download</a> Maven 1.1-beta-3 and read the
+        <a href="install.html">Installation Instructions</a>.
+      </p>
+      <p>
+        Maven is a project management and project comprehension tool. Maven is based 
+        on the concept of a project object model: builds, documentation creation, site 
+        publication, and distribution publication are all controlled from the project 
+        object model. Maven also provides tools to create source metrics, change logs 
+        based directly on source repository, and source cross-references.
+      </p>
+      <p>
+        Compared to Maven 1.1 beta 2, this release focuses on the following objectives:
+      </p>
+      <ul>
+        <li>Upgrade to later releases of dependencies, in particular Jelly, Dom4j and Jaxen,</li>
+        <li>Re-introduction of Xerces into the core dependencies (it was removed in previous betas),</li>
+        <li><a href="../plugins/bundledHistory.html">Upgraded versions</a> of almost all the bundled plugins,</li>
+        <li>Documentation updates,</li>
+        <li>Bugfixes.</li>
+      </ul>
+      <p>
+        For a full list of changes, please see
+        <a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10030&amp;styleName=Html&amp;version=11989">JIRA</a>.
+      </p>
+      <p>
+        With just a <a href="../reference/backwards-compatibility.html">few exceptions</a>,
+        Maven 1.1-beta-3 is backwards compatible with Maven 1.0. One notable issue is the fact
+        that you cannot use xml entities in project.xml, see
+        <a href="http://jira.codehaus.org/browse/MAVEN-1755">MAVEN-1755</a>.
+      </p>
+      <p>
+        <b>Please note :</b> <a href="http://maven.apache.org/">Maven 2.0.4</a> is the latest stable release of Maven and is recommended for all new projects, 
+        but is not compatible with Maven 1.x. The release of Maven 1.1 is to improve the performance and stability 
+        for those using Maven 1.0 for their builds.
+      </p>
+      <p>
+        We hope you enjoy using Maven! If you have any questions, please consult:
+      </p>
+      <ul>
+        <li>the <a href="../faq.html">FAQ</a></li>
+        <li>the <a href="../mail-lists.html">maven-user</a> mailing list</li>
+      </ul>
+      <p>
+        <i>- The Apache Maven Team</i>
+      </p>
+    </section>
+  </body>
+</document>
+
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-LATEST.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-LATEST.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-LATEST.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Release Notes</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Maven 1.0.2 Released">
+      <p>
+The Apache Maven team is pleased to announce the release of Maven 1.0.2.
+</p><p>
+<a href="download.html">http://maven.apache.org/maven-1.x/start/download.html</a>
+</p><p>
+This release contains further bugfixes since the Maven 1.0 release. In addition, all of the latest stable plugin releases are included, which include both bugfixes and some new features.
+</p><p>
+We recommend that all users upgrade to this release, in particular those using pre-1.0 betas or release candidates.
+</p><p>
+Maven is a project management and project comprehension tool. Maven is based 
+on the concept of a project object model: builds, documentation creation, site 
+publication, and distribution publication are all controlled from the project 
+object model. Maven also provides tools to create source metrics, change logs 
+based directly on source repository, and source cross-references.
+</p><p>
+To see a list of changes to Maven, please refer to the JIRA
+<a href="http://jira.codehaus.org/browse/MAVEN?report=com.atlassian.jira.plugin.system.project:changelog-panel">Change Log</a>, or the brief summary below:
+</p>
+<ul>
+<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1428'>MAVEN-1428</a>] - "Response content length not known"</li>
+<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1501'>MAVEN-1501</a>] - maven seems not to evaluate .properties of parent pom</li>
+<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1502'>MAVEN-1502</a>] - Build doesn't fail when dependency can't be downloaded due to wrong permissions</li>
+<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1507'>MAVEN-1507</a>] - Fails on IBM 1.3 JDK</li>
+<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1511'>MAVEN-1511</a>] - Jar override does not work when trying to override to SNAPSHOT</li>
+<li>[<a href='http://jira.codehaus.org/browse/MAVEN-1518'>MAVEN-1518</a>] - Wrong behaviour for non existing overwritten dependency</li>
+</ul>
+<p>
+Please note that each plugin has its own changes report - please refer to the <a href="http://maven.apache.org/maven-1.x/plugins/">plugins site</a> to see the plugin you are interested in.
+</p>
+<p>
+We hope you enjoy using Maven! If you have any questions, please consult:
+</p>
+<ul>
+<li>the FAQ: <a href="../faq.html">http://maven.apache.org/maven-1.x/faq.html</a></li>
+<li> the maven-user mailing list: <a href="../mail-lists.html">http://maven.apache.org/maven-1.x/mail-lists.html</a></li>
+</ul>
+<p>
+For news and information, see:
+</p>
+<ul>
+<li>Maven Blogs: <a href="http://www.mavenblogs.com/">http://www.mavenblogs.com/</a></li>
+</ul>
+<p>
+<i>- The Apache Maven Team</i>
+</p>
+</section>
+</body>
+</document>
+
+


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/start/release-notes-LATEST.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/samples/sample-echo.zip
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/start/samples/sample-echo.zip
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.1~beta3/xdocs/start/ten-minute-test.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/start/ten-minute-test.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/start/ten-minute-test.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,335 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>The Ten Minute Test - Creating a Project with Maven</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="The Ten Minute Test - Creating a Project with Maven 1.x">
+      <p>
+        Often when evaluating a new piece of software, you want to give it the "ten minute test" - download, install
+        and run it, and then do something useful with it within 10 minutes to get a feel for how it works. It can be a
+        lot more useful than reading the manual. This guide will help you do that.
+      </p>
+      <p>
+        Sure, you won't have converted any massive, highly-customised build you may already be using, but you'll know
+        where to start.
+      </p>
+      <p>
+        Beforehand, it is worth getting familiar with how to run Maven. Please read the
+        <a href="quick-start.html">Quick Start</a> for important instructions on how to install Maven, and download
+        dependencies, and learn the basics for running it.
+      </p>
+      <p>
+        If you are already very familiar with Ant, you may also like to refer to the
+        <a href="../using/migrating.html">Migrating from Ant</a> guide.
+      </p>
+      <subsection name="Step 1: Setting up the directory structure">
+        <p>
+          As you'd expect, the first steps are to set up the required directories. The small project will
+          be an echo program.
+        </p>
+        <source>mkdir sample-echo
+cd sample-echo</source>
+        <p>
+          From here, you <i>could</i> use the <a href="http://maven.apache.org/maven-1.x/plugins/genapp/">genapp</a> plugin
+          to generate a skeleton project for you. However, here we will start from scratch so that each element can be
+          explained.
+        </p>
+        <p>
+          While you can set up almost any directory structure and use it with Maven, there is a
+          <a href="../reference/conventions.html#Directory_Structure">standard directory structure</a> defined
+          that is recommended. The reasons for this are explained in the definition, but essentially ensure
+          minimal extra configuration by you, and make it easier for users familiar with Maven to navigate
+          your project.
+        </p>
+        <p>
+          Let's continue by creating the following directory layout:
+        </p>
+        <source>sample-echo [current directory]
++- src
+   +- main
+      +- java
+         +- samples [package structure]
+            +- echo
+      +- resources
+   +- test
+      +- java
+         +- samples [package structure]
+            +- echo
++- xdocs</source>
+        <p>
+          The following is an explanation of what each directory's purpose is:
+        </p>
+        <table>
+          <tr>
+            <td width="20%"><code>src</code></td>
+            <td width="80%">
+              This will contain all types of source files under the following subdirectories.
+            </td>
+          </tr>
+          <tr>
+            <td><code>src/main</code></td>
+            <td>
+              This is intended for the main part of the application - the code that would be
+              part of the final distributable.
+            </td>
+          </tr>
+          <tr>
+            <td><code>src/main/java</code></td>
+            <td>
+              This is the java code that makes up the application. Below this should be a package structure.
+            </td>
+          </tr>
+          <tr>
+            <td><code>src/main/resources</code></td>
+            <td>
+              These are additional resources for copying into the final distributable. This may have a
+              subdirectory structure that is maintained, including using a package structure.
+              For example, you might have a <code>META-INF/MANIFEST.MF</code> file in here (although Maven
+              does create a default one for you so this isn't usually necessary).
+            </td>
+          </tr>
+          <tr>
+            <td><code>src/test</code></td>
+            <td>
+              This contains everything needed to unit test your application. You may have additional similar
+              directories later if you add other types of tests such as integration tests using Cactus.
+            </td>
+          </tr>
+          <tr>
+            <td><code>src/test/java</code></td>
+            <td>
+              This is the java code that makes up the unit tests for the application.
+              Below this should be a package structure.
+            </td>
+          </tr>
+          <tr>
+            <td><code>src/test/resources</code></td>
+            <td>
+              As for <code>src/main/resources</code>, but only made available to the unit tests. Not used in
+              this example.
+            </td>
+          </tr>
+          <tr>
+            <td><code>xdocs</code></td>
+            <td>
+              This contains the documentation that will be transformed into
+              HTML and published as a project site.
+              <strong>Note</strong>: by defaulting the xdocs location to the
+              top level directory, Maven 1.x violates the directory structure
+              <a href="../reference/conventions.html#Directory_Structure">conventions</a>
+              adopted in Maven 2, where it defaults to
+              <code>src/site/xdoc</code>. You can make your project
+              layout compatible with Maven 2 by overriding the
+              <code>maven.docs.src</code> property.
+            </td>
+          </tr>
+        </table>
+        <p>
+          Now, you are ready to start defining the project layout for Maven.
+        </p>
+      </subsection>
+      <subsection name="Step 2: Create a project descriptor">
+        <p>
+          The most important file to Maven is <code>project.xml</code>. While you can run Maven without it, it will not
+          know anything about your project - so is only useful for project-independant goals such as
+          <code>scm:checkout</code> or <code>genapp</code>.
+        </p>
+        <p>
+          Different people have different preferences for how they create their project descriptor.
+          Some will copy from an existing project and edit, some will run <code>maven genapp</code> and
+          accept the defaults to get a skeleton project, and some will hand-edit it from scratch.
+          In the near future, tools will be available to graphically edit the project descriptor.
+        </p>
+        <p>
+          The following is a basic project descriptor:
+        </p>
+        <source><![CDATA[<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
+  <pomVersion>3</pomVersion>
+  <id>sample-echo</id>
+  <groupId>sample</groupId>
+  <artifactId>sample-echo</artifactId>
+  <name>Sample</name>
+  <currentVersion>1.0-SNAPSHOT</currentVersion>
+  <inceptionYear>2005</inceptionYear>
+  <dependencies>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.8</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+    </resources>
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+    </unitTest>
+  </build>
+</project>]]></source>
+        <p>
+          There are many more elements to be introduced as you develop, especially if you want to make releases
+          or publish a site. A <a href="../reference/project-descriptor.html">full description of the project
+          descriptor</a> is available. Often, common elements will be shared in a parent descriptor to keep
+          each as small as possible.
+        </p>
+        <p>
+          The above descriptor is all you need to build a JAR and run any tests associated with it.
+          Try it for yourself: add some Java code to the <code>src/main/java</code> directory (include
+          subdirectories for any package name), and a JUnit test under <code>src/test/java</code>.
+          The following goals will perform some standard behaviours:
+        </p>
+        <ul>
+          <li><code>maven java:compile</code> - this will compile the code and check for errors - nothing more</li>
+          <li><code>maven test</code> - this will compile the code and tests, then run all of the unit tests</li>
+          <li><code>maven jar</code> - this will build a JAR from your code, after running the tests as above</li>
+          <li><code>maven site</code> - even now, you can generate a site in <code>target/docs</code> and see what
+            it will look like</li>
+        </ul>
+        <p>
+          Note that you can <a href="samples/sample-echo.zip">download</a> some sample code instead of creating the
+          project above.
+        </p>
+      </subsection>
+
+      <subsection name="Customising the Build">
+        <p>
+          In addition to the project descriptor, a number of properties can be set to customise the way
+          the build performs. For example, say you wanted to change some properties regarding compilation
+          for the project. You can create a <code>project.properties</code> file in the same location as your
+          <code>project.xml</code> file.
+        </p>
+        <source>maven.compile.source=1.3
+maven.compile.target=1.1
+maven.compile.debug=true</source>
+        <p>
+          There are a great number of customisation properties available, each relating to individual plugins
+          and some for Maven itself. For example, the above properties are defined for the
+          <a href="http://maven.apache.org/maven-1.x/plugins/java/properties.html">Java plugin</a> which provides the
+          <code>java:compile</code> goal.
+        </p>
+        <p>
+          You can usually find a reference of the properties that will customise a plugin in each respective
+          plugin's documentation. A list of plugins can be found in the
+          <a href="http://maven.apache.org/maven-1.x/plugins/index.html">Plugins Reference</a>, which is also linked in the navigation
+          of this site.
+        </p>
+        <p>
+          There are also a number of standard properties defined by Maven itself, which are listed in the
+          <a href="../reference/properties.html">properties reference</a>.
+        </p>
+        <p>
+          Properties are read in a particular order - while usually they will be defined in
+          <code>project.properties</code> to share with all users of your project, sometimes they are specific to
+          your environment (eg, when they include paths on your machine). In this case they should be included in
+          <code>build.properties</code> in either the project directory (if they are specific to the project) or
+          in your home directory (if they are for every project on your machine under your account). For more
+          information about the order properties are loaded, see the <a href="../reference/properties.html">properties
+          reference</a>.
+        </p>
+      </subsection>
+
+      <subsection name="Generating the Site">
+        <p>
+          As was shown previously, the project descriptor is all that is initially needed to generate a site for your
+          project by running:
+        </p>
+        <source>maven site</source>
+        <p>
+          The next step in this process is to add some custom documentation to the site. This might be some basic
+          usage instructions, linking out the Javadoc and other references, or it might be a complete project site
+          depending on your preference.
+        </p>
+        <p>
+          To try this, add a file called <code>xdocs/index.xml</code> in your project with the following content:
+        </p>
+        <source><![CDATA[<document>
+  <properties>
+    <title>Hello World</title>
+    <author email="me at mycompany.com">Me</author>
+  </properties>
+
+  <body>
+    <section name="Section 1">
+      <p>
+        Hello world!
+      </p>
+    </section>
+  </body>
+</document>]]></source>
+        <p>
+          To view your new index page in <code>target/docs/index.html</code>, regenerate the site again:
+        </p>
+        <source>maven site</source>
+        <p>
+          Any XHTML will be accepted within the &lt;section /&gt; tags, as well as other special tags. Some HTML,
+          such as tables, are also styled specially. For more information on building a site, see the
+          <a href="../using/site.html">User's Guide</a>.
+        </p>
+      </subsection>
+    </section>      
+
+    <section name="Where to next?">
+      <p>
+        Thanks for giving Maven the ten minute test! If you have any feedback (positive and negative), please
+        email the <a href="../mail-lists.html">Maven Users List</a>.
+      </p>
+      <p>
+        This tutorial has hopefully given enough information on how easy it is to start a new project with
+        Maven. Luckily, creating more complex projects is just as easy as Maven encourages you to build up
+        projects consistently, like building blocks.
+      </p>
+      <p>
+        For more information on beginning with Maven, the book <a href="http://www.mavenbook.org/">Maven:
+        A Developer's Notebook</a> has a <a href="http://www.oreilly.com/catalog/mavenadn/chapter/ch01.pdf">sample
+        chapter</a> online that deals with getting started.
+      </p>
+      <p>
+        It is recommended that you read the areas of the <a href="../using/index.html">User's Guide</a>
+        that relate to the particular type of project you are working on next. This includes:
+      </p>
+      <ul>
+        <li>Utilising source control</li>
+        <li>Working with multi-module projects</li>
+        <li>Releasing a project and deploying it to a repository</li>
+      </ul>
+      <p>
+        As previously mentioned, you can also find more help on using a particular plugin in each plugin's
+        documentation mini-site, which are listed in the <a href="http://maven.apache.org/maven-1.x/plugins/index.html">Plugins
+        Reference</a>. There is also a <a href="../reference/index.html">Reference area</a> for more general
+        Maven documentation.
+      </p>
+    </section>
+  </body>
+
+</document>
+


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/start/ten-minute-test.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/style/project.css
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/style/project.css	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/style/project.css	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,38 @@
+#newsbox {
+  float: right;
+  margin: 0px 0px 0px 20px;
+  padding: 5px;
+  border: 1px solid #999;
+  background-color: #eee;
+}
+
+#newsbox h5 {
+  color: #000;
+  margin: 0;
+  border-bottom: 1px solid #aaaaaa;
+  font-size: small;
+  padding: 0;
+}
+
+#newsbox dt {
+  font-weight: normal;
+  text-decoration: underline;
+  background-color: #eee;
+}
+
+dt {
+  padding: 4px 4px 4px 24px;
+  color: #000;
+  background-color: #fff;
+  font-weight: bold;
+  font-size: small;
+  background-image: none;
+}
+
+p, h4, table {
+  margin-left: 1em;
+}
+
+div.source {
+  margin-left: 2em;
+}

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/bestpractices.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/bestpractices.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/bestpractices.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,252 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Best Practices</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Best Practices">
+      <p>
+        One of the biggest advantages of Maven is that it makes things easiest when best practices are followed. There
+        are several recommended steps to take in setting up your build and developing the project that will help
+        detailed here.
+      </p>
+      <subsection name="Follow Conventions">
+        <p>
+          Many have complained that Maven forces a certain structure on a project. While this is not completely true
+          (most settings are still configurable), it certainly does make it easier to use defaults.
+        </p>
+        <p>
+          From the layout of your source code to the layout of your project documentation, and all the standard goals
+          in between, following conventions helps new users find their way around your project with minimal training
+          and additional documentation.
+        </p>
+        <p>
+          For more information, refer to the <a href="../reference/conventions.html">Conventions Reference</a>.
+        </p>
+      </subsection>
+      <subsection name="Reproduciblity">
+        <p>
+          It is important to make sure a build is reproducible. This means a few things:
+        </p>
+        <ol>
+          <li>That any user can check it out and build as is (or with minimal configuration)</li>
+          <li>That you can check out a historical codebase and it should build as it did then</li>
+          <li>That a generated artifact for a particular version of a project should always be built identically</li>
+        </ol>
+        <p>
+          Making sure any user can check it out and build means that you must avoid the need for properties specific
+          to your environment. The best practices to follow here are:
+        </p>
+        <ul>
+          <li>Minimise the number of properties in <code>$HOME/build.properties</code> and ensure they are only
+            those required for your particular environment, and that it is well known that they need to be set (eg
+            HTTP proxy settings, J2EE server installation path)</li>
+          <li>Don't use absolute paths in properties and scripts for a project</li>
+          <li>If you must add an environment specific property, add it to <code>build.properties</code> in the project,
+            but don't commit it to source control. Commit a sample properties file that other developers will know to
+            copy and edit accordingly. However, wherever possible, use sensible defaults to avoid the need for this.</li>
+        </ul>
+        <p>
+          Being able to check out a historical codebase is more important in some environments than others, but often
+          you don't know you need it until it is too late, so it is a good practice to follow.
+        </p>
+        <ul>
+          <li>Follow the property rules above as they will also cause old builds to fail as things change in a local
+            environment</li>
+          <li>Make sure that releases use known versions of dependencies - don't depend on SNAPSHOTs that are subject to
+            change and likely to be different the next time you build from when the original release way</li>
+          <li>Document the version of Maven and plugins installed when building the project. This information can be
+            obtained with <code>maven --info</code>. Future versions of Maven aim to make this easier to keep consistent
+            through the life of the project.</li>
+        </ul>
+        <p>
+          Finally, make sure generated artifacts are always built identically. This is important as two files with the
+          same name, but different settings built in can become very confusing. Also, you often do not want to have to
+          rebuild an artifact as it goes from staging to QA to production as it introduces the risk that it may be
+          built differently (especially if the previous principles were not adhered to!) Some recommendations for
+          this are:
+        </p>
+        <ul>
+          <li>Avoid the need to filter resources. While this can be useful in a development environment, it usually
+            requires rebuilding of an artifact between different phases of deployment. The best alternative is to
+            externalise the configuration - for example in J2EE (where this is a common occurrence), make sure all
+            configurable information such as database connection properties are in the deployment descriptor, provided
+            through JNDI outside of the webapp or other deployable item. This means the particular artifact can be
+            deployed identically into different servers, with just the external configuration differing.</li>
+          <li>Only interpolate values in the POM with other POM values, not properties that might be user or
+            environment specific.</li>
+          <li>Avoid the use of file entities in the POM.</li>
+          <li>Follow the other rules above - avoid including resources outside of the base directory of the project,
+            and don't use properties customised to a particular environment.</li>
+        </ul>
+        <p>
+          One helpful method to assist reproducibility, if your environment has the capacity, is to set up a user on a
+          machine with a clean environment that matches the target environment, with known properties, plugins and other
+          software. This user can be used to build releases from a known baseline.
+        </p>
+      </subsection>
+      <subsection name="Scripting">
+        <p>
+          Try to minimise the amount of scripting done. Those familiar with Ant will often put a lot of Ant tasks into
+          <code>maven.xml</code>. <i>You should try not to have a <code>maven.xml</code> file.</i>
+        </p>
+        <p>
+          The reason for this is that this starts to make each build behave differently, losing one of the benefits of
+          having a uniform environment. It also requires more maintenance and documentation.
+        </p>
+        <p>
+          Try to look for plugins that provide the functionality you are looking for, configure existing plugins, or
+          even make small rearrangements to your project if you are just looking to reproduce existing functionality in
+          a different way.
+        </p>
+        <p>
+          If you do have to do scripting, it is highly recommended to create a separate plugin project that provides
+          these services so that it does not need to be duplicated across projects and the changes are isolated.
+        </p>
+        <p>
+          Things that are often placed in <code>maven.xml</code> are shortcut names for commonly used goal combinations,
+          specification of the default goal, and pre/postGoal definitions to make small modifications to the behaviour
+          of an existing goal - for example to add a new source root before compilation.
+        </p>
+      </subsection>
+      <subsection name="Writing Plugins">
+        <p>
+          Writing plugins is the best way to extend Maven and continue to share it among other projects. However due to
+          its architecture there are some things that are not recommended.
+        </p>
+        <p>
+          Firstly, try not to use <code>pre/postGoal</code> definitions inside a plugin. This will bind that plugin to
+          another plugin causing side effects when the plugin is loaded, but different effects when it is not. A better
+          solution is to define the behaviour in a new goal, and then have the projects using the plugin define the
+          <code>pre/postGoal</code> to call the new goal.
+        </p>
+        <p>
+          Also, try not to call into other plugins using <code>attainGoal</code>. This makes your plugin susceptible to
+          changes in the other plugin. Often you won't have an option - however the recommended way for plugins to
+          expose their functionality is using Jelly Tag Libraries, or even better - shared Java code.
+        </p>
+        <p>
+          Use of <code>prereqs</code> is strongly preferred over <code>attainGoal</code> in any situation other than
+          inside <code>pre/postGoal</code> definitions. This ensures the best order can be determined and that goals
+          are only executed once.
+        </p>
+      </subsection>
+      <subsection name="Project Development Cycle">
+        <p>
+          Whenever you start making changes after a recent release, you should check the <code>currentVersion</code>
+          tag in <code>project.xml</code> and ensure that it is <code><i>nextVersion</i>-SNAPSHOT</code>.
+        </p>
+        <p>
+          By tagging the version as <code>-SNAPSHOT</code> it signifies it is not released (so won't accidentally
+          overwrite the official release), and has the advantage that when published, newer versions will be downloaded
+          if it changes.
+        </p>
+        <p>
+          Part of the release process is to set <code>currentVersion</code> to the actual version released.
+          For more information, set <a href="releasing.html">Making Releases</a>.
+        </p>
+      </subsection>
+      <subsection name="Keep the Site Documentation Updated">
+        <p>
+          The
+          <code>xdocs</code> directory should contain a set of documentation that can be published as a site,
+          giving users and developers instructions on how to use the project.
+        </p>
+        <p>
+          When you make changes to the project, make sure the documentation is kept up to date.
+          For plugins, consider especially the
+          <code>xdocs/goals.xml</code> and
+          <code>xdocs/properties.xml</code> files. If the plugin has no
+          xdocs, you can generate skeletons using
+          <code>maven plugin:generate-docs</code>.
+        </p>
+      </subsection>
+      <subsection name="Maintain a Change Log">
+        <p>
+          The
+          <code>xdocs/changes.xml</code> file can be used to track changes as they are made, including who made them,
+          what ticket number they relate to, and who they were contributed by if it was submitted as a patch.
+        </p>
+        <p>
+          Maintaining this gives a more readable change log than that provided by the SCM reports, and can be used to
+          generate documentation and release notes.
+        </p>
+        <p>
+          When committing a change, you should edit and commit
+          <code>xdocs/changes.xml</code> (create it if it does not
+          exist) and describe the change according to the format given in the
+          <a href="http://maven.apache.org/maven-1.x/plugins/changes/">changes plugin</a>.
+        </p>
+        <p>
+          <b>Note:</b> In the future, Maven should be able to integrate tightly with your issue tracking system to
+          reduce the need for this.
+        </p>
+      </subsection>
+      <subsection name="Refactor Your Build">
+        <p>
+          You will find that it is much easier to work with Maven when projects are simple and independent. This kind
+          of loosely coupled structuring is often recommended for source code, so it makes sense to apply the same
+          thought process to the structure of your build.
+        </p>
+        <p>
+          Don't be afraid to split an artifact in two if it is becoming complicated to maintain the build.
+        </p>
+        <p>
+          Some specific examples:
+        </p>
+        <ul>
+          <li>If you have some sets of integration or functional tests that rely on the artifact being fully packaged
+            and have a large amount of configuration and/or code of their own, consider putting them in a separate
+            project that depends on the main artifact.</li>
+          <li>If you need to share test code among different projects, put that test code in its own artifact (this time
+           included in the main source tree) and depend on that artifact for your tests in other projects.</li>
+          <li>If you are generating a large amount of code, you may find it helpful to keep the generated code in an
+            artifact of its own, and depend on that from your other projects.</li>
+        </ul>
+      </subsection>
+      <subsection name="Getting ready for Maven 2">
+        <p>
+          <b>Dependency Scopes:</b> Maven 2 has a concept of 
+          <em><a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">scopes</a></em>
+          which are used to control
+          when and where the dependencies are used in terms of e.g. the compile, test and runtime class paths. Maven
+          1 doesn't have this concept but it's still useful to include this information when adding dependencies to
+          your project. It will be useful when you (possibly) convert your project to Maven 2 and if your repository
+          is ever converted to a Maven 2 repository the Maven 2 POMs will include dependencies with the correct scope.
+        </p>
+        <p>
+          To set the scope on your dependency use the <em>scope</em> tag like this:
+        </p>
+      <source><![CDATA[<dependency>
+  <groupId>foo</groupId>
+  <artifactId>bar</artifactId>
+  <version>1.0</version>
+  <properties>
+    <scope>test</scope>
+  </properties>
+</dependency>]]></source>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/customising.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/customising.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/customising.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,173 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Customising Maven</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Customising Maven">
+      <p>
+        Earlier in the User's Guide, you've seen how to configure a <code>project.xml</code> to build various different
+        types of projects.
+      </p>
+      <p>
+        In addition to customising the build through the project model, additional properties can be set, and scripting
+        can be used to define custom goals, or enhance the workflow during the build.
+      </p>
+      <subsection name="Extending the Build with Properties">
+        <p>
+          There are two sets of properties: a small set of <a href="../reference/properties.html">standard properties</a>
+          that are fundamental to the operation of Maven, and can be changed to customise for your particular
+          environment or change the basic structure Maven uses for a project.
+        </p>
+        <p>
+          This properties reference above also explains the order in which properties files are loaded, and the reasons
+          to use each.
+        </p>
+        <p>
+          The majority of properties in Maven are the plugin properties. These can be used to customise any aspect of
+          the build process.
+        </p>
+        <p>
+          For example, if you are looking to change the way java sources are compiled, you can see the reference for the
+          <a href="http://maven.apache.org/maven-1.x/plugins/java/properties.html">Java plugin properties</a>. This allows you to set
+          properties such as the <code>-target</code> setting, and whether to see deprecations. These can be added to
+          <code>project.properties</code> for all builders of your project:
+        </p>
+        <source>maven.compile.target=1.1
+maven.compile.deprecation=on</source>
+        <p>
+          While several of the most helpful properties are explained in the guides on this site, there is
+          a full list of plugins available on the <a href="http://maven.apache.org/maven-1.x/plugins/">Plugins Reference</a> mini-site.
+          From there, you can navigate to the plugin you are interested in (which matches the first part of the goal
+          name you are calling and wanting to configure), and on to its list of available properties.
+        </p>
+        <p>
+          Note that while properties are essential to configuring Maven and it's plugins, they can also be a source of
+          bad practices. See the <a href="bestpractices.html#Reproduciblity">Best Practices</a> guide for more information.
+        </p>
+        <p>
+          <strong>Note</strong> that due to a 'feature' in the jexl expression evaluator, property names (not values!)
+          must not contain dashes (which are interpreted as subtraction operators by jexl).
+        </p>
+      </subsection>
+      <subsection name="Property Substitution in the Project Descriptor">
+        <p>
+          It is often much easier to parameterise values in the project descriptor (or in the properties files) with other
+          properties or fields from the project descriptor than to redefine them each time.
+          This is particularly powerful when used with inheritence, as seen in the next section.
+        </p>
+        <p>
+          For example, you might set the URL based on the artifact ID:
+        </p>
+        <source><![CDATA[<project>
+  <artifactId>my-project</artifactId>
+  ...
+  <url>http://www.mycompany.com/mainproject/subprojects/${pom.artifactId}</url>
+</project>]]></source>
+        <p>
+          For more information on how to specify expressions to use for interpolating these values, see the
+          <a href="../reference/scripting.html#Jexl">Jexl section</a> of the Scripting Reference.
+        </p>
+      </subsection>
+      <subsection name="Project Inheritence">
+        <p>
+          When working with multiple projects that share some information, it would be quite tedious to have to enter the
+          same information into each project, or to maintain it afterwards.
+        </p>
+        <p>
+          For this reason, it is possible to extend a common project file:
+        </p>
+        <source><![CDATA[<project>
+  <extend>../project.xml</extend>
+  ...
+</project>]]></source>
+        <p>
+          All elements are inherited and merged in, with later definitions overriding any defined earlier.
+          Projects can be inherited to any level, but each can only extend one parent.
+        </p>
+        <p>
+          If there are any properties to be substituted into the parent POM or properties, the value will be evaluated
+          <i>after</i> inheritence has been completed. For instance, if in the parent POM with artifact ID
+          <code>my-parent</code> there was a description set like so:
+        </p>
+        <source><![CDATA[<description>This is ${pom.artifactId}</description>]]></source>
+        <p>
+          In the child project, if description were inherited and the artifact ID were <code>my-child</code> then
+          the description would be <code>This is my-child</code>.
+        </p>
+        <p>
+          In addition to the <code>project.xml</code> definition, properties files and <code>maven.xml</code> files
+          associated with the parent POM are inherited. Like the project descriptor properties and goals defined are
+          added to those defined in the subprojects, with the subproject properties and goals overriding those from
+          the parent if specified. <code>preGoal</code> and <code>postGoal</code> definitions that are inherited are
+          accumulated though - all specified hooks will be executed.
+        </p>
+        <p>
+          <b>Note:</b> lists in the POM will overwrite lists defined in parent projects, with the exception of
+          dependencies where the lists are accumulated.
+        </p>
+      </subsection>
+      <subsection name="Scripting Maven">
+        <p>
+          If the provided plugins do not give all the flexibility needed to do the required tasks, you can add scripting
+          to your project to go the last steps.
+        </p>
+        <p>
+          There are two ways to add additional goals and hooks to your project - through <code>maven.xml</code>, and by
+          writing your own plugin. It is generally recommended to write your own plugin for any significant scripting
+          effort as it will make it reusable across projects, separated, and allows you to use Java code as well as basic
+          Jelly script.
+        </p>
+        <p>
+          The <code>maven.xml</code> file is tied to the <code>project.xml</code> file in the same directory, in the
+          same way as <code>project.properties</code> is. This means that it is loaded and its goals processed whenever
+          your project is, and also means that it is inherited from any projects you extend.
+        </p>
+        <p>
+          The format of <code>maven.xml</code> is typically like this:
+        </p>
+        <source><![CDATA[<project default="jar:jar" xmlns:j="jelly:core">
+ ...
+</project>]]></source>
+        <p>
+          The <code>project</code> element is the root element, and can specify a default goal name for the project.
+          The namespace definitions are used by Jelly to import tag libraries.
+        </p>
+        <p>
+          Within this file, you can define new goals, or attach hooks to existing ones, write logic using Jelly tag
+          libraries, and use existing Ant tasks to add build behaviour.
+        </p>
+        <p>
+          For more information on scripting in general, please see the
+          <a href="../reference/scripting.html">Scripting</a> reference. For particular information on building plugins,
+          see <a href="developing-plugins.html">Developing Plugins</a> in this User's Guide.
+        </p>
+        <p>
+          As with properties, there are also some <a href="bestpractices.html#Scripting">best practices</a> to adhere
+          to with regards to scripting Maven to ensure the build is maintainable.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/developing-plugins.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/developing-plugins.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/developing-plugins.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,402 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Developing Plugins</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Developing Plugins">
+      <p>
+        Adding functionality to Maven is done through the Maven plugin
+        mechanism.  Maven comes shipped with <a href="http://maven.apache.org/maven-1.x/plugins/bundled/">numerous plugins</a>,
+        and there are several <a href="../plugins/3rdparty.html">3rd party plugins</a>.
+        Plugins can be used to do virtually any task desired.  For example, they
+        can generate reports, create and deploy software distributions,
+        run unit tests, and much more.  This section of the
+        document describes how to write your own plugin.
+      </p>
+      
+      <p>
+        A plugin can contain the following: 
+      </p>
+        <ul>
+          <li>A <code>project.xml</code> file to describe the plugin project (required);</li>
+          <li>A <code>plugin.jelly</code> file containing Jelly script for the plugin (required);</li>
+          <li>A <code>plugin.properties</code> file to define any property defaults (optional);</li>
+          <li>Plugin resources for adding to the classpath when the plugin is run (optional);</li>
+          <li>Java sources, which are accessed from the Jelly script (optional).</li>
+        </ul>
+
+      <subsection name="How to create your first plugin">
+        <p>
+          To start creating a plugin, you must first create a Maven project. This is
+          the same as creating any other project, for example one that builds a JAR.
+        </p>
+        <p>
+          In a new directory, create a <code>project.xml</code> file like so:
+        </p>
+        <source><![CDATA[<project> 
+  <pomVersion>3</pomVersion> 
+  <artifactId>hello-maven-plugin</artifactId> 
+  <groupId>hello</groupId> 
+  <name>Maven Hello World Plugin</name> 
+  <currentVersion>1.0</currentVersion> 
+
+  <!-- 
+    You might want to include additional information here
+    eg the developers, organisation, and dependencies
+  -->
+ 
+  <build> 
+    <!-- This is only required if you have Java code -->
+    <sourceDirectory>src/main/java</sourceDirectory> 
+    <!-- These are only required if you have unit tests for your Java code -->
+    <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory> 
+    <unitTest> 
+      <includes> 
+        <include>**/*Test.java</include> 
+      </includes> 
+    </unitTest> 
+ 
+    <!-- This section is compulsory -->
+    <resources> 
+      <resource> 
+        <directory>${basedir}/src/plugin-resources</directory> 
+        <targetPath>plugin-resources</targetPath> 
+      </resource> 
+      <resource> 
+        <directory>${basedir}</directory> 
+        <includes> 
+          <include>plugin.jelly</include> 
+          <include>plugin.properties</include> 
+          <include>project.properties</include> 
+          <include>project.xml</include> 
+        </includes> 
+      </resource> 
+    </resources> 
+  </build> 
+</project>]]></source>
+
+        <p>
+          With just that, you can actually create the plugin (though it will do nothing!)
+        </p>
+        <source>maven plugin</source>
+        <p>
+          This command will create a JAR <code>target/hello-maven-plugin-1.0.jar</code>, but it is not
+          installed yet. First, let's add some functionality.
+        </p>
+
+        <p>
+          Currently, all plugins must have a <code>plugin.jelly</code> file. This is a Jelly script, and
+          looks identical to a <code>maven.xml</code> file in an individual project. Here is a script with
+          a single, simple goal.
+        </p>
+
+        <source><![CDATA[<project xmlns:ant="jelly:ant"> 
+  <goal name="hello:hello" description="Say Hello"> 
+    <ant:echo>Hello from a Maven Plug-in</ant:echo> 
+  </goal> 
+</project>]]></source>
+        <p>
+          (For an explanation of what this means, please refer to <a href="customising.html">Customising 
+          Maven</a>, or the <a href="../reference/scripting.html">Scripting Reference</a>).
+        </p>
+
+        <p>
+          Now that you can run the following command to install this into Maven's home directory:
+        </p>
+        <source>maven plugin:install</source>
+
+        <p>
+          You can prove the goal exists by running:
+        </p>
+        <source>maven -P hello</source>
+
+        <p>
+          Finally, run the goal from the plugin:
+        </p>
+        <source>maven hello:hello</source>
+
+        <p>
+          As mentioned, you can do anything in this script that you can do in <code>maven.xml</code>.
+          For more information, please refer to <a href="../reference/scripting.html">Scripting in Maven</a>.
+        </p>
+      </subsection>
+
+      <subsection name="Using Plugin Properties">
+        <p>
+          While you can always reference the POM information in a Jelly script using <code>${pom.artifactId}</code>,
+          for example, a plugin will often need to create new properties so that it can be customised.
+        </p>
+        <p>
+          The creation of these properties simply involves creating a <code>plugin.properties</code> file.
+          <b>Note:</b> While plugins can also have a <code>project.properties</code> file, these do not specify
+          properties exposed by the plugin. Instead, this is used to control building the plugin itself, like for
+          any other project.
+        </p>
+        <p>
+          As an example, create a <code>plugin.properties</code> file in the same directory as
+          <code>plugin.jelly</code>:
+        </p>
+        <source>hello.greeting=Hi</source>
+        <p>
+          Edit the <code>plugin.jelly</code> file so that the <code>&lt;ant:echo&gt;</code> line reads:
+        </p>
+        <source><![CDATA[<ant:echo>${hello.greeting} from a Maven Plug-in</ant:echo>]]></source> 
+        <p>
+          Now, install the new plugin and run it (<b>note</b>, you do not need to run <code>maven plugin</code> first):
+        </p>
+        <source>maven plugin:install
+maven hello:hello</source>
+        <p>
+          Notice the the new greeting. Now, to customise it:
+        </p>
+        <source>maven -Dhello.greeting=Goodbye hello:hello</source>
+        <p>
+          This property will be read from a variety of different places: <code>project.properties</code> for the
+          current project, <code>build.properties</code> from your home directory, or a system property as above.
+          The order of precedence is given in the <a href="../reference/properties.html">Properties Reference</a>.
+        </p>
+      </subsection>
+
+      <subsection name="Using Plugin Resources">
+        <p>
+          You can use plugin resources to be able to load external files from inside a plugin.
+          Let's say you wanted to copy an image into every site. First, add a file called
+          <code>src/plugin-resources/hello-report.xml</code> to the source tree that looks like this:
+        </p>
+        <source><![CDATA[<document>
+  <body>
+    <section name="Hello">
+      <p>Hi!</p>
+    </section>
+  </body>
+</document>]]></source>
+        <p>
+          Next, you can create a new goal called <code>hello:report</code>
+          in <code>plugin.jelly</code>.
+        </p>
+        <source><![CDATA[...
+  <goal name="hello:report">
+    <ant:copy todir="${maven.gen.docs}" file="${plugin.resources}/hello-report.xml" />
+  </goal>
+...]]></source>
+        <p>
+          The plugin resources become most useful when you have templates for generate site reports
+          based on the project, which is discussed in the next section. This report goal will be used
+          to "generate" the Hello Report.
+        </p>
+      </subsection>
+
+      <subsection name="Plugin dependencies">
+        <p>
+          In maven 1.x, there are only two classloaders :
+        </p>
+        <ul>
+          <li>root : Where are loaded ant, commons-logging, log4j.</li>
+          <li>root.maven (child of root) : Where are loaded (by default) all others dependencies needed by maven, its plugins and the user project.</li>
+        </ul>
+        <p>
+          This design can create 2 problems when you write your own plugin :
+        </p>
+        <ol>
+          <li>You won't be able to use your own version of a dependency. If this one is already loaded by maven or one of its plugins in a different version you'll automatically use it. To avoid having this sort of problem, you are invited to use in priority the libraries versions already used <a href="../dependencies.html">by maven</a> or <a href="http://maven.apache.org/maven-1.x/plugins/bundled/dependency-convergence-report.html">by the bundled plugins</a>.</li>
+          <li>
+            <p>
+              If you try to use an Ant task which requires another dependency, the ant task doesn't find it even though you defined it correctly in your plugin's pom. This due to the fact that ant is loaded in the classloader "root" and your dependencies are visible in the classloader "root.maven". To solves this, you must specify to maven to load this dependency in the root classloader with :
+            </p>
+          <source><![CDATA[<dependency>
+  <properties>
+    <classloader>root</classloader>
+  </properties>
+</dependency>]]></source>
+          </li>
+        </ol>
+      </subsection>
+    
+      <subsection name="Providing Reports in a Plugin">
+        <p>
+          Plugins are often used to provide one or more reports using a certain tool based on the
+          information in a project. The standard reports are shown under "Project Reports" in the
+          web site of any Maven project that has not disabled them. For example, the Unit Test Report
+          shows which unit tests have passed and failed.
+        </p>
+        <p>
+          While any goal can perform a task, and transform the results into the web site, there are
+          special steps to take to signify a report can be generated so that it can be listed on the
+          web site, and enabled via the <code>&lt;reports&gt;</code> section in the POM.
+        </p>
+        <p>
+          For information on how to actually generate the report, it is easiest to refer to the Jelly
+          source code of a report that is similar to what you want. The end result should be to create
+          an <a href="../reference/glossary.html#XDoc">XDoc</a> file in the directory specified by
+          <code>${maven.gen.docs}</code>.
+        </p>
+        <p>
+          To register a report withing your project, you should define three goals (using hello as the example):
+        </p>
+          <ul>
+            <li><code>hello:report</code> - generates the report content. This was the goal we created in the
+            previous section.</li>
+            <li><code>hello:register</code> - registers the report with Maven for inclusion on the site</li>
+            <li><code>hello:deregister</code> - disables the report so that a project can override a previous
+            enabling command</li>
+          </ul>
+        <p>
+          Registering a report is done as follows:
+        </p>
+        <source><![CDATA[<goal name="hello:register">
+  <doc:registerReport 
+    pluginName="hello"
+    name="Hello"
+    link="hello-report"
+    description="Greeting report." />
+</goal>]]></source>
+        <p>
+          This introduces the <code>doc</code> tag library, so the following change must be made to the project
+          declaration:
+        </p>
+        <source><![CDATA[<project xmlns:ant="jelly:ant" xmlns:doc="doc">]]></source>
+        <p>
+          The parameters to the <code>registerReport</code> tag are:
+        </p>
+          <table>
+            <tr>
+              <td width="20%">pluginName</td>
+              <td width="80%">
+                This is the start of the goal name to run, and represents this plugin.
+                The report goal run will be <code>${pluginName}:report</code>.
+              </td>
+            </tr>
+            <tr>
+              <td>name</td>
+              <td>
+                The name of the report, which will be used to list in the report in the navigation bar
+                of the web site.
+              </td>
+            </tr>
+            <tr>
+              <td>link</td>
+              <td>
+                This is a relative link to the final output of the plugin, with the extension omitted.
+                When generating, the link should be relative to <code>maven.gen.docs</code>, so that it will
+                end up as relative to <code>maven.docs.dest</code>. eg <code>${maven.gen.docs}/hello-report.xml</code>
+                and <code>${maven.docs.dest}/hello-report.html</code>.
+              </td>
+            </tr>
+            <tr>
+              <td>description</td>
+              <td>
+                This should be a one line description of the output
+                produced by your plugin. It is included on the
+                auto-generated <code>maven-reports.xml</code> overview
+                document.
+              </td>
+            </tr>
+            <tr>
+              <td>target</td>
+              <td>
+                This should be a target for the html link generated.
+                This parameter is often used to open the report page in a new window 
+                of the browser (<code>target="_blank"</code>).
+              </td>
+            </tr>
+          </table>
+        <p>
+          A plugin may specify more than one report.  It is entirely
+          possible to register additional reports as shown below (taken
+          from the JavaDoc plugin included with Maven):
+        </p>
+        <source><![CDATA[<goal name="maven-javadoc-plugin:register">
+  <j:if test="${sourcesPresent == 'true'}">
+    <doc:registerReport 
+      name="JavaDocs" 
+      link="apidocs/index"
+      target="_blank"
+      description="JavaDoc API documentation."/>
+    <doc:registerReport 
+      name="JavaDoc Report" 
+      link="javadoc"
+      description="Report on the generation of JavaDoc."/>
+  </j:if>
+</goal>]]></source>
+        <p>
+          Notice that the above plugin does not register its reports if the project does not have any sources.
+          It is encouraged that plugin developers use conditional logic
+          to prevent their reports from registering if they don't apply
+          to the user's project.
+        </p>
+        <p>
+          The final goal is the deregistration goal.
+          This goal is optional, but should be included to allow users to force its
+          removal from their site.  
+        </p>
+        <p>
+          The <code>name</code> parameter should correspond to the original registration <code>name</code> parameter. 
+        </p>
+        <source><![CDATA[<goal name="hello:deregister">
+  <doc:deregisterReport name="Hello"/>
+</goal>]]></source>
+        <p>
+          The final step is to add the report to your project to use it, using what was specified as
+          <code>pluginName</code> when registering the report:
+        </p>
+        <source><![CDATA[<reports>
+  <report>hello</report>
+</reports>]]></source>
+        <p>
+          You can add this to any project, but for now we'll just reuse the same plugin project to test the plugin on.
+          Add the above section to the <code>project.xml</code> you've created, then run:
+        </p>
+        <source>maven site</source>
+        <p>
+          Notice the final result of a <code>target/docs/hello-report.html</code> file. You can view this in your
+          browser. When doing so, you'll also see the "Hello" item under the "Project Reports" menu in the navigation.
+        </p>
+      </subsection>
+      <!-- TODO [later]: talk about how to write in Java and include via Jellybean Tag -->
+    </section>
+
+    <section name="Sharing Your Plugin">
+      <p>
+        Please see <a href="../reference/sharing-plugins.html">Sharing Your Plugin</a> for guidelines on how to 
+        share your Maven plugins with the community.
+      </p>
+    </section>
+
+    <section name="Getting More Information">
+      <p>
+        A good source of information is the source code for existing plugins. 
+        You can find the expanded plugin sources in <code>~/.maven/cache</code>.
+      </p>
+      <p>
+        For more information on scripting, refer to the 
+        <a href="../reference/scripting.html">Scripting Reference</a>.
+      </p>
+    </section>
+    
+ </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/index.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/index.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Using Maven</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Using Maven">
+      <p>
+        This guide will describe how to work with Maven to build different types of projects.
+        If you haven't already, it is recommended that you first read the "Getting Started" documents found in the
+        navigation of this site for an introduction to working with Maven.
+      </p>
+      <ul>
+        <li><a href="jar.html">Building JARs</a> - How to build an individual library</li>
+        <li><a href="resources.html">Resources</a> - Adding more files to the generated library</li>
+        <li><a href="tests.html">Unit Testing</a> - Running unit tests</li>
+        <li><a href="site.html">Creating a Site</a> - Adding to the project web site</li>
+        <li><a href="scm.html">Source Control</a> - Working with SCMs</li>
+        <li><a href="releasing.html">Making Releases</a> - How to cut a release</li>
+        <li><a href="war.html">Web Applications</a> - Working with web applications</li>
+        <li><a href="multiproject.html">Multiple Modules</a> - Building multiple libraries and applications together</li>
+        <li><a href="managing-dependencies.html">Handling Dependencies</a> - Managing the dependencies of your build</li>
+        <li><a href="migrating.html">Migrating from Ant</a> - Where to start if you already have <code>build.xml</code></li>
+        <li><a href="bestpractices.html">Best Practices</a> - Why Maven encourages what it does, and how to take advantage of it</li>
+        <li><a href="../reference/ide/index.html">IDE Integration</a> - How to use Maven with your IDE</li>
+      </ul>
+    </section>
+    <section name="Further Reading">
+      <p>
+        Further topics in the User's Guide include:
+      </p>
+      <ul>
+        <li><a href="customising.html">Customising Maven</a> - how to change behaviour, add scripting and create
+          your own plugins</li>
+        <li><a href="repositories.html">Repositories</a> - how to manage your own artifact repository</li>
+        <li>
+          <a href="../reference/index.html">Reference</a> - some quick reference documents,
+          in particular Maven <a href="../reference/conventions.html">Conventions</a> and a
+          <a href="../reference/command-line.html">Command Line Reference</a>.
+        </li>
+        <li><a href="../plugins/index.html">Plugins</a> - describes the various plugins available for Maven 1</li>
+        <li><a href="../contributing/help.html">Contributing</a> - what to do if you want to help us make Maven even better!</li>
+      </ul>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/jar.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/jar.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/jar.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Building JARs</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Building JARs">
+      <p>
+        Building a JAR with Maven is one of the simplest uses, and it is the default project that Maven
+        will build.
+      </p>
+      <p>
+        For a basic build example, you can see the <a href="../start/ten-minute-test.html">Getting Started Guide</a>.
+        This goes through the steps of setting up a simple Java project and building a JAR.
+      </p>
+      <p>
+        What will happen is that the Java code will be compiled (as specified by the source directory you've given),
+        resources copied into the root location for the JAR (also given in the project descriptor), the tests run,
+        and a JAR bundled up.
+      </p>
+      <p>
+        To add additional files, such as a manifest - you can add more resources, and they will be copied into the root
+        of the JAR with directories intact.
+      </p>
+      <p>
+        If you would like to customise the existing manifest, there are several properties that can be set. For example,
+        <code>maven.jar.mainclass=com.mycompany.Main</code> will set the <code>Main-Class</code> attribute.
+      </p>
+      <p>
+        Everything you do with Java in Maven will build from this foundation. The following sections will describe
+        resources, tests, and other functionality that is available to build files other than JARs.
+      </p>
+      <p>
+        For more information on the specifics of the JAR, please consult the
+        <a href="http://maven.apache.org/maven-1.x/plugins/jar/index.html">JAR plugin documentation</a>. Goals in Maven will have their
+        documentation listed under their respective plugins in that documentation reference.
+      </p>
+      <p>
+        To continue to the next topic, see <a href="resources.html">Working with Resources</a>.
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/managing-dependencies.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/managing-dependencies.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/managing-dependencies.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,181 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Handling Dependencies</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Handling Dependencies">
+      <p>
+        One benefit of Maven is that it can make you much more aware of dependencies your project has on other libraries.
+        This outlines some ways to keep track of your dependencies, and to keep them in sync.
+        This is particularly the case in a multiproject scenario.
+      </p>
+      <subsection name="Overriding Stated Dependencies">
+        <p>
+          You may find it convenient, or necessary, at times to override the
+          dependencies stated in a given POM. You may wish to use JAR artifacts
+          somewhere in the filesystem or you may wish simply to override the stated
+          version of a given JAR artifact. For this Maven provides
+          an easy way for you to select which artifacts you want to use for
+          building.
+        </p>
+
+        <p>
+          In order to use the JAR override feature, you must set the
+          <code>maven.jar.override</code> property to
+          <code>on</code>. Once this property is
+          set you can specify JAR override directives in any of the properties
+          files that Maven processes.
+        </p>
+
+        <p>
+          There are two type of JAR override directives. The first form allows
+          you to specify a specific JAR artifact path for a given artifactId; the
+          second allows you to specify a specific version of a JAR artifact that
+          exists in your local repository. The two forms are as follows:
+        </p>
+
+        <source><![CDATA[maven.jar.artifactId = [path]
+maven.jar.artifactId = [version]]]></source>
+
+        <p>
+          Below is an example of what a properties file might look like that
+          contains JAR override directives:
+        </p>
+
+        <source><![CDATA[maven.jar.override = on
+
+# Jars set explicity by path.
+maven.jar.a = ${basedir}/lib/a.jar
+maven.jar.b = ${basedir}/lib/b.jar
+
+# Jars set explicity by version.
+maven.jar.classworlds = 1.0-beta-1]]></source>
+      </subsection>
+
+      <subsection name="Version Consistency">
+        <p>
+          The version override is of particular assistance when you are attempting to maintain a consistent version across
+          different subprojects, and is a much better alternative to using entities or property interpolation.
+        </p>
+        <p>
+          The situation is that you have a number of subprojects using similar, but not identical dependencies - but that
+          when a particular dependency is used you want to ensure the version is consistent.
+        </p>
+        <p>
+          You can use inheritence to set up the structure, but can't put the dependency in the parent POM as all subprojects
+          will inherit that particular dependency whether they want it or not.
+        </p>
+        <p>
+          The best way to implement it is to put the dependency in each subproject as required, but put the <i>version
+          override</i> in the parent POM. Wherever the dependency appears, that version will be used, but the dependency
+          will not be used unless it is actually declared.
+        </p>
+      </subsection>
+
+      <subsection name="Using SNAPSHOT Dependencies">
+        <p>
+          In Maven versions containing the keyword <code>SNAPSHOT</code> are considered special.
+          They approximate the latest development build of a project that has been deployed to the repository.
+          If a project that you depend on is changing frequently you can state
+          in your POM that you wish to try and keep up with that project by declaring
+          it a SNAPSHOT dependency. So, for example, you may be trying to stay abreast
+          of changes in
+          <a href="http://jakarta.apache.org/commons/jelly/">Jelly</a> so
+          you might put the following in your POM:
+        </p>
+        <source><![CDATA[<dependency>
+  <groupId>commons-jelly</groupId>
+  <artifactId>commons-jelly</artifactId>
+  <version>SNAPSHOT</version>
+</dependency>]]></source>
+
+        <p>
+          Assuming that project is publishing a version called <code>SNAPSHOT</code> (which happens when the
+          <code>jar:deploy-snapshot</code> goal is called), then each time you build, Maven will check the remote
+          repository for changes in that JAR and download it again if a newer <code>SNAPSHOT</code> is available.
+        </p>
+
+        <p>
+          <b>Note:</b> It seems to be a common misconception that Maven would
+          replace <code>SNAPSHOT</code> by the most current version of a project
+          that is available in the repository. This is not the case: using a
+          <code>SNAPSHOT</code> dependency requires that the project that you
+          depend on has actually published a <code>SNAPSHOT</code>,
+          and only this <code>SNAPSHOT</code> will get updated automatically.
+        </p>
+
+        <p>
+          If you are working offline Maven will warn you that your SNAPSHOT dependencies may be out of date. This is
+          just a warning, and as the remote copy often does not change frequently it can be ignored.
+        </p>
+
+        <p>
+          <b>Note:</b> the version need only contain the word <code>SNAPSHOT</code> - it does not need to equal it
+          exactly. It is traditional to append it to a version to indicate "development towards version X". For example,
+          <code>1.2-SNAPSHOT</code> is the development version between 1.1 and 1.2.
+        </p>
+      </subsection>
+
+      <subsection name="Plugin Dependencies">
+        <p>
+          It is a little known feature that you can include a dependency
+          on a specific version of a plugin in your <code>project.xml</code>,
+          for example:
+        </p>
+        <source>&lt;dependency&gt;
+  &lt;groupId&gt;codeczar-tomcat&lt;/group&gt;
+  &lt;artifactId&gt;maven-tomcat-plugin&lt;/artifactId&gt;
+  &lt;type&gt;plugin&lt;/type&gt;
+  &lt;version&gt;1.1&lt;/version&gt;
+&lt;/dependency&gt;</source>
+        <p>
+          This causes the plugin to be installed into the local repo, and expanded into the cache,
+          but it will not be installed into the maven plugins directory. In other words, your project will
+          use that particular version of the plugin on the fly, without messing up your Maven installation.
+          You may also force other developers to use the same version of the plugin, even if they
+          have a different version of the same plugin installed.
+        </p>
+      </subsection>
+
+      <subsection name="Keeping Track of Dependencies">
+        <p>
+          Maven provides two site reports that can assist in keeping track of dependencies.
+        </p>
+        <p>
+          The standard dependency report included in the "Project Info" section of every site lists out the information
+          for each dependency in the project, including those inherited. This is mostly useful to new users of your
+          application or library that wish to see what additional dependencies they will require to use it.
+        </p>
+        <p>
+          The other report is given by the multiproject plugin, and is called the <i>Dependency Convergence Report</i>.
+          This report will look for matching dependencies with different versions in your multiproject set up, so that
+          you can synchronize those using different versions. The section above on <a href="#Version_Consistency">Version
+          Consistency</a> can help automate this.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/using/managing-dependencies.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/migrating.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/migrating.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/migrating.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,314 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Migrating from Ant</title>
+    <author email="maven at walding.com">Ben Walding</author>
+    <author email="dion at apache.org">dIon Gillard</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Migrating from Ant">
+      <p>
+        A common question is how to migrate an existing Ant build to Maven.
+        The first section of this guide will help in some small ways to
+        do that. It will not touch on the reasons for using Maven over Ant, or whether Maven or Ant is better for your
+        project - these issues are discussed below in <a href="#Maven_for_Ant_Users">Maven for Ant Users</a>.
+      </p>
+      <p>
+        If you are looking for some tips on how to do certain things you may
+        have been doing in Ant, see the relevant section of the <a href="../faq.html#Ant">FAQ</a>.
+      </p>
+      <subsection name="Getting Started - Creating a Project Descriptor">
+        <p>
+          Sometimes people want to get their feet wet with Maven by using it to do the standard things, but to use their
+          existing Ant build that is working fine for complex tasks. This is possible.
+        </p>
+        <p>
+          To do anything with Maven, you will still need to set up a
+          <a href="../reference/project-descriptor.html">project file</a> with the information you need to do
+          the Maven tasks you are using.
+        </p>
+        <p>
+          Even when you are already using Ant, this project file can be set up like any other new project. For a
+          tutorial on doing so, see the <a href="../start/ten-minute-test.html">Getting Started</a> guide to creating a
+          project.
+        </p>
+      </subsection>
+      <subsection name="Using Existing Libraries">
+        <p>
+          Often, an Ant project will look for dependent libraries to add to the classpath in a known location on the
+          filysystem (often a subdirectory of the build checked out of source control along with the source code).
+          In some cases, the <code>&lt;get/&gt;</code> task is used to retrieve them remotely.
+        </p>
+        <p>
+          It is recommended that you establish repositories and let Maven take care of this. If the dependencies are
+          not in the Maven central repository, set up an <a href="../reference/internal-repositories.html">internal
+          repository</a>. Publish your resulting artifacts to that repository also.
+        </p>
+        <p>
+          However, if there is a necessity to maintain the file based approach, or you wish to start with that to keep
+          the number of changes down, you can use JAR overrides to have Maven look for dependencies on the file system.
+          For more information, see <a href="managing-dependencies.html#Overriding_Stated_Dependencies">Handling
+          Dependencies</a>.
+        </p>
+      </subsection>
+      <subsection name="Calling Ant Scripts from Maven">
+        <p>
+          In the same directory as this
+          <code>project.xml</code> file (and probably in the same place as your ant build)
+          you should create a
+          <code>maven.xml</code> file like so:
+        </p>
+        <source><![CDATA[<project xmlns:ant="jelly:ant">
+  <goal name="do-ant-bit">
+    <ant:ant dir="${basedir}" antfile="build.xml" />
+  </goal>
+</project>]]></source>
+        <p>
+          You could then run
+          <code>maven do-ant-bit</code> to run the old ant script. Ok, so this isn't that useful yet,
+          but it can be used in conjunction with hooks to start merging an old Ant and new Maven build.
+        </p>
+        <p>
+          For example, consider you are now building your site with Maven. However you have an old part of your Ant build
+          that generated a few HTML pages that you want copied with the site. Here is a possible solution.
+        </p>
+        <source><![CDATA[
+<project xmlns:ant="jelly:ant">
+  <preGoal name="site">
+    <!-- Set the property html.dir that your Ant build uses to put the HTML into -->
+    <ant:property name="html.dir" value="${maven.docs.dest}" />
+    <ant:ant dir="${basedir}" antfile="build.xml" target="generate-html" />
+  </preGoal>
+</project>]]></source>
+      </subsection>
+      <subsection name="Building on your Maven Project">
+        <p>
+          Once these fundamentals are in place, the next steps of integration would be to start importing small
+          Ant fragments from your existing build into your <code>maven.xml</code>, or for larger tasks make them
+          reusable and create a Maven plugin that will be available to all your projects.
+        </p>
+        <p>
+          Some tasks may already have a complete equivalent in Maven (eg, creating a JAR), so you can remove that
+          section from the ant script altogether.
+        </p>
+        <p>
+          The easiest way to use the Maven features while still executing the existing build at the appropriate time
+          is to use goal hooks like the one given in the previous section. For more information on these, see
+          <a href="../reference/scripting.html#Customising_Goals">Customising Goals</a> in the Scripting Reference.
+        </p>
+        <p>
+          After this, your build will continue to grow like any other Maven build would. For information on how to
+          do this, see <a href="customising.html">Customising Maven</a> and the
+          <a href="../reference/scripting.html">Scripting Reference</a>, as well as other sections in this User's
+          Guide.
+        </p>
+      </subsection>
+    </section>
+    <section name="Maven for Ant Users">
+      <p>
+        This section is intended to answer the commons questions of someone
+        that is familiar with Ant, and wants to learn what the equivalent
+        concepts and the differences in Maven are, and where each product excels.
+      </p>
+      <p>
+        While there is a strong slant towards Maven, this is NOT a guide designed
+        to bash Ant, a remarkable and fine product. This guide IS for helping
+        an Ant user understand the remarkable and powerful capabilities within
+        Maven.
+      </p>
+    </section>
+    <section name="Different Objectives">
+      <p>
+        It is important to realise that Maven and Ant have different objectives. For clarification, 
+        it is worth reading <a href="../about/whatismaven.html">What is Maven?</a>
+        to learn what Maven is, and what Maven is not.
+      </p>
+      <p>
+        You may have heard that Maven is just Ant plus dependencies, or a set of reusable Ant scripted
+        plugins. But in fact, the aims of the two products are quite different.
+        There are other solutions that bring reusable fragments and dependencies to Ant 1.6 - but
+        these do not make Maven redundant because, aside from the many other features Maven also has,
+        it actually takes a different approach.
+      </p>
+      <subsection name="Build Knowledge">
+        <p>
+          One of the fundamental differences between Ant and Maven is in
+          whose responsibility it is to understand the build process and the
+          tools used therein.
+        </p>
+        <p>
+          With Ant, it's the developer who must understand what the tool is
+          and how it applies to their development. With Maven, build process 
+          knowledge is captured in <code>plugins</code>, small snippets of
+          processing that rely on you providing some information.
+        </p>
+        <p>
+          For example, to compile your java code using Ant, you must first
+          write a <code>build.xml</code> file which uses Ant's
+          <a href="http://ant.apache.org/manual/CoreTasks/javac.html">javac</a>
+          task, passing that task the correct set of parameters.
+        </p>
+        <source><![CDATA[...
+<!-- compile Java source files -->
+<target name="compile">
+  <javac srcdir="./src;./test" destdir="./bin" debug="on" optimize="off">
+    <classpath>
+      <fileset dir="lib" includes="*.jar"/>
+    </classpath>
+  </javac>
+</target>
+...]]></source>
+        <p>
+          You'd then call this <code>build.xml</code> file using ant from the command prompt:
+        </p>
+        <source>ant compile</source>
+        <p>
+          This isn't too hard to do, and as you move from project to project you
+          become better at this, and understand Ant better, learning what each
+          of the options are for and what the best way to write these snippets is.
+        </p>
+        <p>
+          Maven, however, takes a far more declarative approach. You must
+          provide Maven with some information about your project (in a file called
+          <code>project.xml</code>), one piece of which is your source directory 
+          that stores your java code.
+        </p>
+        <source><![CDATA[...
+<build>
+  <sourceDirectory>src/java</sourceDirectory>
+...]]></source>
+        <p>
+          To compile your code, you just need to specify that you have a
+          source directory and then ask Maven to compile using:
+        </p>
+        <source>maven java:compile</source>
+        <p>
+          There's no need for the developer to understand how to write a plugin
+          to use one. And several plugins can share the same information. For example
+          the plugin that checks that source code conforms to a coding standard uses
+          the same <code>sourceDirectory</code> as the plugin that compiles code.
+        </p>
+        <p>
+          This abstraction also ensures consistency. No matter what project you are
+          building, <code>java:compile</code> will compile the source code, the
+          source code is easy to find, and the output is always in the same place
+          (<code>target/classes</code>).
+        </p>
+      </subsection>
+      <subsection name="Best Practices">
+        <p>
+          Another key difference in philosophy is that of best practices. Ant is a very flexible
+          tool - because you can break your build down into targets, which is further composed of
+          discrete tasks you can combine them in many ways to build your project.
+        </p>
+        <p>
+          While Maven still allows this flexibility, because it is built around a standard set
+          of functionality and uses metadata with sensible defaults to the describe a project, it
+          attempts to enforce the use of best practices in composing the project's build.
+          These best practices have been built up from the collective experience within the
+          community.
+        </p>
+        <p>
+          Some examples of what Maven does in this regard are:
+        </p>
+          <ul>
+            <li>Standard locations for source files, documentation, and output</li>
+            <li>A common layout for project documentation to make finding information easier</li>
+            <li>Retrieves project dependencies from a shared storage area, instead of keeping multiple copies of a JAR in CVS</li>
+            <li>Encourages the use of a single source directory, but a separate unit test source directory</li>
+          </ul>
+      </subsection>
+      <subsection name="More than the Build - Project Knowledge">
+        <p>
+          Maven also aims to go beyond the building of a project from sources, and encapsulte all of the project
+          knowledge in one area. This includes the source code and the documentation, but also includes reports
+          and statistics on the code and the processes surrounding management of the code.
+        </p>
+        <p>
+          Maven not only handles building the code, but can handle the release process, integrating closely with source
+          control to get a clean copy to build before releasing a new version that is also deployed for others to use.
+        </p>
+        <p>
+          Maven is able to integrate with a large number of different products such as issue tracking, source
+          control systems, reporting systems, application servers and software development kits. While
+          Ant also has (and provides) much of this integration, Maven continues to use its declarative style of
+          set up that means there is less and sometimes no work to set up these new integrations.
+        </p>
+      </subsection>
+    </section>
+    <section name="Terminology">
+      <p>
+        This section covers what different components are called in each of Maven and Ant.
+      </p>
+      <subsection name="Project">
+        <p>
+          In Ant a <i>project</i> is what you define in your <code>build.xml</code> file.
+          This project is a collection of <i>targets</i>, which are composed
+          of <i>tasks</i>.
+        </p>
+        <p>
+          In Maven a project is what you define in your <code>project.xml</code> file.
+          It's a collection of information about the development effort that Maven
+          uses to produce an artifact such as a JAR or WAR. Only a single artifact is
+          built in a project: if you have multiple components to a project you build them
+          together as a set.
+        </p>
+      </subsection>
+      <subsection name="Target">
+        <p>
+          A <i>target</i> is the unit of execution for Ant. When you execute Ant,
+          you provide a list of targets to run, e.g.
+        </p>
+        <source>ant clean compile</source>
+        <p>
+          This executes the <code>clean</code> target followed by the <code>compile</code>
+          target that you have coded in your <code>build.xml</code> file.
+        </p>
+        <p>
+          In Maven, the <i>goal</i> is the equivalent of a target, e.g.
+        </p>
+        <source>maven clean java:compile</source>
+        <p>
+          This executes the <code>clean</code> goal of the <code>clean</code> plugin,
+          followed by the <code>java:compile</code> goal of the <code>java</code>
+          plugin.
+        </p>
+        <p>
+          Maven goals can be pre-defined in plugins as above, or you can define your own in a <code>maven.xml</code>
+          file. In Maven 1.x, goals are written in <a href="http://jakarta.apache.org/commons/jelly/">Jelly</a>,
+          and can utilise any Ant tags from the version of Ant provided with Maven.
+        </p>
+      </subsection>
+      <subsection name="Build file">
+        <p>
+          When writing your own code in Ant, you place the targets in the <code>build.xml</code> file.
+        </p>
+        <p>
+          When writing your own code in Maven, you place the <code>goal</code>s in the <code>maven.xml</code> file.
+          However, if you are only using standard Maven goals, you may not even need a <code>maven.xml</code> file.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/multiproject.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/multiproject.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/multiproject.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,152 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<document>
+  <properties>
+    <title>Multiple Modules</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Multiple Modules">
+      <p>
+        Maven supports the notion of a product with multiple modules. While each <code>project.xml</code> is a discreet
+        unit of work, they can be gathered together using the reactor to build simultaneously. The reactor was
+        originally created to encourage the creation, or refactoring, of projects into smaller,
+        discrete, more coherent units.
+      </p>
+      <p>
+        The reactor determines the correct build order from the dependencies stated
+        by each project in their respective project descriptors, and will then execute a stated set of goals. It can
+        be used for both building projects and other goals, such as site generation.
+      </p>
+      <p>
+        While the reactor requires you to write some Jelly script to interface with it, there is also a friendly
+        wrapper plugin called <code>multiproject</code> that can allow you to control the setup with simple properties.
+      </p>
+      <subsection name="Using the Multiproject Plugin">
+        <p>
+          Using the plugin is quite simple. The default set up assumes that you are in the top level directory of your
+          build, and that and subdirectories that contain a <code>project.xml</code> file are subprojects to build.
+        </p>
+        <p>
+          To change this behaviour, set the <code>maven.multiproject.includes</code> and
+          <code>maven.multiproject.excludes</code> properties appropriately, for example:
+        </p>
+        <source>
+# Foo is broken, don't build it
+maven.multiproject.excludes=foo/project.xml</source>
+        <p>
+          All of the artifact based goals have a multiproject equivalent:
+        </p>
+        <table>
+          <tr>
+            <td width="30%"><code>multiproject:install</code></td>
+            <td width="70%">Build and install all projects into the local repository</td>
+          </tr>
+          <tr>
+            <td><code>multiproject:install-snapshot</code></td>
+            <td>Build and install a timestamped build of all projects into the local repository</td>
+          </tr>
+          <tr>
+            <td><code>multiproject:deploy</code></td>
+            <td>Build and install all projects, deploying to the remote repository</td>
+          </tr>
+          <tr>
+            <td><code>multiproject:deploy-snapshot</code></td>
+            <td>Build and install a timestamped build of all projects, deploying to the remote repository</td>
+          </tr>
+        </table>
+        <p>
+          For the plugin to determine how to build each project, you must define a property for each project that
+          requires it:
+        </p>
+        <source>maven.multiproject.type=war</source>
+        <p>
+          The default type is <code>jar</code>.
+        </p>
+        <p>
+          Note that the original purpose of the Multiproject plugin was to assist in aggregating the web site of
+          subprojects, and so this comprises a large amount of the plugin's functionality. Simply by running:
+        </p>
+        <source>maven multiproject:site</source>
+        <p>
+          This goal will build the sites of all subprojects, including the top level that it was run from and will
+          build an appropriate navigation to access each of the subprojects, and an overview listing the subprojects.
+        </p>
+        <p>
+          The behaviour of this goal and all others can be easily customised. For more information, see the
+          <a href="http://maven.apache.org/maven-1.x/plugins/multiproject/">Multiproject plugin reference</a>.
+        </p>
+        <p>
+          Finally, you may wish to run some other goal(s) over the set of projects. To do this, run the following goal:
+        </p>
+        <source>maven multiproject:goal -Dgoal=goal1,goal2</source>
+      </subsection>
+      <subsection name="Using the Reactor">
+        <p>
+          While the Multiproject plugin covers most common use cases in a convenient manner, in some instances it is
+          necessary to access the reactor directly to execute multiple projects.
+        </p>
+        <p>
+          The normal use of the reactor tag is as follows:
+        </p>
+        <source><![CDATA[<maven:reactor
+  includes="**/project.xml"
+  excludes=""
+  banner="Building"
+  goals="goal1, goal2"
+  ignoreFailures="false"
+/>]]></source>
+        <p>
+          This will loop through every <code>project.xml</code> file found in the current tree, in the order defined
+          by the dependencies they have on each other. The goals listed will be executed on each project in sequence.
+        </p>
+        <p>
+          The reactor tag is described in the <a href="../tags.html">Maven Jelly Tag Library</a>
+          reference.
+        </p>
+      </subsection>
+      <subsection name="Processing Projects after the Reactor">
+        <p>
+          In some instances, you will want to work with the projects that the reactor did in your own script afterwards.
+          To do this, you can utilise the <code>${reactorProjects}</code> variable set in the Jelly context after each
+          reactor execution. This is a list, and so can be iterated. Each variable in the list will be a project object,
+          and can be used in the same way as <code>${pom}</code> would normally be used.
+        </p>
+        <p>
+          If you'd like to gather a list of subprojects without executing any goals on them, this can be done by using
+          the <code>collectOnly</code> attribute of the <code>maven:reactor</code> tag.
+        </p>
+        <p>
+          In some cases, you may wish to process a whole set of projects, and handle the failed projects differently.
+          This requires that you set the <code>ignoreFailures</code> attribute to <code>true</code> in the
+          <code>maven:reactor</code> tag. After all the projects have finished processing, the context variable
+          <code>${failedProjects}</code> will be available to iterate through and projects that failed to build
+          completely.
+        </p>
+        <p>
+          If <code>ignoreFailures</code> is not set, it defaults to <code>false</code> and the entire build will end
+          when one project fails to build.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/releasing.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/releasing.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/releasing.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,181 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Making Releases</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Making Releases">
+      <p>
+        Maven can simplify several areas of the release process for software but it is not a substitute for
+        planning. Think about the process before starting any release.  
+      </p>
+      <subsection name="Determine Format">
+        <p>
+        Firstly, you must decide what form your distribution will take. For example:
+        </p>
+        <ul>
+          <li>Standalone library artifact</li>
+          <li>Binary and source distributions</li>
+          <li>Installer</li>
+        </ul>
+        <p>
+        Once you have decided: it's time to set up maven.
+        </p>
+        <p>
+        If you plan to distribute your normal artifact as is then use the existing deployment goals. See
+        <a href="../reference/internal-repositories.html#Deploying_to_the_Internal_Repository">
+        Deploying to the Internal Repository</a> for discussions about distributing raw artifacts.
+        Public releases (of course) require deployment to a public repository. 
+        If your usual internal repository is private (and you want to use maven to upload the artifacts) 
+        then some changes to your project's properties may be needed for the release.
+        </p>
+        <p>
+          Distributions as binary and source archives are supported by the
+          <a href="http://maven.apache.org/maven-1.x/plugins/dist/">distribution plugin</a>.
+          For installers, currently, Maven only supports the NSIS installer on Windows.
+          See the
+          <a href="http://maven.apache.org/maven-1.x/plugins/nsis/">NSIS plugin</a> for information.
+          In both cases, some configuration will be necessary. You may have to add extra scripting to get the
+          release just as you want it.
+        </p>
+        <p>
+        It may take a little effort to create and test release generation but it only needs to be done once.
+        Maven will then be able to reliable generate all future releases in this format.
+        </p>
+      </subsection>
+      <subsection name="Check Dependencies">
+        <p>
+          A key step towards making a release in Maven is to verify that your build is going to be reproducible (see
+          <a href="bestpractices.html#Reproduciblity">Best Practices</a> for more).
+        </p>
+        <p>
+        You should check the dependencies of the project you will be releasing. Ensure that all dependencies on
+        snapshots or other non-final releases are resolved to proper releases. 
+        Then test that the software runs correct against them. 
+        </p>
+        <p>
+        Releasing against a development dependency may lead to problems later. 
+        Not only may this cause future compatibility problems for your users but if you remain pointing to a development
+        dependency that is later overwritten, attempting to rebuild your
+        release may lead to at best a different result, at worst a failure to build.
+        </p>
+        <p>
+        If there is no release of the software, but you know the current development build to be stable, as a last
+        resort you should internally release that library (using the current time as a version, or similar).
+        At least then your software has a concrete dependency that should not be overwritten.
+        </p>
+        <p>
+          Future Maven release tools will help to identify the existence of such snapshots and help to resolve them,
+          in particular where they are your own and you are simultaneously releasing a set of projects.
+        </p>
+      </subsection>
+      <subsection name="Utilise Source Control">
+        <p>
+        If you are using a source control system, the release should be cleanly built from a tag
+        (so that the release codebase is clearly known). So, the SCM needs to be tagged before the release is cut.     
+        Maven can provide assistance with this.
+        </p>
+        <p>
+          Currently, the only automated release mechanism in Maven for cutting releases is provided by the SCM plugin.
+          Please refer to the documentation on
+          <a href="http://maven.apache.org/maven-1.x/plugins/scm/releasing.html">Making Releases from SCM</a>.
+        </p>
+        <p>
+          The SCM plugin cuts a release in two steps:
+        </p>
+        <ol>
+          <li>preparation - where the descriptors are updated, committed and the code is tagged</li>
+          <li>performing - where the code is checked out from the SCM cleanly and built from scratch, then released
+            using the distribution goals you selected in the first section.</li>
+        </ol>
+      </subsection>
+      <subsection name="Cutting the Release">
+        <p>
+        As discussed previously, if you are using an SCM, you should utilise the SCM plugin to do this as this will
+        ensure a build against a clean checkout. 
+        </p>
+        <p>
+        Ideally you should also build in a known environment each time.
+        </p>
+        <p>
+        Pay attention to the version of Java used to compile the release: some bytecode produced by later versions
+        may be incompatible with earlier versions. Look out for warnings provided by Maven about this. Maven can
+        offer assistance: setting <code>maven.compile.target</code> of the 
+        <a href='http://maven.apache.org/maven-1.x/plugins/java/properties.html'>Java Plugin</a> passes the
+        target JVM to the compiler. 
+        Note (however) that some more subtle 
+        compatibilty issues may be introduced by some modern compilers which can be fixed only by using an older
+        compiler.
+        </p>
+        <p>
+        With everything together and prepared, cutting the release is quite simple (whether the project uses SCM or not). 
+        If the plugin supports it, you can deploy the released artifact directly to the repository.
+        </p>
+
+        <p>
+        While Maven will currently create and deploy an MD5 checksum along with your distribution, this is only useful for verifying
+        download integrity when the sum can be download from a trusted repository. 
+        In many environments (including where there is public distribution over the internet) it is therefore
+        recommended that additional measures be put in place to allow the authenticity of the release to be verified.
+        </p>
+        <p>
+        It is therefore recommended that (in these cases), an <a href='http://www.ietf.org/html.charters/openpgp-charter.html'>OpenPGP</a> 
+        compatible digital signature is also created.
+        The original signatures and (most importantly) the public keys used to sign the releases
+        should be held on a tightly secured central server.
+        (Most users will need to download the public key but may not be able to verify it using the 
+        <a href='http://www.gnupg.org/gph/en/manual.html#AEN385'>web of trust</a>.
+        It is therefore vital that they can download the key from a secure server.)
+        The public key should also be made available through a public key server (for example, 
+        <a href='http://pgp.mit.edu'>the MIT key server</a>) and efforts made to link it strongly into the web of trust.
+        It is of crucial importance that all private keys used to sign releases be kept 
+        <a href='http://www.gnupg.org/gph/en/manual.html#AEN513'>secure</a>.
+        </p>
+        <p>
+        Since Maven does not currently support automatically generating digital signatures, 
+        it is recommended that you sign your release using <a href='http://www.gnupg.org'>GPG</a> 
+        (or some other OpenPGP compatible application).
+        </p>
+      </subsection>
+      <subsection name="Republish the Site">
+        <p>
+          As part of the deployment, you might want to republish your Maven generated web site with the new release
+          information, download links and release notes.
+        </p>
+      </subsection>
+      <subsection name="Announce the Release">
+        <p>
+        Finally, after the release is out and checked, you will want to make announcements to tell the world 
+        about it. Here again, Maven can help. (If you are using a sophisticated distribution system with mirroring,
+        you should wait until the mirrors have sync'd before making the annoucements.) 
+        </p>
+        <p>
+          If you are maintaining a change record, you can use the
+          <a href="http://maven.apache.org/maven-1.x/plugins/announcement/">Announcement plugin</a> to generate a plain text announcement
+          "release notes" style announcement and have it mailed to an announcement or other mailing list.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/repositories.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/repositories.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/repositories.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,158 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Repositories</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Artifact Repositories">
+      <p>
+        A repository (<a href="../reference/glossary.html#Repository">definition</a>) in Maven is used to
+        hold build artifacts and dependencies of varying types.
+      </p>
+      <p>
+        There are strictly only two types of repositories: local and remote. The local repository refers to a copy
+        on your own installation that is a cache of the remote downloads, and also contains the temporary
+        build artifacts that you have not yet released.
+      </p>
+      <p>
+        Remote repositories refer to any other type of repository, accessed by a variety of protocols such as
+        <code>file://</code> and <code>http://</code>. These repositories might be a truely remote repository
+        set up by a third party to provide their artifacts for downloading (for example,
+        <a href="http://www.ibiblio.org/maven/">Ibiblio</a> houses Maven's central repository).
+        Other "remote" repositories may be <a href="../reference/internal-repositories.html">internal repositories</a>
+        set up on a file or HTTP server within your company, used to share private artifacts between development teams
+        and for releases.
+      </p>
+      <p>
+        The local and remote repositories are structured the same way so that scripts can easily be run on either
+        side, or they can be synced for offline used. In general use, the layout of the repositories is completely
+        transparent to the Maven user, however.
+      </p>
+    </section>
+
+    <section name="Why not Store JARs in CVS?">
+      <p>
+        It is not recommended that you store your JARs in CVS. Maven tries to
+        promote the notion of a user local repository where JARs, or any
+        project artifacts, can be stored and used for any number of builds.
+        Many projects have dependencies such as XML parsers and standard utilities that
+        are often replicated in typical builds. With Maven these standard utilities
+        can be stored in your local repository and shared by any number of builds.
+      </p>
+      <p>
+        This has the following advantages:
+      </p>
+      <ul>
+        <li><b>It uses less storage</b> - while a repository is typically quite large, because each JAR is only kept
+          in the one place it is actually saving space, even though it may not seem that way</li>
+        <li><b>It makes checking out a project quicker</b> - initial checkout, and to a small degree updating, a
+          project will be faster if there are no large binary files in CVS. While they may need to be downloaded
+          again afterwards anyway, this only happens once and may not be necessary for some common JARs already in
+          place.</li>
+        <li><b>No need for versioning</b> - CVS and other source control systems are designed for versioning files,
+          but external dependencies typically don't change, or if they do their filename changes anyway to indicate the
+          new version. Storing these in CVS doesn't have any added benefit over keeping them in a local artifact 
+          cache.</li>
+      </ul>
+    </section>
+
+    <section name="Using Repositories">
+      <p>
+        In general, you should not need to do anything with the local repository on a regular basis, except clean
+        it out if you are short on disk space (or erase it completely if you are willing to download everything again).
+      </p>
+      <p>
+        For the remote repositories, they are used for both downloading and uploading (if you have the permission to
+        do so).
+      </p>
+      <subsection name="Downloading from a Remote Repository">
+        <p>
+          Downloading in Maven is triggered by a project declaring a dependency that is not present in the local
+          repository (or for a <code>SNAPSHOT</code>, when the remote repository contains one that is newer).
+          By default, Maven will download from Ibiblio.
+        </p>
+        <p>
+          To override this, you need to set the property <code>maven.repo.remote</code> as follows:
+        </p>
+        <source>maven.repo.remote=http://anothermavenrepository,http://www.ibiblio.org/maven/</source>
+        <p>
+          You can set this in your <code>~/build.properties</code> file to globally use a certain mirror, however
+          note that it is common for a project to customise the repository in their <code>project.properties</code>
+          and that your setting will take precedence. If you find that dependencies are not being found, check you
+          have not overridden the remote repository.
+        </p>
+        <p>
+          The protocols that are currently supported for a remote repository are <code>http</code>,
+          <code>https</code>, <code>sftp</code> and <code>file</code>. Note that <code>sftp</code>
+          is only supported since Maven 1.1-beta-3, and you'll have to set the username and password in the url, eg:
+        </p>
+        <source>maven.repo.remote=sftp://${myusername}:${mypassword}@localhost/tmp/ble</source>
+        <p>
+          (Future versions should allow you to use a setting of
+          <code>${maven.repo.remote},http://anothermavenrepository</code>, but currently this causes an infinite 
+          recursion).
+        </p>
+        <p>
+          For more information on dependencies, see <a href="managing-dependencies.html">Handling Dependencies</a>.
+        </p>
+      </subsection>
+      <subsection name="Building Offline">
+        <p>
+          If you find you need to build your projects offline you can either
+          use the offline switch on the CLI:
+        </p>
+        <source><![CDATA[maven -o jar:jar]]></source>
+        <p>
+          This is equivalent to:
+        </p>
+        <source><![CDATA[maven -Dmaven.mode.online=false jar:jar]]></source>
+        <p>
+          Or you can set
+          <code>maven.mode.online</code> to
+          <code>false</code> in your <code>build.properties</code> file to ensure you always work offline.
+        </p>
+        <p>
+          Note that many plugins will honour the offline setting and not perform any operations that would connect to
+          the internet. Some examples are resolving Javadoc links and link checking the site.
+        </p>
+        <p>
+          If you would like normal operations to succeed, but for no dependency downloading to occur, set the
+          <code>maven.repo.remote.enabled</code> property to <code>false</code>.
+        </p>
+      </subsection>
+      <subsection name="Uploading to a Remote Repository">
+        <p>
+          While this is possible for any type of remote repository, you must have the permission to do so.
+          To have someone upload to the central Maven repository, see
+          <a href="../reference/repository-upload.html">Uploading to Ibiblio</a>.
+        </p>
+        <p>
+          Usually, you will only be attempting to upload a release of your own application to an internal repository.
+          See <a href="../reference/internal-repositories.html">internal repositories</a> for more information.
+        </p>
+      </subsection>
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/resources.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/resources.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/resources.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Resources</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Resources">
+      <p>
+        Resources are used to include additional files in the build, or use additional files for testing.
+        They are copied into the classpath before compilation.
+      </p>
+      <p>
+        Resources can be specified in two places: the <code>build</code> element
+        (<a href="../reference/project-descriptor.html#resources">reference</a>) and the <code>unitTest</code>
+        element (<a href="../reference/project-descriptor.html#unitTest_resources">reference</a>).
+        These resources are specified identically, but are used separately - the first for the main build (which is
+        also given to the unit tests), and the other only for the unit tests.
+      </p>
+      <p>
+        The following is a simple use of resources:
+      </p>
+      <source><![CDATA[<resources>
+  <resource>
+    <directory>src/main/resources</directory>
+  </resource>
+</resources>]]></source>
+      <p>
+        In this example, every file in <code>src/main/resources</code> is copied as is to the <code>target/classes</code>
+        directory, preserving any subdirectory structure.
+      </p>
+      <p>
+        Pattern sets can be used to include and exclude certain files, for example:
+      </p>
+      <source><![CDATA[<resource>
+    <directory>src/main/resources</directory>
+    <includes>
+      <include>**/*.xml</include>
+    </includes>
+    <excludes>
+      <exclude>directory1/dummy.xml</exclude>
+    </excludes>
+  </resource>]]></source>
+      <p>
+        In some cases, a specific resource might need to be copied to a particular subdirectory. Usually, this just means
+        having the same subdirectory structure in your resources directory, but another alternative is to use
+        <code>targetPath</code>:
+      </p>
+      <source><![CDATA[<resource>
+  <directory>src/main/meta</directory>
+  <targetPath>META-INF</targetPath>
+  <includes>
+    <include>MANIFEST.MF</include>
+  </includes>
+</resource>]]></source>
+      <p>
+        Resources can also be filtered for tokens like <code>@property.name@</code>, identically to Ant.
+        First, you must enable filtering for your resources.
+      </p>
+      <source><![CDATA[<resource>
+  <directory>src/main/resources</directory>
+  <filtering>true</filtering>
+</resource>]]></source>
+      <p>
+        At the moment, you must define Ant filters to achieve this. This can be done using a <code>preGoal</code> on
+        <code>java:jar-resources</code>, for example:
+      </p>
+      <source><![CDATA[<preGoal name="java:jar-resources">
+<ant:filter token="some.property" value="some_value" />
+<ant:filter filtersfile="some.properties" />
+</preGoal>]]></source>
+      <p>
+        Note however that filters may cause issues with keeping a single build reproducible. Please see the
+        <a href="bestpractices.html#Reproduciblity">Best Practices</a> document for more information.
+      </p>
+    </section>
+  </body>
+</document>


Property changes on: branches/maven1/upstream/1.1~beta3/xdocs/using/resources.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/scm.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/scm.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/scm.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Working with Source Control</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Working with Source Control">
+      <p>
+        Working with your source control system in Maven is quite simple. Maven can provide the following services:
+      </p>
+      <ul>
+        <li>Common tasks such as checking out code, tagging the current code, and performing an update</li>
+        <li>Generating reports on the recent usage history of source control</li>
+        <li>Providing links to a web view of the source control, and if desired publishing that information to
+          the project site</li>
+      </ul>
+      <p>
+        Support is provided by the <!-- TODO [later]: link to mini site... a href="../scm/index.html"-->Maven SCM<!--/a-->
+        subproject. This provides support for the following SCM systems:
+      </p>
+      <ul>
+        <li>CVS</li>
+        <li>Subversion</li>
+        <li>ClearCase (partial)</li>
+        <li>Perforce (partial)</li>
+        <li>StarTeam (partial)</li>
+        <li>Visual SourceSafe (planned)</li>
+      </ul>
+      <p>
+        Configuration is extremely simple - in most cases, you need only specify the <code>&lt;connection/&gt;</code>
+        string in the <code>&lt;repository/&gt;</code> element of your POM. Specifics about this connection string
+        can be found in the <a href="http://maven.apache.org/maven-1.x/plugins/scm/scmurl.html">SCM plugin documentation</a>.
+      </p>
+      <subsection name="Performing Common Tasks">
+        <p>
+          It is possible to perform several common tasks with Maven. These can be particularly useful
+          for automation in your development environment, or in continuous integration.
+        </p>
+        <p>
+          There are also goals that provide assistance with making releases from your SCM.
+        </p>
+        <p>
+          For more information about common tasks and SCM based releases, see the
+          <a href="http://maven.apache.org/maven-1.x/plugins/scm/index.html">SCM Plugin Documentation</a>. This contains a complete guide to 
+          the <code>scm:</code> goals and related properties.
+        </p>
+        <p>
+          For general information on making releases with Maven, please see <a href="releasing.html">Making
+          Releases</a>.
+        </p>
+      </subsection>
+      <subsection name="Generating Reports">
+        <p>
+          Maven provides three different reports on SCM usage that can be included in your project site.
+          These are provided by the <a href="http://maven.apache.org/maven-1.x/plugins/changelog/index.html">Change Log</a>,
+          <a href="http://maven.apache.org/maven-1.x/plugins/file-activity/index.html">File Activity</a> and
+          <a href="http://maven.apache.org/maven-1.x/plugins/developer-activity/index.html">Developer Activity</a> plugins.
+        </p>
+        <p>
+          These are included in your project site by default, however if you would like to explicitly select them
+          for your project, add any or all of the following lines to <code>project.xml</code> inside the
+          <code>&lt;reports/&gt;</code> section:
+        </p>
+        <source><![CDATA[<report>maven-changelog-plugin</report>
+<report>maven-file-activity-plugin</report>
+<report>maven-developer-activity-plugin</report>]]></source>
+        <p>
+          For examples of these reports, please see the ones published for this project:
+          <a href="../changelog-report.html">Change Log</a>, <a href="../file-activity-report.html">File Activity</a>,
+          and <a href="../developer-activity-report.html">Developer Activity</a>.
+        </p>
+        <p>
+          There are other SCM reports available for Maven, such as the excellent StatCVS plugin.
+          These are included on the <a href="../plugins/3rdparty.html">3rd Party Plugins</a> list.
+        </p>
+      </subsection>
+      <subsection name="Adding SCM Information to Your Site">
+        <p>
+          The source control information for the project is included by default in the project site. For example,
+          see the <a href="../scm-usage.html">SCM Usage</a> page for this project.
+        </p>
+        <p>
+          For more information, please see <a href="site.html">Creating a Site</a>.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/site.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/site.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/site.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,241 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+  <properties>
+    <title>Creating a Site</title>
+    <author email="bwalding at apache.org">Ben Walding</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Creating a Site">
+      <p>
+        Maven can be used to generate an entire web site for your project. The web site can be used to house all of
+        your user-facing documentation, generated as flat HTML with a common look and feel.
+      </p>
+      <p>
+        It also contains a number of generated documents based on the information in your project. This can include
+        SCM information, mailing lists and a list of developers, as well as FAQs and release notes based on
+        additional metadata you provide.
+      </p>
+      <p>
+        Finally, the web site will contain various reports about your source code generated
+        by the plugins included in Maven such as javadocs, metrics, unit test results, changelogs, and more.
+      </p>
+    </section>
+
+    <section name="Adding Documents to the Site">
+      <subsection name="Creating a Site Descriptor">
+        <p>
+          To add documents to the site, first you will need to add them to the navigation so that they can be found.
+        </p>
+        <p>
+          To do this, create a <code>navigation.xml</code> file in the <code>xdocs</code> directory that contains the
+          menu structure for the entire document tree. Add all items and sub-items.
+        </p>
+
+        <p>
+          For items that can collapse when you are not browsing them, add
+          <code>collapse="true"</code>
+          to the item declaration.
+        </p>
+
+        <p>
+          The following is an example <code>navigation.xml</code> file:
+        </p>
+
+        <source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project name="Maven xdoc Plugin">
+
+  <!-- Page Title -->
+  <title>Maven xdoc Plugin</title>
+
+  <body>
+
+    <!-- Links defined across the top right of the site -->
+    <links>
+      <item name="Maven"  href="http://maven.apache.org/"/>
+    </links>
+
+    <!-- Menu in the Left Navigation -->
+    <menu name="Menu Name">
+      <!-- Standalone item -->
+      <item name="Item" href="/item.html" />
+
+      <!-- Uncollapsed Submenu -->
+      <item name="Alpha" href="/alpha/index.html">
+        <item name="Alpha One" href="/alpha/one/index.html"/>
+        <item name="Alpha Two" href="/alpha/two/index.html"/>
+      </item>
+
+      <!-- Collapsed Submenu -->
+      <item name="Beta" href="/beta/index.html" collapse="true">
+        <item name="Beta One" href="/beta/one/index.html" collapse="true"/>
+        <item name="Beta Two" href="/beta/two/index.html" collapse="true"/>
+      </item>
+    </menu>
+  </body>
+</project>]]></source>
+        <p>
+          <b>Note: </b> the <code>href</code> element should be absolute, referenced according to your document root
+          (ie, under <code>xdocs</code>).
+        </p>
+        <p>
+          You can also add images to items in the menu, for example:
+        </p>
+        <source><![CDATA[<item name="The Site" href="http://www.thesite.net/" img="http://www.thesite.net/thesite.png"/>]]></source>
+      </subsection>
+      <subsection name="Creating a new Document">
+        <p>
+          The XDoc format is quite simple, and is based on the original Anakia format that originated in Jakarta.
+          The following is a sample XDoc document:
+        </p>
+        <source><![CDATA[
+<document>
+  <properties>
+    <author email="user at company.com">John Doe</author>
+    <title>Page Title</title>
+  </properties>
+  <!-- Optional HEAD element, which is copied as is into the XHTML <head> element -->
+  <head>
+    <meta ... />
+  </head>
+  <body>
+    <!-- The body of the document contains a number of sections -->
+    <section name="section 1">
+
+      <!-- Within sections, any XHTML can be used -->
+      <p>Hi!</p>
+
+      <!-- in addition to XHTML, any number of subsections can be within a section -->
+      <subsection name="subsection 1">
+        <p>Subsection!</p>
+      </subsection>
+    </section>
+
+    <section name="other section">
+
+      <!-- You can also include preformatted source blocks in the document -->
+      <source>
+code line 1
+code line 2
+      </source>
+    </section>
+  </body>
+</document>]]></source>
+        <p>
+          To create one of these documents, create an XML file in the directory structure you want for your site under
+          the <code>xdocs</code> document root. For example, <code>/start/introduction.xml</code> will be generated as
+          <code>/start/introduction.html</code> on the final site.
+        </p>
+      </subsection>
+    </section>
+
+    <section name="Site Appearance">
+      <p>
+        The following sections give some details on specific customisations you might want to make to the generated site.
+      </p>
+      <p>
+        For more information on customising the generated site, see the <a href="http://maven.apache.org/maven-1.x/plugins/xdoc/">XDoc plugin reference</a>.
+      </p>
+      <subsection name="Creating Your Own Index Page">
+        <p>
+          Maven will generate a default <code>index.html</code> page for your project based on the
+          <code>description</code> element in the POM. However, this is usually not very verbose, so you may like to
+          create your own index page.
+        </p>
+        <p>
+          To do this, simply create an <code>index.xml</code> document in the base <code>xdocs</code> directory in the
+          same style as the other documents (as explained in the previous sections), and this will be used instead of
+          the generated document.
+        </p>
+      </subsection>
+      <subsection name="Visual Style">
+        <p>
+          By default, all Maven-generated sites use the same look and feel for consistency.
+          This enables users to easily recognize a Maven-generated site and immediately feel comfortable
+          searching for information on the site.
+        </p>
+        <p>
+          Of course, we understand that users will want to
+          customize their own sites. There are two alternatives.
+        </p>
+        <p>
+          Firstly, you can select different skins. Currently Maven comes with two skins - the current default and the
+          "classic" skin that appeared in Maven 1.0 Beta 10 and earlier. Selection of the skin (and the colours used if
+          using the classic skin) is done through <a href="http://maven.apache.org/maven-1.x/plugins/xdoc/properties.html">properties</a>
+          given to the XDoc plugin.
+        </p>
+        <p>
+          The other alternative is to provide your own CSS. The Maven site is generated in XHTML and the layout defined
+          by CSS. The best alternative is to take the existing stylesheet and modify it according to your tastes.
+          To specify the alternate stylesheet, set the <code>maven.xdoc.theme.url</code> property for the XDoc plugin
+          (again, see the <a href="http://maven.apache.org/maven-1.x/plugins/xdoc/properties.html">properties</a> for more information).
+        </p>
+      </subsection>
+
+      <subsection name="Reports">
+        <p>
+          Finally, if you want to customize which reports are
+          automatically generated for your site, you need to include the
+          <a href="../reference/project-descriptor.html#reports"><code>reports</code></a> tag
+          in your project descriptor. This tag enables you to
+          selectively choose which reports to include and exclude as
+          well as the order of the reports.
+        </p>
+        <p>
+          The following are the default set of reports, as specified by the XDoc plugin:
+        </p>
+        <source>
+maven-changelog-plugin
+maven-changes-plugin
+maven-checkstyle-plugin
+maven-developer-activity-plugin
+maven-file-activity-plugin
+maven-javadoc-plugin
+maven-jdepend-plugin
+maven-junit-report-plugin
+maven-jxr-plugin
+maven-license-plugin
+maven-linkcheck-plugin
+maven-pmd-plugin
+maven-tasklist-plugin</source>
+      </subsection>
+
+      <subsection name="Exclusion of All Maven-Generated Content">
+        <p>
+          Users building documentation-only sites or sites that
+          aggregate a lot of sub-projects might want to prevent the
+          inclusion of the entire "Project Documentation" section of the
+          navigation bar on their sites.  This can be done by setting
+          the
+            <code>maven.xdoc.includeProjectDocumentation</code>
+          property to the value of
+            <code>no</code>.  By default, Maven
+          will include the "Project Documentation" section of the
+          navigation bar which includes information about the project as
+          well as links to the numerous Maven-generated reports.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/tests.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/tests.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/tests.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!-- 
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+
+<document>
+  <properties>
+    <title>Unit Testing</title>
+    <author email="bwalding at apache.org">Ben Walding</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Unit Testing">
+      <p>
+        The Maven team believes that unit testing can be a very useful tool in improving the quality of software, in
+        particular to enforce a loosely coupled design and to give the ability to regression test the code over time.
+        For this reason, unit test support (provided by JUnit in Java) is included out of the box, and an integral
+        part of the build process.
+      </p>
+      <p>
+        To configure your test suite, add the <a href="../reference/project-descriptor.html#unitTest"><code>unitTest</code></a>
+        element to the project descriptor.
+      </p>
+      <p>
+        By default, the tests are run whenever you package your artifact to ensure they continue to pass. They can also
+        be run explicitly using the command: <code>maven test:test</code>.
+      </p>
+      <p>
+        If you need to skip tests temporarily for speed, you can use the <code>maven.test.skip</code> property:
+      </p>
+      <source>maven -Dmaven.test.skip=true jar</source>
+      <p>
+        This is not generally recommended, however - your tests should remain fast enough that running them regularly
+        does not have a negative impact.
+      </p>
+      <p>
+        There are other test goals to run individual tests or a subset of tests, as well different configuration
+        options. For more information, see the <a href="http://maven.apache.org/maven-1.x/plugins/test/">test plugin reference</a>.
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.1~beta3/xdocs/using/war.xml
===================================================================
--- branches/maven1/upstream/1.1~beta3/xdocs/using/war.xml	                        (rev 0)
+++ branches/maven1/upstream/1.1~beta3/xdocs/using/war.xml	2006-09-15 08:55:53 UTC (rev 2436)
@@ -0,0 +1,188 @@
+<?xml version="1.0"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<document>
+
+  <properties>
+    <title>Web Applications</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Web Applications">
+      <p>
+        Building a web application is not too much different to working with other types such as JARs in Maven. You
+        still create a project descriptor, add your source code and resources, and build an archive to finish.
+      </p>
+      <p>
+        However, a few extra steps must be taken to create the appropriate web application structure.
+      </p>
+      <subsection name="Adding Webapp Contents">
+        <p>
+          The first step is to add the web application contents. Unlike a JAR, resources are not included in the root of
+          the WAR - they will be located in <code>/WEB-INF/classes</code>, as the purpose of the resources is to make
+          them available in the classloader inside the application.
+        </p>
+        <p>
+          To include the contents of your web application (JSPs, images, etc., as well as some of the contents of
+          WEB-INF), create a directory called <code>src/main/webapp</code>. These will all reside in the base of the web
+          application when it is packaged up.
+        </p>
+        <p>
+          To configure the web application to use these resources, set the property:
+        </p>
+        <source>maven.war.src=${basedir}/src/main/webapp</source>
+        <p>
+          You can include whatever you like in this structure, including a <code>WEB-INF</code> directory and anything
+          underneath it. However, you should not have a <code>/WEB-INF/classes</code> or <code>/WEB-INF/lib</code>
+          directory as Maven will populate this from your project.
+        </p>
+        <p>
+          As mentioned, resources and classes will be compiled and copied into the <code>/WEB-INF/classes</code>
+          directory. The <code>lib</code> directory is populated from the project's dependency list, as shown in the
+          next section.
+        </p>
+      </subsection>
+      <subsection name="Adding Dependencies to the lib Directory">
+        <p>
+          Since Maven requires that you declare all of the dependencies of your project, it is quite easy to also set
+          up the <code>lib</code> directory in your web application.
+        </p>
+        <p>
+          Note however, libraries are not bundled into the web application by default - you must list those that you
+          want included. This is quite simple to do, by adding a property to those dependencies that are required in
+          the WAR:
+        </p>
+        <source><![CDATA[<dependency>
+  <groupId>mycompany</groupId>
+  <artifactId>mycompany-utils</artifactId>
+  <version>1.0.0</version>
+  <properties>
+    <war.bundle>true</war.bundle>
+  </properties>
+</dependency>]]></source>
+      </subsection>
+      <subsection name="Building and Deploying">
+        <p>
+          There are two particular goals that are used to build a web application: <code>war:webapp</code> and
+          <code>war:war</code>.
+        </p>
+        <p>
+          The first builds an unpacked directory structure in the <code>target</code> directory
+          that is the same as it would be exploded into an application server. This can be most effective for deploying
+          directly into an application server with reloading enabled in the development environment so that
+          reconstructing the WAR in this directory after making changes will be loaded.
+        </p>
+        <p>
+          The second will build a <code>.war</code> archive which is later deployed into the servlet container as is.
+        </p>
+        <p>
+          To automatically deploy into a servlet container will rely on scripting up the appropriate goals or locating
+          an existing plugin for the container. There is currently one available for JBoss - see the
+          <a href="http://maven.apache.org/maven-1.x/plugins/jboss/">JBoss Plugin</a>. Tomcat also has several deployment Ant tasks which can
+          easily be used from Maven.
+        </p>
+      </subsection>
+      <subsection name="Further Information">
+        <p>
+          If you would like an example, please refer to
+          <a href="http://svn.apache.org/viewcvs.cgi/maven/maven-1/plugins/trunk/examples/simple-webapp/">The <code>simple-webapp</code>
+          example project.</a>
+        </p>
+        <p>
+          For more information on goals and configuration, see the <a href="http://maven.apache.org/maven-1.x/plugins/war/">WAR plugin
+          reference</a>.
+        </p>
+      </subsection>
+    </section>
+    <section name="Precompiling JSPs for Tomcat">
+      <p>
+        How to precompile JSPs is a common question when developing Web Applications, as doing so can bring a
+        performance boost to the first time deployment of your application in a production environment.
+      </p>
+      <p>
+        The following code snippet can be used in <code>maven.xml</code> if you are using a Tomcat 4.1 based
+        servlet container. It should also serve as a starting point for implementing a similar task for other containers.
+      </p>
+      <source><![CDATA[
+<preGoal name="war:webapp">
+  <j:set var="precompileJsp" value="${precompile.jsp}"/>
+  <j:if test="${precompileJsp == 'true'}">
+    <attainGoal name="precompile-jsp"/>
+  </j:if>
+</preGoal>
+
+<postGoal name="war:webapp">
+  <j:set var="precompileJsp" value="${precompile.jsp}"/>
+  <j:if test="${precompileJsp == 'true'}">
+    <maven:set var="target" property="maven.war.webapp.dir" plugin="maven-war-plugin" />
+    <util:available file="${maven.build.dir}/web-fragment.xml">
+      <util:loadText var="fragment" file="${maven.build.dir}/web-fragment.xml"/>
+      <ant:replace file="${target}/WEB-INF/web.xml" token="&lt;!-- [INSERT FRAGMENT HERE] --&gt;" value="${fragment}"/>
+    </util:available>
+  </j:if>
+</postGoal>
+
+<goal name="precompile-jsp" description="Precompile all JSPs into java classes, and then into classes" prereqs="war:load,java:compile">
+  <maven:set var="warSource" property="maven.war.src" plugin="maven-war-plugin" />
+  <ant:mkdir dir="${maven.build.dir}/jspc"/>
+  <ant:mkdir dir="${maven.build.dir}/jspc-processed"/>
+  <ant:mkdir dir="${maven.build.dir}/jspc-classes"/>
+
+  <j:set var="jspOutDir" value="${maven.build.dir}/jspc"/>
+  <j:set var="jspClassesOutDir" value="${maven.build.dest}"/>
+  <ant:path id="jspc.classpath">
+    <ant:pathelement location="${tomcat.home}/common/lib/jasper-runtime.jar"/>
+    <ant:pathelement location="${tomcat.home}/common/lib/jasper-compiler.jar"/>
+    <ant:pathelement location="${tomcat.home}/common/lib/servlet.jar"/>
+    <ant:path refid="maven.dependency.classpath"/>
+    <ant:pathelement path="${maven.build.dest}"/>
+  </ant:path>
+  <ant:taskdef name="jasper2" classname="org.apache.jasper.JspC" classpathref="jspc.classpath"/>
+  <ant:jasper2
+    webXmlFragment="${maven.build.dir}/web-fragment.xml"
+    package="${pom.package}.jsp.${pom.artifactId}"
+    outputDir="${jspOutDir}"
+    srcdir="${warSource}"
+    uriroot="${warSource}"
+    uribase="/${pom.artifactId}"
+    verbose="2"/>
+  <ant:javac
+    srcdir="${jspOutDir}"
+    destdir="${jspClassesOutDir}"
+    debug="${maven.compile.debug}"
+    deprecation="${maven.compile.deprecation}"
+    optimize="${maven.compile.optimize}"
+    classpathref="jspc.classpath"/>
+</goal>
+]]></source>
+      <p>
+        To execute this code, set the <code>precompile.jsp</code> property to <code>true</code>. When building the web
+        application, the JSPs will be compiled and added to the generated WAR file.
+      </p>
+      <p>
+        These servlets will not be utilised by Tomcat by default. To do so, you must include them in the
+        <code>web.xml</code> file. The script above does this, as long as you include the following comment in your
+        <code>web.xml</code> file in between the last <code>servlet</code> and first <code>servlet-mapping</code>
+        declaration:
+      </p>
+      <source><![CDATA[<!-- [INSERT FRAGMENT HERE] -->]]></source>
+    </section>
+  </body>
+</document>




More information about the pkg-java-commits mailing list