r2420 - in branches: . maven1 maven1/upstream maven1/upstream/1.0.2 maven1/upstream/1.0.2/src maven1/upstream/1.0.2/src/admin maven1/upstream/1.0.2/src/announcements maven1/upstream/1.0.2/src/bin maven1/upstream/1.0.2/src/bootstrap maven1/upstream/1.0.2/src/bootstrap/org maven1/upstream/1.0.2/src/bootstrap/org/apache maven1/upstream/1.0.2/src/bootstrap/org/apache/maven maven1/upstream/1.0.2/src/conf maven1/upstream/1.0.2/src/installer maven1/upstream/1.0.2/src/installer/nsis maven1/upstream/1.0.2/src/java maven1/upstream/1.0.2/src/java/org maven1/upstream/1.0.2/src/java/org/apache maven1/upstream/1.0.2/src/java/org/apache/maven maven1/upstream/1.0.2/src/java/org/apache/maven/ant maven1/upstream/1.0.2/src/java/org/apache/maven/cli maven1/upstream/1.0.2/src/java/org/apache/maven/jelly maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz maven1/upstream/1.0.2/src/java/org/apache/maven/plugin maven1/upstream/1.0.2/src/java/org/apache/maven/project maven1/upstream/1.0.2/src/java/org/apache/maven/repository maven1/upstream/1.0.2/src/java/org/apache/maven/util maven1/upstream/1.0.2/src/java/org/apache/maven/verifier maven1/upstream/1.0.2/src/man maven1/upstream/1.0.2/src/messages maven1/upstream/1.0.2/src/test maven1/upstream/1.0.2/src/test/basedir maven1/upstream/1.0.2/src/test/basedir/extend-1 maven1/upstream/1.0.2/src/test/basedir/extend-2 maven1/upstream/1.0.2/src/test/checksum maven1/upstream/1.0.2/src/test/extend maven1/upstream/1.0.2/src/test/extend/child_project maven1/upstream/1.0.2/src/test/java maven1/upstream/1.0.2/src/test/java/org maven1/upstream/1.0.2/src/test/java/org/apache maven1/upstream/1.0.2/src/test/java/org/apache/maven maven1/upstream/1.0.2/src/test/java/org/apache/maven/app maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF maven1/upstream/1.0.2/src/test/java/org/apache/maven/project maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository maven1/upstream/1.0.2/src/test/java/org/apache/maven/util maven1/upstream/1.0.2/src/test/mock-plugins maven1/upstream/1.0.2/src/test/mock-plugins/plugin-1 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-2 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-3 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-4 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-5 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-6 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-7 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-8 maven1/upstream/1.0.2/src/test/mock-plugins/plugin-9 maven1/upstream/1.0.2/src/test/test-data maven1/upstream/1.0.2/src/test/test-data/pom maven1/upstream/1.0.2/src/test/test-data/pom/extend maven1/upstream/1.0.2/src/test/touchstone-build maven1/upstream/1.0.2/src/test/touchstone-build/lib maven1/upstream/1.0.2/src/test/touchstone-build/src maven1/upstream/1.0.2/src/test/touchstone-build/src/aptdocs maven1/upstream/1.0.2/src/test/touchstone-build/src/conf maven1/upstream/1.0.2/src/test/touchstone-build/src/main maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/entity maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1 maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2 maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1 maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2 maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2 maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/a maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/b maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/c maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/d maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/e maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/f maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/a maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/b maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/c maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/d maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/e maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/f maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/a maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/b maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/c maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/d maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test maven1/upstream/1.0.2/src/test/touchstone-build/src/resources maven1/upstream/1.0.2/src/test/touchstone-build/src/test maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven/touchstone maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data maven1/upstream/1.0.2/src/test/touchstone-build/xdocs maven1/upstream/1.0.2/src/xsd maven1/upstream/1.0.2/xdocs maven1/upstream/1.0.2/xdocs/ant-guide maven1/upstream/1.0.2/xdocs/ant-guide/qna maven1/upstream/1.0.2/xdocs/apache maven1/upstream/1.0.2/xdocs/archived maven1/upstream/1.0.2/xdocs/development maven1/upstream/1.0.2/xdocs/images maven1/upstream/1.0.2/xdocs/misc maven1/upstream/1.0.2/xdocs/project maven1/upstream/1.0.2/xdocs/reference maven1/upstream/1.0.2/xdocs/reference/developers maven1/upstream/1.0.2/xdocs/reference/developers/ide maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse maven1/upstream/1.0.2/xdocs/start

Marcus Better marcusb-guest at costa.debian.org
Thu Sep 14 10:29:40 UTC 2006


Author: marcusb-guest
Date: 2006-09-14 10:29:37 +0000 (Thu, 14 Sep 2006)
New Revision: 2420

Added:
   branches/maven1/
   branches/maven1/upstream/
   branches/maven1/upstream/1.0.2/
   branches/maven1/upstream/1.0.2/.cvsignore
   branches/maven1/upstream/1.0.2/KEYS
   branches/maven1/upstream/1.0.2/LICENSE.txt
   branches/maven1/upstream/1.0.2/NOTICE.txt
   branches/maven1/upstream/1.0.2/README.txt
   branches/maven1/upstream/1.0.2/build-bootstrap.xml
   branches/maven1/upstream/1.0.2/checkstyle-license.txt
   branches/maven1/upstream/1.0.2/checkstyle.xml
   branches/maven1/upstream/1.0.2/gump.xml
   branches/maven1/upstream/1.0.2/maven.xml
   branches/maven1/upstream/1.0.2/plugin-profile.xml
   branches/maven1/upstream/1.0.2/plugins-site.xml
   branches/maven1/upstream/1.0.2/project.properties
   branches/maven1/upstream/1.0.2/project.xml
   branches/maven1/upstream/1.0.2/release.xml
   branches/maven1/upstream/1.0.2/src/
   branches/maven1/upstream/1.0.2/src/.cvsignore
   branches/maven1/upstream/1.0.2/src/admin/
   branches/maven1/upstream/1.0.2/src/admin/create-checksums
   branches/maven1/upstream/1.0.2/src/admin/deploy-artifact
   branches/maven1/upstream/1.0.2/src/admin/deploy-artifact.bat
   branches/maven1/upstream/1.0.2/src/admin/deploy-dist
   branches/maven1/upstream/1.0.2/src/admin/deploy-dist.bat
   branches/maven1/upstream/1.0.2/src/admin/deploy-jar
   branches/maven1/upstream/1.0.2/src/admin/deploy-jar.bat
   branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar
   branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar.bat
   branches/maven1/upstream/1.0.2/src/announcements/
   branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-2.ann
   branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-3.ann
   branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-4.ann
   branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-5.ann
   branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-6.ann
   branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-7.ann
   branches/maven1/upstream/1.0.2/src/announcements/1.0-rc1.ann
   branches/maven1/upstream/1.0.2/src/bin/
   branches/maven1/upstream/1.0.2/src/bin/forehead.conf
   branches/maven1/upstream/1.0.2/src/bin/maven
   branches/maven1/upstream/1.0.2/src/bin/maven.bat
   branches/maven1/upstream/1.0.2/src/bootstrap/
   branches/maven1/upstream/1.0.2/src/bootstrap/org/
   branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/
   branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/
   branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapPomParser.java
   branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapTask.java
   branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/Dependency.java
   branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/package.html
   branches/maven1/upstream/1.0.2/src/conf/
   branches/maven1/upstream/1.0.2/src/conf/defaults.properties
   branches/maven1/upstream/1.0.2/src/conf/driver.jelly
   branches/maven1/upstream/1.0.2/src/conf/driver.properties
   branches/maven1/upstream/1.0.2/src/conf/log4j.properties
   branches/maven1/upstream/1.0.2/src/installer/
   branches/maven1/upstream/1.0.2/src/installer/nsis/
   branches/maven1/upstream/1.0.2/src/installer/nsis/before-install.nsh
   branches/maven1/upstream/1.0.2/src/installer/nsis/maven-logo.bmp
   branches/maven1/upstream/1.0.2/src/installer/nsis/maven-website.bmp
   branches/maven1/upstream/1.0.2/src/installer/nsis/maven.bmp
   branches/maven1/upstream/1.0.2/src/installer/nsis/registry-uninstall.nsh
   branches/maven1/upstream/1.0.2/src/installer/nsis/registry.nsh
   branches/maven1/upstream/1.0.2/src/installer/nsis/startmenu-shortcuts.nsh
   branches/maven1/upstream/1.0.2/src/java/
   branches/maven1/upstream/1.0.2/src/java/org/
   branches/maven1/upstream/1.0.2/src/java/org/apache/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AbstractMavenComponent.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AntProjectBuilder.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ArtifactListBuilder.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/DependencyClasspathBuilder.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/GoalException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenConstants.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenSession.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenUtils.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/NoGoalException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/UnknownGoalException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/MavenTask.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/App.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/CLIManager.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyBuildListener.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyPropsHandler.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyUtils.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/MavenExpressionFactory.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/MavenJellyContext.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/JellyScriptHousing.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginCacheManager.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginManager.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginScriptParser.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/UnknownPluginException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/ArtifactType.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/BaseObject.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Branch.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Build.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Contributor.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Dependency.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Developer.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Jar.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/License.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/MailingList.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Organization.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/PackageGroup.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Plugin.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Project.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Repository.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Resource.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/SourceModification.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/UnitTest.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Version.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractArtifact.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/Artifact.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/ArtifactTypeHandler.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactFactory.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/GenericArtifact.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/PluginArtifact.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/RepositoryLayout.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Base64.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/BootstrapDownloadMeter.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/ConsoleDownloadMeter.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLFormatter.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLPathTool.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DownloadMeter.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/EnhancedStringTokenizer.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Expand.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/HttpUtils.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/InsertionOrderedSet.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/MD5Sum.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/MavenTool.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/ResourceBean.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/SilentDownloadMeter.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringInputStream.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringTool.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/package.html
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/ChecksumVerificationException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/DependencyVerifier.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/RepoConfigException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java
   branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/package.html
   branches/maven1/upstream/1.0.2/src/man/
   branches/maven1/upstream/1.0.2/src/man/maven.1
   branches/maven1/upstream/1.0.2/src/messages/
   branches/maven1/upstream/1.0.2/src/messages/messages_el.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_en.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_es.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_fr.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_it.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_ja.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_nl.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_no.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_pl.properties
   branches/maven1/upstream/1.0.2/src/messages/messages_zh_CN.properties
   branches/maven1/upstream/1.0.2/src/test/
   branches/maven1/upstream/1.0.2/src/test/basedir/
   branches/maven1/upstream/1.0.2/src/test/basedir/extend-1/
   branches/maven1/upstream/1.0.2/src/test/basedir/extend-1/project.xml
   branches/maven1/upstream/1.0.2/src/test/basedir/extend-2/
   branches/maven1/upstream/1.0.2/src/test/basedir/extend-2/project.xml
   branches/maven1/upstream/1.0.2/src/test/basedir/project.xml
   branches/maven1/upstream/1.0.2/src/test/checksum/
   branches/maven1/upstream/1.0.2/src/test/checksum/input.jar
   branches/maven1/upstream/1.0.2/src/test/extend/
   branches/maven1/upstream/1.0.2/src/test/extend/child_project/
   branches/maven1/upstream/1.0.2/src/test/extend/child_project/project-child2.xml
   branches/maven1/upstream/1.0.2/src/test/extend/child_project/project.properties
   branches/maven1/upstream/1.0.2/src/test/extend/project-child.xml
   branches/maven1/upstream/1.0.2/src/test/extend/project.properties
   branches/maven1/upstream/1.0.2/src/test/java/
   branches/maven1/upstream/1.0.2/src/test/java/org/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/JAXPTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/MavenUtilsTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/app/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/app/MavenTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/AppTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/CLIManagerTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/forehead.conf
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.0.jar
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.2-SNAPSHOT.jar
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven-java-plugin-1.3.jar
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/maven-clean-plugin-1.1-SNAPSHOT.jar
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BaseObjectTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BasedirTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BuildTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ContributorTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DependencyTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DeveloperTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/JarTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/LegacyIdTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/MailingListTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/OrganizationTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/PluginTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/RepositoryTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ResourceTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/SourceModificationTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/VersionTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultArtifactFactoryTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultRepositoryLayoutTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/GenericArtifactTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLFormatterTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLPathToolTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/ExpandTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/HttpUtilsTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/MD5SumTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/MavenToolTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringInputStreamTest.java
   branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringToolTest.java
   branches/maven1/upstream/1.0.2/src/test/log4j.properties
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-1/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-1/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-2/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-2/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-3/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-3/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-4/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-4/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-5/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-5/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-6/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-6/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-7/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-7/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-8/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-8/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-9/
   branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-9/plugin.jelly
   branches/maven1/upstream/1.0.2/src/test/test-data/
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base-id-only.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-only.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-override-groupid.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-none.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-artifact-id.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml
   branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-id-only.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/.cvsignore
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/lib/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/lib/a.jar
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/lib/b.jar
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/aptdocs/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/aptdocs/apt-test.apt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/log4j.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/runtime.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/entity/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/entity/entity.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/build.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/a/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/b/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/c/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/d/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/e/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/f/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/a/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/a/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/b/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/b/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/c/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/c/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/d/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/d/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/project.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/maven.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/project.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/resources.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/resources.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/maven.tar.gz
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/sea-header
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/test.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/whacky.properties
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven/touchstone/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/.cvsignore
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/navigation.xml
   branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/tables.xml
   branches/maven1/upstream/1.0.2/src/xsd/
   branches/maven1/upstream/1.0.2/src/xsd/maven-navigation-1.0.xsd
   branches/maven1/upstream/1.0.2/src/xsd/maven-project.xsd
   branches/maven1/upstream/1.0.2/xdocs/
   branches/maven1/upstream/1.0.2/xdocs/.cvsignore
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/design.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/index.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/practical.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/antfarming.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/help.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/hooks.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/properties.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/speed.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/terminology.xml
   branches/maven1/upstream/1.0.2/xdocs/ant-guide/where.xml
   branches/maven1/upstream/1.0.2/xdocs/apache/
   branches/maven1/upstream/1.0.2/xdocs/apache/index.xml
   branches/maven1/upstream/1.0.2/xdocs/archived/
   branches/maven1/upstream/1.0.2/xdocs/archived/internals.xml
   branches/maven1/upstream/1.0.2/xdocs/archived/links.xml
   branches/maven1/upstream/1.0.2/xdocs/archived/musings.xml
   branches/maven1/upstream/1.0.2/xdocs/archived/references.xml
   branches/maven1/upstream/1.0.2/xdocs/archived/roadmap.xml
   branches/maven1/upstream/1.0.2/xdocs/archived/tasks.xml
   branches/maven1/upstream/1.0.2/xdocs/changes.xml
   branches/maven1/upstream/1.0.2/xdocs/development-process.xml
   branches/maven1/upstream/1.0.2/xdocs/development/
   branches/maven1/upstream/1.0.2/xdocs/development/branches.xml
   branches/maven1/upstream/1.0.2/xdocs/development/deprecation.xml
   branches/maven1/upstream/1.0.2/xdocs/development/distributions.xml
   branches/maven1/upstream/1.0.2/xdocs/development/release-process.xml
   branches/maven1/upstream/1.0.2/xdocs/faq.fml
   branches/maven1/upstream/1.0.2/xdocs/features.xml
   branches/maven1/upstream/1.0.2/xdocs/getting-started.xml
   branches/maven1/upstream/1.0.2/xdocs/images/
   branches/maven1/upstream/1.0.2/xdocs/images/apache-maven-project.png
   branches/maven1/upstream/1.0.2/xdocs/images/apache-maven.png
   branches/maven1/upstream/1.0.2/xdocs/images/asf_logo_wide_clear.gif
   branches/maven1/upstream/1.0.2/xdocs/images/jakarta-logo-blue.gif
   branches/maven1/upstream/1.0.2/xdocs/images/jakarta-logo-blue.png
   branches/maven1/upstream/1.0.2/xdocs/images/maven.gif
   branches/maven1/upstream/1.0.2/xdocs/images/maven.jpg
   branches/maven1/upstream/1.0.2/xdocs/images/maven.png
   branches/maven1/upstream/1.0.2/xdocs/index.xml
   branches/maven1/upstream/1.0.2/xdocs/misc/
   branches/maven1/upstream/1.0.2/xdocs/misc/articles.xml
   branches/maven1/upstream/1.0.2/xdocs/misc/glossary.xml
   branches/maven1/upstream/1.0.2/xdocs/misc/index.xml
   branches/maven1/upstream/1.0.2/xdocs/misc/powered.xml
   branches/maven1/upstream/1.0.2/xdocs/navigation-pdf.xml
   branches/maven1/upstream/1.0.2/xdocs/navigation.xml
   branches/maven1/upstream/1.0.2/xdocs/objectives.xml
   branches/maven1/upstream/1.0.2/xdocs/project/
   branches/maven1/upstream/1.0.2/xdocs/project/initial-proposal.txt
   branches/maven1/upstream/1.0.2/xdocs/project/maven-resolution.txt
   branches/maven1/upstream/1.0.2/xdocs/quotes.txt
   branches/maven1/upstream/1.0.2/xdocs/reference/
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/developer-guide.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse1.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse2.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse3.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse4.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse5.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse6.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse7.png
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/index.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/index.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/index.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/releasing-plugins.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/developers/sharing-plugins.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/dirlayout.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/index.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/metrics.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/project-descriptor.xml
   branches/maven1/upstream/1.0.2/xdocs/reference/user-guide.xml
   branches/maven1/upstream/1.0.2/xdocs/repository-upload.xml
   branches/maven1/upstream/1.0.2/xdocs/site.xml
   branches/maven1/upstream/1.0.2/xdocs/start/
   branches/maven1/upstream/1.0.2/xdocs/start/anakia.xml
   branches/maven1/upstream/1.0.2/xdocs/start/bootstrap.xml
   branches/maven1/upstream/1.0.2/xdocs/start/download.xml
   branches/maven1/upstream/1.0.2/xdocs/start/index.xml
   branches/maven1/upstream/1.0.2/xdocs/start/install.xml
   branches/maven1/upstream/1.0.2/xdocs/start/integrate.xml
   branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.1.xml
   branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.2.xml
   branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.xml
   branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-creating.xml
   branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-running.xml
   branches/maven1/upstream/1.0.2/xdocs/start/ten-minute.xml
   branches/maven1/upstream/1.0.2/xdocs/start/use.xml
   branches/maven1/upstream/1.0.2/xdocs/status.xml
   branches/maven1/upstream/1.0.2/xdocs/sun-licensing-journey.xml
Log:
Imported upstream sources.


Added: branches/maven1/upstream/1.0.2/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,22 @@
+installers
+maven-*.tar.gz
+maven-*.zip
+bootstrap
+bootstrap-report
+docs
+maven.log
+target
+velocity.log*
+work
+*~
+build.properties
+.classpath
+.project
+.nbattrs
+lib
+*.ipr
+*.iws
+*.iml
+bin
+.checkclipse
+checkstyle-checkclipse.xml

Added: branches/maven1/upstream/1.0.2/KEYS
===================================================================
--- branches/maven1/upstream/1.0.2/KEYS	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/KEYS	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,60 @@
+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-----
+

Added: branches/maven1/upstream/1.0.2/LICENSE.txt
===================================================================
--- branches/maven1/upstream/1.0.2/LICENSE.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/LICENSE.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/NOTICE.txt
===================================================================
--- branches/maven1/upstream/1.0.2/NOTICE.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/NOTICE.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,2 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).

Added: branches/maven1/upstream/1.0.2/README.txt
===================================================================
--- branches/maven1/upstream/1.0.2/README.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/README.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,2 @@
+For build instructions, please see xdocs/start/bootstrap.xml.
+A similar document can be found at http://maven.apache.org/start/bootstrap.html.


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

Added: branches/maven1/upstream/1.0.2/build-bootstrap.xml
===================================================================
--- branches/maven1/upstream/1.0.2/build-bootstrap.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/build-bootstrap.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,456 @@
+<?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}/project.properties"/>
+  <property environment="env"/>
+  <property name="maven.home" value="${env.MAVEN_HOME}"/>
+
+  <target name="check-env" description="Check if environment variables are set">
+    <echo>maven.home = ${maven.home}</echo>
+    <fail unless="env.MAVEN_HOME" message="You MUST set MAVEN_HOME first"/>
+  </target>
+
+  <target name="env" depends="check-properties,check-env">
+   <echo>maven.home = ${maven.home}</echo>
+   <echo>maven.home.local = ${maven.home.local}</echo>
+   <echo>maven.repo.local = ${maven.repo.local}</echo>
+   <property name="cla-jar" value="commons-lang/jars/commons-lang-2.0.jar" />
+   <property name="clo-jar" value="commons-logging/jars/commons-logging-1.0.3.jar" />
+   <property name="chc-jar" value="commons-httpclient/jars/commons-httpclient-2.0.jar" />
+   <path id="bootstrap.libs">
+     <pathelement location="${maven.repo.local}/${cla-jar}" />
+     <pathelement location="${maven.repo.local}/${clo-jar}" />
+     <pathelement location="${maven.repo.local}/${chc-jar}" />
+   </path>
+<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>
+
+  <!-- ===================================================================== -->
+  <!-- B O O T S T R A P                                                     -->
+  <!-- ===================================================================== -->
+
+  <target name="bootstrap" depends="bootstrap-compile" description="Builds maven without needing maven previously installed.">
+
+<echo>
+|
+| LOADING BOOTSTRAP TASKDEF...
+|
+</echo>
+
+    <taskdef
+      name="bootstrap"
+      classname="org.apache.maven.BootstrapTask">
+      <classpath>
+        <path location="${maven.bootstrap.classes}"/>
+        <path refid="bootstrap.libs"/>
+      </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.get.jars.baseUrl}/"
+      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>
+
+    <!-- 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="xerces-*.jar" />
+      </fileset>
+    </move>
+
+    <!-- Don't duplicate endorsed files -->
+    <delete>
+      <fileset dir="${maven.bootstrap.install.dir}/lib">
+        <include name="xml-apis-*.jar" />
+        <include name="xerces-*.jar" />
+      </fileset>
+    </delete>
+
+    <!-- Install maven in the lib directory -->
+
+    <copy
+      file="${maven.bootstrap.dir}/maven.jar"
+      todir="${maven.bootstrap.install.dir}/lib"
+      overwrite="true"
+    />
+
+    <!-- Install maven in the local repository for the plugin builds -->
+
+    <copy
+      file="${maven.bootstrap.dir}/maven.jar"
+      todir="${maven.repo.local}/maven/jars"
+      overwrite="yes"
+    />
+    <copy
+      file="${maven.bootstrap.dir}/maven.jar"
+      todir="${maven.home.local}/repository/maven/jars"
+      overwrite="yes"
+    />
+
+    <copy todir="${maven.bootstrap.install.dir}/plugins">
+      <fileset dir="${maven.plugins.directory}" includes="${maven.bootstrap.plugins},project.xml" excludes="**/maven.xml,**/target/**" />
+    </copy>
+
+    <antcall target="clean-maven-home"/>
+
+    <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}"/>
+
+    <echo>
+|
+| INSTALLING THE PLUGINS...
+|
+    </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="maven:plugins-install"/>
+      <arg value="-Dbootstrapping=true"/>
+      <arg value="-e"/>
+    </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>
+
+<!-- Don't test the plugins, it breaks too often at the fault of rogue plugins
+    <echo>
+|
+| TESTING THE PLUGINS...
+|
+    </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="maven:plugins-test"/>
+      <arg value="-e"/>
+    </exec>
+-->
+
+    <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"/>
+    </exec>
+
+    <antcall target="clean-maven-home"/>
+
+    <!-- Use the newly created maven.jar -->
+
+    <copy
+      file="${basedir}/target/maven.jar"
+      todir="${maven.repo.local}/maven/jars"
+      overwrite="yes"
+    />
+
+    <copy
+      file="${basedir}/target/maven.jar"
+      todir="${maven.bootstrap.install.dir}/lib"
+      overwrite="yes"
+    />
+
+    <copy todir="${maven.bootstrap.install.dir}" overwrite="yes">
+      <fileset dir="${basedir}/src/xsd">
+        <include name="maven-project*.xsd"/>
+      </fileset>
+    </copy>
+
+    <copy
+      file="${basedir}/src/xsd/maven-navigation-1.0.xsd"
+      todir="${maven.bootstrap.install.dir}"
+      overwrite="yes"
+    />
+
+    <copy todir="${maven.home}">
+      <fileset dir="${maven.bootstrap.install.dir}"/>
+    </copy>
+
+    <chmod file="${maven.home}/bin/maven" perm="+x"/>
+  </target>
+
+  <!-- ===================================================================== -->
+  <!-- B O O T S T R A P  C O M P I L E                                      -->
+  <!-- ===================================================================== -->
+  <!-- Compile our bootstrap helper classes and the HttpUtils class.         -->
+  <!-- ===================================================================== -->
+
+  <target name="bootstrap-compile" depends="env,check-properties">
+
+    <delete dir="${maven.bootstrap.dir}"/>
+    <mkdir dir="${maven.bootstrap.classes}"/>
+
+    <mkdir dir="${maven.repo.local}/commons-lang/jars"/>
+    <mkdir dir="${maven.repo.local}/commons-logging/jars"/>
+    <mkdir dir="${maven.repo.local}/commons-httpclient/jars"/>
+    <get ignoreerrors="true" usetimestamp="true" dest="${maven.repo.local}/${cla-jar}" src="${maven.get.jars.baseUrl}/${cla-jar}" />
+    <get ignoreerrors="true" usetimestamp="true" dest="${maven.repo.local}/${clo-jar}" src="${maven.get.jars.baseUrl}/${clo-jar}" />
+    <get ignoreerrors="true" usetimestamp="true" dest="${maven.repo.local}/${chc-jar}" src="${maven.get.jars.baseUrl}/${chc-jar}" />
+
+    <javac
+      destdir="${maven.bootstrap.classes}"
+      debug="on"
+      deprecation="off"
+      optimize="off" classpathref="bootstrap.libs">
+      <src path="src"/>
+      <include name="bootstrap/**"/>
+      <include name="java/**/*DownloadMeter*"/>
+      <include name="java/**/HttpUtils*"/>
+      <include name="java/**/Base64*"/>
+    </javac>
+
+  </target>
+
+  <!-- ===================================================================== -->
+  <!-- P R O P E R T I E S  C H E C K                                        -->
+  <!-- ===================================================================== -->
+  <!-- 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-1,
+              check-maven-home-local-2,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>
+
+  </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>
+
+  <!-- doesn't mimic actual maven cause the properties files are loaded before -->
+  <target name="check-maven-home-local-1" if="env.MAVEN_HOME_LOCAL">
+    <property name="maven.home.local" location="${env.MAVEN_HOME_LOCAL}"/>
+  </target>
+  <target name="check-maven-home-local-2" >
+    <!-- last resort , if already set no worries -->
+    <property name="maven.home.local" location="${user.home}/.maven"/>
+  </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>
+
+  <target name="clean-maven-home">
+
+    <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>
+</project>

Added: branches/maven1/upstream/1.0.2/checkstyle-license.txt
===================================================================
--- branches/maven1/upstream/1.0.2/checkstyle-license.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/checkstyle-license.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/checkstyle.xml
===================================================================
--- branches/maven1/upstream/1.0.2/checkstyle.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/checkstyle.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+ */
+ -->
+
+<!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">
+
+    <!-- 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.0.2/gump.xml
===================================================================
--- branches/maven1/upstream/1.0.2/gump.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/gump.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,86 @@
+<?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.
+ */
+ -->
+
+
+<module name="maven">
+  <description>Java Project Management Tools</description>
+  <url href="http://jakarta.apache.org/turbine/maven/">
+  </url>
+  <cvs module="jakarta-turbine-maven" repository="jakarta">
+  </cvs>
+  <project name="maven">
+    <ant buildfile="build.xml" target="dist">
+      <property name="final.name" value="maven-@@DATE@@">
+      </property>
+    </ant>
+    <package>org.apache.maven</package>
+    <depend project="commons-beanutils">
+    </depend>
+    <depend project="commons-betwixt">
+    </depend>
+    <depend project="commons-cli">
+    </depend>
+    <depend project="commons-collections">
+    </depend>
+    <depend project="commons-digester">
+    </depend>
+    <depend project="commons-grant">
+    </depend>
+    <depend project="commons-graph">
+    </depend>
+    <depend project="commons-io">
+    </depend>
+    <depend project="commons-jelly">
+    </depend>
+    <depend project="commons-jexl">
+    </depend>
+    <depend project="commons-lang">
+    </depend>
+    <depend project="commons-logging">
+    </depend>
+    <depend project="dom4j">
+    </depend>
+    <depend project="forehead">
+    </depend>
+    <depend project="jakarta-ant">
+    </depend>
+    <depend project="jakarta-log4j">
+    </depend>
+    <depend project="werkz">
+    </depend>
+    <depend project="xml-apis">
+    </depend>
+    <depend project="xml-commons-which">
+    </depend>
+    <depend project="xml-xerces">
+    </depend>
+    <depend project="xml-xerces2">
+    </depend>
+    <work nested="target/classes">
+    </work>
+    <home nested="target">
+    </home>
+    <jar name="maven-@@DATE@@.jar">
+    </jar>
+    <javadoc module="jakarta-turbine-maven" nested="target/docs/apidocs">
+    </javadoc>
+    <nag to="turbine-maven-dev at jakarta.apache.org" from="maven development &lt;turbine-maven-dev at jakarta.apache.org&gt;">
+    </nag>
+  </project>
+</module>
\ No newline at end of file

Added: branches/maven1/upstream/1.0.2/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,423 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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="jar:jar"
+  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:mkdir dir="${maven.docs.dest}/xsd" />
+    <ant:copy tofile="${maven.docs.dest}/xsd/maven-project-3.0.0.xsd" file="${basedir}/src/xsd/maven-project.xsd" />
+    <attainGoal name="pdf"/>
+  </postGoal>
+
+  <goal name="maven:run-touchstone">
+    <maven:maven
+      descriptor="${basedir}/src/test/touchstone-build/project.xml"
+      goals="clean,jar:jar,touchstone-tests"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <!-- ================================================================== -->
+  <!-- B U I L D  P L U G I N S                                           -->
+  <!-- ================================================================== -->
+  <!-- Used by the bootstrap process to build all of Maven's plugins.     -->
+  <!-- ================================================================== -->
+
+  <goal 
+    name="maven:plugins-build"
+    description="Build each Maven plugin into an installable jar">
+
+    <maven:reactor
+      basedir="${maven.plugins.directory}"
+      includes="${maven.plugins.includes}"
+      excludes="${maven.plugins.excludes}"
+      goals="clean,plugin"
+      banner="Building"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal 
+    name="maven:plugins-test"
+    description="Test each Maven plugin">
+
+    <!-- Exclude broken plugin tests (some only broken inside the reactor -->
+    <j:set var="excludes" value="${maven.plugins.excludes},dashboard/**,dist/**,ear/**,hibernate/**,pdf/**"/>
+
+    <maven:reactor
+      basedir="${maven.plugins.directory}"
+      includes="${maven.plugins.includes}"
+      excludes="${excludes}"
+      goals="plugin:test"
+      banner="Testing"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal 
+    name="maven:plugins-install"
+    description="Install each Maven plugin">
+
+    <maven:reactor
+      basedir="${maven.plugins.directory}"
+      includes="${maven.plugins.includes}"
+      excludes="${maven.plugins.excludes}"
+      goals="clean,plugin:install"
+      banner="Installing"
+      ignoreFailures="false"
+    />
+  </goal>
+
+  <goal name="maven:plugins-clean"
+    description="Cleans all plugin projects">
+
+      <maven:reactor
+        basedir="${maven.plugins.directory}"
+        includes="${maven.plugins.includes}"
+        excludes="${maven.plugins.excludes}"
+        goals="clean"
+        banner="Building"
+        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:build-install" prereqs="clean,jar:jar">
+    <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 todir="${installerDir}">
+      <ant:fileset dir="${basedir}/src/xsd" />
+    </ant:copy>
+    
+    <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" />
+
+    <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"/>
+      </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: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">
+    <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}</ant:echo>
+          </j:if>
+          <j:if test="${version != null}">
+            <plugin artifactId="${reactorProject.artifactId}" groupId="maven" version="${version}" />
+          </j:if>
+        </j:forEach>
+      </plugins>
+    </j:file>
+  </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">
+    <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.dist.bin.assembly.dir" value="${installerDir}" />
+        <attainGoal name="nsis" />
+        <maven:get var="distDir" plugin="maven-dist-plugin" property="maven.dist.dir"/>
+        <ant:copy tofile="${maven.build.dir}/installer/${pom.artifactId}-${pom.currentVersion}.exe" file="${distDir}/${pom.artifactId}.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">
+    <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.0.2/plugin-profile.xml
===================================================================
--- branches/maven1/upstream/1.0.2/plugin-profile.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/plugin-profile.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<plugins>
+  <plugin groupId="maven" artifactId="maven-abbot-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-announcement-plugin" version="1.3">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-ant-plugin" version="1.8.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-antlr-plugin" version="1.2.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-appserver-plugin" version="2.0">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-artifact-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-ashkelon-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-aspectj-plugin" version="3.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-aspectwerkz-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-caller-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-castor-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-changelog-plugin" version="1.7.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-changes-plugin" version="1.5.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-checkstyle-plugin" version="2.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-clean-plugin" version="1.3">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-clover-plugin" version="1.6">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-console-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-cruisecontrol-plugin" version="1.6">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-dashboard-plugin" version="1.6">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-developer-activity-plugin" version="1.5.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-dist-plugin" version="1.6.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-docbook-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-ear-plugin" version="1.6">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-eclipse-plugin" version="1.9">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-ejb-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-faq-plugin" version="1.4">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-file-activity-plugin" version="1.5.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-genapp-plugin" version="2.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-gump-plugin" version="1.4">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-hibernate-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-html2xdoc-plugin" version="1.3.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-idea-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-j2ee-plugin" version="1.5.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jalopy-plugin" version="1.3.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jar-plugin" version="1.6.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-java-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-javacc-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-javadoc-plugin" version="1.7">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jboss-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jbuilder-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jcoverage-plugin" version="1.0.9">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jdee-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jdepend-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jdeveloper-plugin" version="1.4">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jdiff-plugin" version="1.4">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jellydoc-plugin" version="1.3.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jetty-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jira-plugin" version="1.1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jnlp-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-junit-report-plugin" version="1.5">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-junit-doclet-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-jxr-plugin" version="1.4.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-latex-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-latka-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-license-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-linkcheck-plugin" version="1.3.4">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-multichanges-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-multiproject-plugin" version="1.3.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-native-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-nsis-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-pdf-plugin" version="2.2.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-plugin-plugin" version="1.5.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-pmd-plugin" version="1.6">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-pom-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-rar-plugin" version="1.0">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-release-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-repository-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-scm-plugin" version="1.4.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-shell-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-simian-plugin" version="1.4">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-site-plugin" version="1.5.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-struts-plugin" version="1.3">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-tasklist-plugin" version="2.3">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-test-plugin" version="1.6.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-tjdo-plugin" version="1.0.0">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-uberjar-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-vdoclet-plugin" version="1.2">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-war-plugin" version="1.6.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-webserver-plugin" version="2.0">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-wizard-plugin" version="1.1">
+  </plugin>
+  <plugin groupId="maven" artifactId="maven-xdoc-plugin" version="1.8">
+  </plugin>
+</plugins>


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

Added: branches/maven1/upstream/1.0.2/plugins-site.xml
===================================================================
--- branches/maven1/upstream/1.0.2/plugins-site.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/plugins-site.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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/reference/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/reference/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}/reference/plugins"/>
+
+      <!-- copy them all to ${maven.docs.dest}/reference/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}/reference/plugins/${pluginName}/"/>
+        <copy toDir="${maven.docs.dest}/reference/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.0.2/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# P R O J E C T  P R O P E R T I E S
+# -------------------------------------------------------------------
+
+maven.final.name = maven
+maven.build.dir = ${basedir}/target
+maven.gen.docs = ${maven.build.dir}/generated-xdocs
+
+# We are targetting the 1.3 JVM and above
+#maven.compile.target=1.3
+maven.compile.source=1.3
+
+
+maven.jar.manifest = manifest.mf
+
+# -------------------------------------------------------------------
+# T E S T I N G
+# -------------------------------------------------------------------
+
+# 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
+
+# -------------------------------------------------------------------
+# C H E C K S T Y L E  P R O P E R T I E S
+# -------------------------------------------------------------------
+maven.checkstyle.properties = ${basedir}/checkstyle.xml
+maven.checkstyle.header.file = ${basedir}/checkstyle-license.txt
+
+# -------------------------------------------------------------------
+# P M D / C P D   P R O P E R T I E S
+# -------------------------------------------------------------------
+maven.pmd.cpd.enable = true
+
+# -------------------------------------------------------------------
+# S I M I A N   P R O P E R T I E S
+# -------------------------------------------------------------------
+maven.simian.linecount = 4
+
+# -------------------------------------------------------------------
+# J A V A D O C  P R O P E R T I E S
+# -------------------------------------------------------------------
+maven.javadoc.links = http://jakarta.apache.org/commons/jelly/apidocs/, http://jakarta.apache.org/commons/betwixt/apidocs/
+
+# -------------------------------------------------------------------
+# X D O C  P R O P E R T I E S
+# -------------------------------------------------------------------
+# Display the date on the Maven web site
+maven.xdoc.date = left
+maven.xdoc.date.format = dd MMMM yyyy HH:mm z
+
+# Display the maven version the web site is documenting
+maven.xdoc.version = ${pom.currentVersion}
+
+#------------------------------------------------------------------
+# N S I S   P R O P E R T I E S
+#------------------------------------------------------------------
+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
+
+#------------------------------------------------------------------
+# H T M L 2 X D O C   P R O P E R T I E S
+#------------------------------------------------------------------
+maven.html2xdoc.enable=true
+
+#------------------------------------------------------------------
+# P D F   P R O P E R T I E S
+#------------------------------------------------------------------
+maven.pdf.projectLogo=http://maven.apache.org/images/maven.gif
+maven.pdf.companyLogo=http://maven.apache.org/images/asf_logo_wide_clear.gif
+maven.pdf.navigationFile=navigation-pdf.xml
+
+#------------------------------------------------------------------
+# B O O T S T R A P
+#------------------------------------------------------------------
+
+maven.bootstrap.plugins = clean/**,jar/**,java/**,license/**,plugin/**,test/**
+maven.bootstrap.reactor = clean/project.xml,jar/project.xml,java/project.xml,license/project.xml,plugin/project.xml
+maven.plugins.directory = ${basedir}/../maven-plugins
+maven.plugins.includes = */project.xml
+# Touchstone is not built into Maven any more
+maven.plugins.excludes = examples/**,touchstone/**,touchstone-partner/**,plugin-parent/**,itest/**
+maven.plugins.profile = plugin-profile.xml
+
+maven.get.jars.baseUrl = http://www.ibiblio.org/maven
+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
+
+# jdk1.3 compat
+maven.junit.fork=yes
+maven.junit.sysproperties=maven.home
+
+# Distribution location
+maven.repo.central = www.apache.org
+maven.repo.central.directory = /www/www.apache.org/dist/java-repository/
+
+maven.xdoc.poweredby.image=

Added: branches/maven1/upstream/1.0.2/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,847 @@
+<?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>maven</id>
+  <name>Maven</name>
+  <currentVersion>1.0.2</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+    <logo>/images/apache-maven-project.png</logo>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+  <logo>/images/maven.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/</url>
+  <issueTrackingUrl>http://jira.codehaus.org/BrowseProject.jspa?id=10030</issueTrackingUrl>
+  <siteAddress>maven.apache.org</siteAddress>
+  <siteDirectory>/www/maven.apache.org/</siteDirectory>
+  <distributionSite>maven.apache.org</distributionSite>
+  <distributionDirectory>/www/www.apache.org/dist/java-repository/</distributionDirectory>
+  <repository>
+    <connection>scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:maven</connection>
+    <developerConnection>scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:maven</developerConnection>
+    <url>http://cvs.apache.org/viewcvs.cgi/maven/</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>
+  </versions>
+  <branches/>
+  <mailingLists>
+    <mailingList>
+      <name>Maven User List</name>
+      <subscribe>users-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>users-unsubscribe at maven.apache.org</unsubscribe>
+      <!--
+            <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=users@maven.apache.org</archive>
+      -->
+
+      <archive>http://marc.theaimsgroup.com/?l=turbine-maven-user</archive>
+    </mailingList>
+    <mailingList>
+      <name>Maven Developer List</name>
+      <subscribe>dev-subscribe at maven.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe at maven.apache.org</unsubscribe>
+      <!--
+            <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=dev@maven.apache.org</archive>
+      -->
+
+      <archive>http://marc.theaimsgroup.com/?l=turbine-maven-dev</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>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>maven 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>
+  </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>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>
+    <!-- leave dom4j as the first entry or the tests fail -->
+
+    <dependency>
+      <id>dom4j</id>
+      <version>1.4-dev-8</version>
+      <url>http://www.dom4j.org/</url>
+      <properties>
+        <description>ouch</description>
+      </properties>
+    </dependency>
+    <dependency>
+      <id>ant</id>
+      <version>1.5.3-1</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-optional</artifactId>
+      <version>1.5.3-1</version>
+      <url>http://jakarta.apache.org/ant/</url>
+    </dependency>
+    <!-- ant 1.6 deps - Ant 1.6 messes up any use of the "root" classloader for taskdefs
+    <dependency>
+      <id>ant</id>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-antlr</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-apache-bsf</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-apache-resolver</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-commons-logging</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-commons-net</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-icontract</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jai</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jakarta-bcel</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jakarta-log4j</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jakarta-oro</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jakarta-regexp</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-javamail</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jdepend</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jmf</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-jsch</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-junit</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-launcher</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-nodeps</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-starteam</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-swing</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-trax</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-weblogic</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+    <dependency>
+      <groupId>ant</groupId>
+      <artifactId>ant-xalan2</artifactId>
+      <version>1.6</version>
+      <url>http://ant.apache.org/</url>
+    </dependency>
+        ant-netrexx.jar
+        ant-stylebook.jar
+        ant-vaj.jar
+        ant-xalan1.jar
+        ant-xslp.jar
+     -->
+
+    <dependency>
+      <id>commons-betwixt</id>
+      <version>1.0-beta-1.20030111.103454</version>
+      <url>http://jakarta.apache.org/commons/betwixt/</url>
+    </dependency>
+    <dependency>
+      <id>commons-digester</id>
+      <version>1.4.1</version>
+      <url>http://jakarta.apache.org/commons/digester.html</url>
+    </dependency>
+    <dependency>
+      <id>commons-jelly</id>
+      <version>20030902.160215</version>
+      <url>http://jakarta.apache.org/commons/jelly/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-ant</artifactId>
+      <version>1.0</version>
+      <url>http://jakarta.apache.org/commons/jelly/libs/ant/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-define</artifactId>
+      <version>20030211.142932</version>
+      <url>http://jakarta.apache.org/commons/jelly/tags/define/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-util</artifactId>
+      <version>20030211.141939</version>
+      <url>http://jakarta.apache.org/commons/jelly/tags/util/</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-xml</artifactId>
+      <version>20040613.030723</version>
+      <url>http://jakarta.apache.org/commons/jelly/tags/xml/</url>
+    </dependency>
+    <dependency>
+      <id>commons-graph</id>
+      <version>0.8.1</version>
+      <url>http://jakarta.apache.org/commons/sandbox/graph/</url>
+    </dependency>
+    <dependency>
+      <id>commons-jexl</id>
+      <version>1.0-beta-1</version>
+      <url>http://jakarta.apache.org/commons/jexl/</url>
+    </dependency>
+    <dependency>
+      <id>commons-logging</id>
+      <version>1.0.3</version>
+      <url>http://jakarta.apache.org/commons/logging.html</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <id>werkz</id>
+      <version>20040426.222000</version>
+      <url>http://werkz.codehaus.org/</url>
+    </dependency>
+    <!-- Runtime dependencies -->
+
+    <dependency>
+      <id>commons-beanutils</id>
+      <version>1.6.1</version>
+      <url>http://jakarta.apache.org/commons/</url>
+    </dependency>
+    <dependency>
+      <id>commons-cli</id>
+      <version>1.0-beta-2</version>
+      <url>http://jakarta.apache.org/commons/cli/</url>
+    </dependency>
+    <dependency>
+      <id>commons-collections</id>
+      <version>2.1</version>
+      <url>http://jakarta.apache.org/commons/</url>
+    </dependency>
+    <dependency>
+      <id>commons-grant</id>
+      <version>1.0-beta-4</version>
+      <url>http://jakarta.apache.org/commons/sandbox/grant/</url>
+    </dependency>
+    <dependency>
+      <id>commons-io</id>
+      <version>20030203.000550</version>
+      <url>http://jakarta.apache.org/commons/</url>
+    </dependency>
+    <dependency>
+      <id>commons-lang</id>
+      <version>2.0</version>
+      <url>http://jakarta.apache.org/commons/lang.html</url>
+    </dependency>
+    <dependency>
+      <id>forehead</id>
+      <version>1.0-beta-5</version>
+    </dependency>
+    <dependency>
+      <id>log4j</id>
+      <version>1.2.8</version>
+      <url>http://jakarta.apache.org/log4j/</url>
+    </dependency>
+    <dependency>
+      <id>which</id>
+      <version>1.0</version>
+      <url>http://xml.apache.org/commons/components/which/index.html</url>
+    </dependency>
+    <!-- this is a dependency, but as the classes ship with ant, bootstrap will
+     fail with linkage errors if it's included and the junit tests are not
+     forked
+    -->
+
+    <dependency>
+      <id>xml-apis</id>
+      <version>1.0.b2</version>
+      <url>http://xml.apache.org/xerces2-j/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <id>xerces</id>
+      <version>2.4.0</version>
+      <url>http://xml.apache.org/xerces2-j/</url>
+      <properties>
+        <endorsed>true</endorsed>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus</artifactId>
+      <version>0.6</version>
+    </dependency>
+    <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven-jelly-tags</artifactId>
+      <version>1.0.1</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <nagEmailAddress>dev 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>
+  <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-checkstyle-plugin</report>
+    <report>maven-changes-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-jxr-plugin</report>
+    <report>maven-junit-report-plugin</report>
+    <report>maven-license-plugin</report>
+    <report>maven-tasklist-plugin</report>
+    <report>maven-pmd-plugin</report>
+    <report>maven-simian-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.0.2/release.xml
===================================================================
--- branches/maven1/upstream/1.0.2/release.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/release.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+maven.log

Added: branches/maven1/upstream/1.0.2/src/admin/create-checksums
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/create-checksums	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/create-checksums	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/create-checksums
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/admin/deploy-artifact
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-artifact	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-artifact	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-artifact
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/admin/deploy-artifact.bat
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-artifact.bat	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-artifact.bat	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-dist
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-dist	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-dist	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-dist
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/admin/deploy-dist.bat
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-dist.bat	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-dist.bat	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-jar
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-jar	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-jar	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-jar
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/admin/deploy-jar.bat
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-jar.bat	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-jar.bat	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-snapshot-jar
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/admin/deploy-snapshot-jar
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar.bat
===================================================================
--- branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar.bat	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/admin/deploy-snapshot-jar.bat	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-beta-2.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-2.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-2.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-beta-3.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-3.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-3.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-beta-4.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-4.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-4.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-beta-5.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-5.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-5.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-beta-6.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-6.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-6.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-beta-7.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-7.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-beta-7.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/announcements/1.0-rc1.ann
===================================================================
--- branches/maven1/upstream/1.0.2/src/announcements/1.0-rc1.ann	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/announcements/1.0-rc1.ann	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/bin/forehead.conf
===================================================================
--- branches/maven1/upstream/1.0.2/src/bin/forehead.conf	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bin/forehead.conf	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,35 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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/commons-grant-1.0-beta-4.jar
+    ${maven.home}/lib/ant-1.5.3-1.jar
+    ${maven.home}/lib/endorsed/xml-apis-1.0.b2.jar
+    ${maven.home}/lib/ant-optional-1.5.3-1.jar
+    ${maven.home}/lib/endorsed/xerces-2.4.0.jar
+    ${maven.home}/lib/commons-logging-1.0.3.jar
+    ${maven.home}/lib/log4j-1.2.8.jar
+
+[root.maven]
+    ${maven.home}/lib/*.jar
+    ${maven.home}/lib/endorsed/*.jar

Added: branches/maven1/upstream/1.0.2/src/bin/maven
===================================================================
--- branches/maven1/upstream/1.0.2/src/bin/maven	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bin/maven	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,163 @@
+#!/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
+
+if [ -z "$MAVEN_HOME" ] ; then
+  # try to find MAVEN
+  if [ -d /opt/maven ] ; then
+    MAVEN_HOME=/opt/maven
+  fi
+
+  if [ -d "$HOME/maven" ] ; then
+    MAVEN_HOME="$HOME/maven"
+  fi
+
+  ## resolve links - $0 may be a link to maven's home
+  PRG=$0
+  saveddir=`pwd`
+
+  # need this for relative symlinks
+  PRGDIR=`dirname "$PRG"`
+  cd "$PRGDIR"
+
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '.*/.*' > /dev/null; then
+  PRG="$link"
+    else
+  PRG="$PRGDIR/$link"
+    fi
+  done
+
+  MAVEN_HOME="$PRGDIR/.."
+
+  # make it fully qualified
+  MAVEN_HOME=`cd "$MAVEN_HOME" && pwd`
+
+  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"
+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.0.2/src/bin/maven
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/bin/maven.bat
===================================================================
--- branches/maven1/upstream/1.0.2/src/bin/maven.bat	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bin/maven.bat	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,154 @@
+ 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 "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+
+ at REM set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" @setlocal
+
+ 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.
+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.
+goto end
+
+:chkMHome
+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.
+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.
+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_MAIN_CLASS="com.werken.forehead.Forehead"
+SET MAVEN_ENDORSED="%JAVA_HOME%\lib\endorsed;%MAVEN_HOME%\lib\endorsed"
+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%
+ at REM %MAVEN_JAVA_EXE% -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl "-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%
+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%
+ at REM %MAVEN_JAVA_EXE% -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl "-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%
+
+:end
+ at REM set local scope for the variables with windows NT shell
+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
+ at endlocal
+
+:postExec
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+ at REM pause the batch file if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+

Added: branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapPomParser.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapPomParser.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapPomParser.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,193 @@
+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.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 (rawName.equals("dependency"))
+        {
+            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 (rawName.equals("dependency"))
+        {
+            dependencies.add(currentDependency);
+            insideDependency = false;
+        }
+        else if (rawName.equals("id") && insideDependency)
+        {
+            currentDependency.setId(getBodyText());
+        }
+        else if (rawName.equals("version") && insideDependency)
+        {
+            currentDependency.setVersion(getBodyText());
+        }
+        else if (rawName.equals("jar") && insideDependency)
+        {
+            currentDependency.setJar(getBodyText());
+        }
+        else if (rawName.equals("type") && insideDependency)
+        {
+            currentDependency.setType(getBodyText());
+        }
+        else if (rawName.equals("groupId") && insideDependency)
+        {
+            currentDependency.setGroupId(getBodyText());
+        }
+        else if (rawName.equals("artifactId") && 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.0.2/src/bootstrap/org/apache/maven/BootstrapTask.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapTask.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/BootstrapTask.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,507 @@
+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.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.util.HttpUtils;
+import org.apache.maven.util.BootstrapDownloadMeter;
+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
+    {
+        for ( Iterator j = getFiles().iterator(); j.hasNext();)
+        {
+            try
+            {
+                String file = (String) j.next();
+
+                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() )
+                {
+                    directory.mkdirs();
+                }
+
+                if ( destinationFile.exists() )
+                {
+                    log( "Destination file " + destinationFile + " exists. Not dowloading." );
+
+                    continue;
+                }
+
+                log( "Downloading dependency: " + baseUrl + file );
+
+                int numRetries = MAX_RETRIES;
+
+                while ( numRetries >= 0 )
+                {
+                    try
+                    {
+                        HttpUtils.getFile( baseUrl + file,
+                                           destinationFile,
+                                           ignoreErrors,
+                                           useTimestamp,
+                                           proxyHost,
+                                           proxyPort,
+                                           proxyUserName,
+                                           proxyPassword, loginHost, loginDomain, new BootstrapDownloadMeter() );
+                        break;
+                    }
+                    catch ( Exception e )
+                    {
+                        numRetries--;
+
+                        continue;
+                    }
+                }
+                if ( !destinationFile.exists() )
+                {
+                    throw new Exception( "Failed to download " + baseUrl + file );
+                }
+            }
+            catch ( Exception e )
+            {
+                throw new BuildException( 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.0.2/src/bootstrap/org/apache/maven/Dependency.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/Dependency.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/Dependency.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,289 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Dependency.java 122098 2004-03-02 05:38:55Z evenisse $
+ */
+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
+             && !value.trim().equals("") )
+        {
+            return true;
+        }
+
+        return false;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/bootstrap/org/apache/maven/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/conf/defaults.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/conf/defaults.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/conf/defaults.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,85 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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.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
+# -------------------------------------------------------------------
+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.build = MAVEN_BUILD_NOT_SET
+maven.username=USERNAME_NOT_SET
+maven.remote.group=maven
+
+maven.property.inheritance=true

Added: branches/maven1/upstream/1.0.2/src/conf/driver.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/conf/driver.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/conf/driver.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/conf/driver.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/conf/driver.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/conf/driver.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/conf/log4j.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/conf/log4j.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/conf/log4j.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/installer/nsis/before-install.nsh
===================================================================
--- branches/maven1/upstream/1.0.2/src/installer/nsis/before-install.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/installer/nsis/before-install.nsh	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,2 @@
+     Call AssertJavaHome
+

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


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

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


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

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


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

Added: branches/maven1/upstream/1.0.2/src/installer/nsis/registry-uninstall.nsh
===================================================================
--- branches/maven1/upstream/1.0.2/src/installer/nsis/registry-uninstall.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/installer/nsis/registry-uninstall.nsh	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,4 @@
+  ; Remove $${MAVEN_HOME}
+  Push "MAVEN_HOME"
+  Call un.DeleteEnvStr
+

Added: branches/maven1/upstream/1.0.2/src/installer/nsis/registry.nsh
===================================================================
--- branches/maven1/upstream/1.0.2/src/installer/nsis/registry.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/installer/nsis/registry.nsh	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/installer/nsis/startmenu-shortcuts.nsh
===================================================================
--- branches/maven1/upstream/1.0.2/src/installer/nsis/startmenu-shortcuts.nsh	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/installer/nsis/startmenu-shortcuts.nsh	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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/reference/user-guide.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Core Plugins.lnk" "http://maven.apache.org/reference/plugins/core-plugins.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Optional Plugins.lnk" "http://maven.apache.org/reference/plugins/optional/optional.html"
+  CreateShortCut "${PROJECT_STARTMENU_FOLDER}\Reference.lnk" "http://maven.apache.org/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.0.2/src/java/org/apache/maven/AbstractMavenComponent.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AbstractMavenComponent.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AbstractMavenComponent.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,76 @@
+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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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;
+    }
+
+    /** @see MavenUtils#getMessage */
+    public String getMessage( final String messageId )
+    {
+        return MavenUtils.getMessage( messageId );
+    }
+
+    /** @see MavenUtils#getMessage */
+    public String getMessage( final String messageId, final Object variable )
+    {
+        return MavenUtils.getMessage( messageId, variable );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AntProjectBuilder.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AntProjectBuilder.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/AntProjectBuilder.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,63 @@
+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.grant.GrantProject;
+import org.apache.commons.jelly.tags.ant.AntTagLibrary;
+import org.apache.maven.jelly.JellyBuildListener;
+import org.apache.maven.jelly.JellyPropsHandler;
+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.0.2/src/java/org/apache/maven/ArtifactListBuilder.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ArtifactListBuilder.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ArtifactListBuilder.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 org.apache.commons.lang.StringUtils;
+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 java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: ArtifactListBuilder.java 122503 2004-12-04 07:07:07Z brett $
+ */
+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.0.2/src/java/org/apache/maven/DependencyClasspathBuilder.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/DependencyClasspathBuilder.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/DependencyClasspathBuilder.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 org.apache.maven.project.Dependency;
+import org.apache.maven.project.Project;
+import org.apache.maven.repository.Artifact;
+
+import java.util.Iterator;
+
+/**
+ * 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 122254 2004-05-05 11:02:44Z brett $
+ */
+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.getId(), artifact.getPath() );
+        }
+
+        return classpath.toString();
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/GoalException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/GoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/GoalException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,36 @@
+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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/MavenConstants.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenConstants.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenConstants.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,174 @@
+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 122358 2004-07-06 12:45:48Z brett $
+ */
+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_LOGINHOST = "maven.proxy.ntlm.host";
+    /** Proxy loginDomain tag. */
+    public static final String PROXY_LOGINDOMAIN = "maven.proxy.ntlm.domain";
+
+    /** 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.0.2/src/java/org/apache/maven/MavenException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,141 @@
+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://jakarta.apache.org/ant/">Ant's</a> BuildException
+ *
+ * @version $Id: MavenException.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/MavenSession.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenSession.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenSession.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,281 @@
+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.jelly.MavenJellyContext;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.project.Project;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+
+/**
+ * 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 122455 2004-10-31 01:01:56Z brett $
+ *
+ * @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 Exception If there is an error while
+     *          reading the project descriptor.
+     */
+    private void initializeRootProject()
+        throws Exception
+    {
+        File descriptorFile = getRootDescriptorFile();
+
+        if ( descriptorFile.exists() )
+        {
+            if ( descriptorFile.length() == 0 )
+            {
+                throw new Exception( 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 );
+    }
+
+    public Project getPluginProjectFromGoal( String goal ) throws MavenException
+    {
+        return pluginManager.getPluginProjectFromGoal( goal );
+    }
+
+    public Set getProjectGoals( Project project ) throws MavenException
+    {
+        return pluginManager.getGoalNames( project );
+    }
+
+    public Collection getPluginList()
+    {
+        return pluginManager.getPluginList();
+    }
+}
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenUtils.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/MavenUtils.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,1134 @@
+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 com.werken.forehead.ForeheadClassLoader;
+import org.apache.commons.betwixt.XMLIntrospector;
+import org.apache.commons.betwixt.io.BeanReader;
+import org.apache.commons.betwixt.io.BeanWriter;
+import org.apache.commons.betwixt.strategy.DecapitalizeNameMapper;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.digester.ExtendedBaseRules;
+import org.apache.commons.digester.Rule;
+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.lang.StringUtils;
+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.BaseObject;
+import org.apache.maven.project.Project;
+import org.apache.maven.util.StringInputStream;
+import org.apache.tools.ant.DirectoryScanner;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParserFactory;
+import java.beans.IntrospectionException;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+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;
+
+/**
+ * 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>
+ * @version $Id: MavenUtils.java 122498 2004-12-03 21:40:27Z brett $
+ *
+ * @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 );
+
+    /** we want to parse something */
+    private static final ThreadLocal xmlReaderPool = new ThreadLocal();
+
+    /** Should we cache and reuse the introspector */
+    private static boolean cacheIntrospector = true;
+
+    /** The singleton introspector if caching is enabled */
+    private static XMLIntrospector singletonIntrospector;
+
+    /** Project Bean Reader */
+    private static BeanReader projectBeanReader;
+
+    /** Map of loaded POMs. */
+    private static HashMap parentPoms = new HashMap();
+
+    /**
+     * 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);
+        }
+
+        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;
+        try
+        {
+            project = (Project) getProjectBeanReader().parse( projectDescriptor );
+        }
+        catch (Exception e)
+        {
+            throw new MavenException("Error parsing project.xml '" + projectDescriptor.getAbsolutePath() + "'", e);
+        }
+
+        // 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 );
+        }
+
+        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;
+    }
+
+    /**
+     * Create a project bean reader. We use it more than once so we don't want
+     * to create it more than once.
+     *
+     * @return a {@link BeanReader} capable of reading {@link Project projects}
+     * @throws IntrospectionException when creating a bean reader
+     * @throws SAXException when an error occurs parsing the XML
+     * @throws ParserConfigurationException when a JAXP parser can't be created
+     */
+    private static BeanReader getProjectBeanReader()
+        throws IntrospectionException, SAXException, ParserConfigurationException
+    {
+        if ( projectBeanReader == null )
+        {
+            projectBeanReader = createBeanReader( Project.class );
+        }
+
+        return projectBeanReader;
+    }
+
+    /**
+     * 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 IntrospectionException when there are errors creating a string from the project for interpolation
+     * @throws SAXException when reading the interpolated POM fails
+     * @throws IOException when there are errors reading
+     * @throws ParserConfigurationException when a JAXP parser can't be created
+     */
+    private static Project getJellyProject( Project project )
+        throws IOException, SAXException, IntrospectionException, ParserConfigurationException
+    {
+        // 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 IOException if there is an error parsing the project
+     * @throws SAXException if there is a sax error parsing the project
+     * @throws IntrospectionException when there are errors creating a string from the project
+     * @throws ParserConfigurationException when a JAXP parser can't be created
+     */
+    private static Project getInterpolatedPOM(Project project, JellyContext context)
+        throws IOException, SAXException, IntrospectionException, ParserConfigurationException
+    {
+        String projectString = getProjectString(project);
+        Expression e = JellyUtils.decomposeExpression( projectString, context );
+        String newProjectString = e.evaluateAsString( context );
+        project = (Project) getProjectBeanReader().parse( new StringReader( newProjectString ) );
+        return project;
+    }
+
+    /**
+     * @return an {@link InputStream} for the given project
+     * @param project a {@link Project maven project}
+     * @throws MavenException when reading the project
+     */
+    public static InputStream getProjectInputStream( Project project )
+    throws MavenException
+    {
+        try
+        {
+            return new StringInputStream( getProjectString( project ) );
+        }
+        catch (IOException e)
+        {
+            throw new MavenException("Error writing the project", e);
+        }
+        catch (IntrospectionException e)
+        {
+            throw new MavenException("Error introspecting the project", e);
+        }
+        catch (SAXException e)
+        {
+            throw new MavenException("Error parsing the project as XML", e);
+        }
+    }
+
+    /**
+     * Create an XML string from a project.
+     *
+     * @param project MavenSession project to turn into an XML representation.
+     * @return XML representation of the project
+     * @throws IOException writing the project fails
+     * @throws IntrospectionException when there are problems writing the project bean as a string
+     * @throws SAXException when there are problems writing the project bean as a string
+     */
+    private static String getProjectString( Project project ) throws IOException, IntrospectionException, SAXException
+    {
+        ByteArrayOutputStream projectStream = new ByteArrayOutputStream();
+        BeanWriter beanWriter = new BeanWriter( projectStream );
+        beanWriter.setXMLIntrospector( createXMLIntrospector() );
+
+        beanWriter.setWriteIDs( true );
+        beanWriter.write( project );
+
+        return projectStream.toString( System.getProperty( "file.encoding" ) );
+    }
+
+    /**
+     * 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;
+    }
+
+
+    /**
+     * Creates a new instance of BeanReader
+     *
+     * @param clazz the class to register with the reader
+     * @return a {@link BeanReader bean reader}
+     * @throws IntrospectionException when there are errors registering the provided class
+     * @throws SAXException when there are errors getting an XML reader
+     * @throws ParserConfigurationException when there are errors getting an XML reader
+     */
+    public static BeanReader createBeanReader( Class clazz )
+    throws IntrospectionException, SAXException, ParserConfigurationException
+    {
+        BeanReader beanReader = new BeanReader( getXMLReader() );
+        beanReader.setRules( new ExtendedBaseRules() );
+        beanReader.addRule( "*/properties/?", new MetaPropertiesRule() );
+
+        beanReader.setXMLIntrospector( getXMLIntrospector() );
+        beanReader.registerBeanClass( clazz );
+
+        return beanReader;
+    }
+
+    /**
+     * If caching is enabled then this method will return a pooled introspector
+     *
+     * @return XMLIntrospector used for processing the MavenSession xml-based POM.
+     */
+    public static XMLIntrospector getXMLIntrospector()
+    {
+        if ( cacheIntrospector )
+        {
+            if ( singletonIntrospector == null )
+            {
+                singletonIntrospector = createXMLIntrospector();
+            }
+            return singletonIntrospector;
+        }
+        return createXMLIntrospector();
+    }
+
+    /**
+     * Create the type of XMLIntrospector that is used to read all MavenSession style
+     * XML files.
+     *
+     * @return Betwixt XMLIntrospector
+     */
+    private static XMLIntrospector createXMLIntrospector()
+    {
+        XMLIntrospector introspector = new XMLIntrospector();
+
+        introspector.setAttributesForPrimitives( false );
+        introspector.setElementNameMapper( new DecapitalizeNameMapper() );
+
+        return introspector;
+    }
+
+    /**
+     * Get the XMLReader to use for processing XML related resources.
+     *
+     * @return an XMLReader which is pooled per thread
+     * @throws SAXException when the reader can't be created
+     * @throws ParserConfigurationException when the reader can't be created
+     */
+    public static XMLReader getXMLReader() throws SAXException, ParserConfigurationException
+    {
+        XMLReader parser = (XMLReader) xmlReaderPool.get();
+        if ( parser == null )
+        {
+            parser = createXMLReader();
+            xmlReaderPool.set( parser );
+        }
+        return parser;
+    }
+
+    /**
+     * Creates a new XMLReader instance
+     *
+     * @return XMLReader used for parsing XML related maven resource.
+     * @throws SAXException If there are errors creating the reader
+     * @throws ParserConfigurationException If there are errors creating the SAX parser to use
+     */
+    private static XMLReader createXMLReader() throws SAXException, ParserConfigurationException
+    {
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+
+        factory.setNamespaceAware( true );
+
+        return factory.newSAXParser().getXMLReader();
+    }
+
+    /**
+     * 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;
+    }
+
+    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 )
+    {
+        try
+        {
+            if ( file.exists() )
+            {
+                return loadProperties( new FileInputStream (file) );
+            }
+        }
+        catch ( Exception e )
+        {
+            // ignore
+            log.debug("Unexpected error loading properties", e);
+        }
+
+        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;
+    }
+
+    // ------------------------------------------------------------
+    // M E T A  P R O P E R T I E S  R U L E  C L A S S
+    // ------------------------------------------------------------
+
+    /**
+     * A simple digester rule for populating an object in the POM
+     * with meta properties.
+     */
+    static class MetaPropertiesRule
+        extends Rule
+    {
+        /** The body of the found property. */
+        private String value;
+
+        /**
+         * Constructor for the InfoRule object
+         */
+        public MetaPropertiesRule()
+        {
+        }
+
+        /**
+         * Process the body of this element.
+         *
+         * @param namespace the namespace
+         * @param name the tag name
+         * @param text the body text
+         */
+        public void body(String namespace, String name, String text)
+        {
+            this.value = text;
+        }
+
+        /**
+         * Finish off this element.
+         * @param namespace the namespace of the element
+         * @param elementName the name of the element
+         */
+        public void end(String namespace, String elementName)
+        {
+            BaseObject baseObject = (BaseObject) getDigester().peek();
+            String name = getDigester().getCurrentElementName();
+            baseObject.addProperty( name + ":" + value );
+        }
+    }
+
+    /** 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 new File( basedir, dir ).getCanonicalPath();
+        }
+        else
+        {
+            return f.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();
+        String canonicalPath = new File( path ).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() );
+            }
+        }
+        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 )
+    {
+        System.out.println( "ClassLoader name: " + classLoader.getName() );
+
+        URL[] urls = classLoader.getURLs();
+
+        for ( int i = 0; i < urls.length; i++ )
+        {
+            System.out.println( "urls[" + i + "] = " + urls[i] );
+        }
+
+        ClassLoader parent = classLoader.getParent();
+        if ( parent != null && parent instanceof ForeheadClassLoader )
+        {
+            System.out.println( "Displaying Parent classloader: " );
+            displayClassLoaderContents( ( ForeheadClassLoader ) classLoader.getParent());
+        }
+    }
+
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/NoGoalException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/NoGoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/NoGoalException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,39 @@
+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 run Maven, without having enough information to
+ * find the appropriate goal.
+ *
+ * @author <a href="mailto:bwalding at apache.org">Ben Walding</a>
+ * @version $Id: NoGoalException.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class NoGoalException
+    extends GoalException
+{
+    /** Construct with an unknown goal name.
+     *
+     *  @param message The message.
+     */
+    public NoGoalException( String message )
+    {
+        super( message );
+    }
+
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/UnknownGoalException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/UnknownGoalException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/UnknownGoalException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/ant/MavenTask.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/MavenTask.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/MavenTask.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,192 @@
+package org.apache.maven.ant;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT 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 com.werken.forehead.Forehead;
+
+import org.apache.maven.MavenConstants;
+import org.apache.maven.cli.App;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * Allows Ant to "wrap" Maven.
+ *
+ * One might use it in an ant build.xml thusly:
+ <pre>
+ &lt;target name="masterbuild">
+ &lt;taskdef name="maven" classname="org.apache.maven.ant.MavenTask"/>
+ &lt;maven mavenHome="/usr/local/maven"
+ goalName="masterbuild"
+ projectBuildFile="maven.xml"
+ projectFileName="project-CurrentMavenGeneration.xml"
+ toolsJar="/usr/local/jdk/lib/tools.jar"
+ />
+ &lt;/target>
+ </pre>
+ *
+ * @author <a href="mailto:jjohnson at imperitek.com">James CE Johnson</a>
+ * @version 1.0
+ */
+public class MavenTask
+    extends Task
+{
+    /** Project file name. */
+    private String projectFileName = App.POM_FILE_NAME;
+
+    /** Project build file. */
+    private String projectBuildFile = MavenConstants.BUILD_FILE_NAME;
+
+    /** Goal name. */
+    private String goalName = null;
+
+    /** Maven home. */
+    private String mavenHome = null;
+
+    /** Tools JAR. */
+    private String toolsJar = null;
+
+    /**
+     * Gets the value of projectFileName
+     *
+     * @return the value of projectFileName
+     */
+    public String getProjectFileName()
+    {
+        return this.projectFileName;
+    }
+
+    /**
+     * Sets the value of projectFileName (e.g. - project.xml)
+     *
+     * @param argProjectFileName Value to assign to this.projectFileName
+     */
+    public void setProjectFileName( String argProjectFileName )
+    {
+        this.projectFileName = argProjectFileName;
+    }
+
+    /**
+     * Gets the value of projectBuildFile
+     *
+     * @return the value of projectBuildFile
+     */
+    public String getProjectBuildFile()
+    {
+        return this.projectBuildFile;
+    }
+
+    /**
+     * Sets the value of projectBuildFile (e.g. - maven.xml)
+     *
+     * @param argProjectBuildFile Value to assign to this.projectBuildFile
+     */
+    public void setProjectBuildFile( String argProjectBuildFile )
+    {
+        this.projectBuildFile = argProjectBuildFile;
+    }
+
+    /**
+     * Gets the value of goalName
+     *
+     * @return the value of goalName
+     */
+    public String getGoalName()
+    {
+        return this.goalName;
+    }
+
+    /**
+     * Sets the value of goalName
+     *
+     * @param argGoalName Value to assign to this.goalName
+     */
+    public void setGoalName( String argGoalName )
+    {
+        this.goalName = argGoalName;
+    }
+
+    /**
+     * Gets the value of mavenHome
+     *
+     * @return the value of mavenHome
+     */
+    public String getMavenHome()
+    {
+        return this.mavenHome;
+    }
+
+    /**
+     * Sets the value of mavenHome
+     *
+     * @param argMavenHome Value to assign to this.mavenHome
+     */
+    public void setMavenHome( String argMavenHome )
+    {
+        this.mavenHome = argMavenHome;
+    }
+
+    /**
+     * Gets the value of toolsJar
+     *
+     * @return the value of toolsJar
+     */
+    public String getToolsJar()
+    {
+        return this.toolsJar;
+    }
+
+    /**
+     * Sets the value of toolsJar
+     *
+     * @param argToolsJar Value to assign to this.toolsJar
+     */
+    public void setToolsJar( String argToolsJar )
+    {
+        this.toolsJar = argToolsJar;
+    }
+
+    /**
+     * Does the work.
+     *
+     * @exception BuildException Thrown in unrecoverable error.
+     */
+    public void execute()
+        throws BuildException
+    {
+        // I'm pretty sure this isn't the *best* way to get the job
+        // done but at the same time I'm pretty sure it *is* the
+        // quickest means to my desired end...
+        System.setProperty( MavenConstants.MAVEN_HOME, this.getMavenHome() );
+        System.setProperty( "forehead.conf.file",
+                            this.getMavenHome() + "/bin/forehead.conf" );
+        System.setProperty( "tools.jar", this.getToolsJar() );
+
+        String[] args = {"-p" + this.getProjectFileName(), this.getGoalName()};
+
+        try
+        {
+            Forehead.main( args );
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+            throw new BuildException( e );
+        }
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/ant/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.ant</title>
+</head>
+<body>
+
+  <p>Ant tasks and data types provided by Maven</p>
+
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/App.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/App.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/App.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,1252 @@
+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 com.werken.werkz.NoActionDefinitionException;
+import com.werken.werkz.NoSuchGoalException;
+import com.werken.werkz.UnattainableGoalException;
+
+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.maven.MavenConstants;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenSession;
+import org.apache.maven.MavenUtils;
+import org.apache.maven.NoGoalException;
+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 java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.MalformedURLException;
+import java.text.BreakIterator;
+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;
+
+/**
+ * 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 122455 2004-10-31 01:01:56Z brett $
+ *
+ * @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";
+
+    // ------------------------------------------------------------
+    // 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 );
+
+    /** 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();
+    }
+
+    /**
+     * 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();
+        }
+
+        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();
+        }
+
+        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;
+            System.err.println( e.getLocalizedMessage() );
+            returnCode = RC_FAILED_DEPENDENCY;
+        }
+        catch ( ChecksumVerificationException e )
+        {
+            failed = true;
+            System.err.println( e.getLocalizedMessage() );
+            returnCode = RC_FAILED_DEPENDENCY;
+        }
+        catch ( UnknownGoalException e )
+        {
+            failed = true;
+            System.err.println( "BUILD FAILED" );
+            System.err.println( "Goal \"" + e.getGoalName()
+                                + "\" does not exist in this project." );
+            returnCode = RC_NO_GOAL;
+        }
+        catch ( NoSuchGoalException e )
+        {
+            failed = true;
+            System.err.println( "BUILD FAILED" );
+            System.err.println( e.getMessage() );
+            System.err.println( "A plugin has attempted to use a goal that does not exist" );
+            returnCode = RC_NO_GOAL;
+        }
+        catch ( NoGoalException e )
+        {
+            failed = true;
+            System.err.println( "BUILD FAILED" );
+            System.err.println( e.getMessage() );
+            returnCode = RC_NO_GOAL;
+        }
+        catch ( RepoConfigException e )
+        {
+            failed = true;
+            System.err.println( e.getLocalizedMessage() );
+            returnCode = RC_BAD_REPO;
+        }
+        catch ( NoActionDefinitionException e )
+        {
+            failed = true;
+            System.err.println( "INTERNAL ERROR" );
+            System.err.println( "Reference made to goal '"
+                                + e.getGoal().getName()
+                                + "' which has no definition." );
+            System.err.println( "" );
+            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();
+
+            System.err.println( "File...... " + fileName );
+            System.err.println( "Element... " + elementName );
+            System.err.println( "Line...... " + lineNumber );
+            System.err.println( "Column.... " + column );
+
+            System.err.println( msg );
+
+            if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+            {
+                e.printStackTrace();
+            }
+            displayBugReportHelp();
+        }
+        catch ( Throwable t )
+        {
+            returnCode = RC_OTHER_FAILURE;
+            failed = true;
+            t.printStackTrace();
+            displayBugReportHelp();
+        }
+
+        if ( !failed )
+        {
+            log.info( "BUILD SUCCESSFUL" );
+        }
+
+        final long mb = 1024 * 1024;
+        System.gc();
+        Runtime r = Runtime.getRuntime();
+        log.debug( "Final Memory: " + ((r.totalMemory() - r.freeMemory()) / mb) + "M/" + (r.totalMemory() / mb) + "M");
+
+        Date fullStop = new Date();
+
+        long fullDiff = fullStop.getTime() - fullStart.getTime();
+
+        log.info( "Total time: " + formatTime( fullDiff ) );
+        log.info( "Finished at: " + 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
+     */
+    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()
+    {
+        String message = "You have encountered an unknown error running Maven. "
+            + "Please help us to correct this problem by following these simple steps:\n"
+            + "- read the Maven FAQ at http://maven.apache.org/faq.html\n"
+            + "- run the same command again with the '-e' parameter, eg maven -e jar\n"
+            + "- search the maven-user archives for the error at\n"
+            + "    http://nagoya.apache.org/eyebrowse/SummarizeList?listName=users@maven.apache.org\n"
+            + "- post the output of maven -e to JIRA at\n"
+            + "    http://jira.codehaus.org/BrowseProject.jspa?id=10030 (you must sign up first)\n"
+            + "- run 'maven --info' and post the output as the environment to the bug above\n";
+
+        log.info( "" );
+        log.info( wrapConsoleMessage( message, 0, CONSOLE_WIDTH ) );
+        log.info( "" );
+    }
+
+    /**
+     * Display the project help if the option is present, then exit
+     */
+    private void displayProjectHelp() throws MavenException
+    {
+        if ( getCli().hasOption( DISPLAY_USAGE ) )
+        {
+            Set goals = mavenSession.getProjectGoals( mavenSession.getRootProject() );
+
+            String title = "Project Goals";
+            log.info( title );
+            log.info( format( "", title.length(), '=' ) );
+
+            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( "Installed plugins:"  );
+            for ( Iterator i = mavenSession.getPluginList().iterator(); i.hasNext(); )
+            {
+                log.info( "  " + i.next() );
+            }
+
+            Properties buildProperties = new Properties();
+            try
+            {
+                buildProperties.load( new FileInputStream( System.getProperty( "user.home" ) + "/build.properties" ) );
+            }
+            catch ( IOException e )
+            {
+                log.info( "Exception reading build.properties: " + e.getMessage() );
+            }
+            log.info( "Home Build properties: " + 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;
+
+        System.err.println( "" );
+        System.err.println( "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();
+                    }
+                }
+                System.err.println( "File...... " + fileName );
+                System.err.println( "Element... " + elementName );
+                System.err.println( "Line...... " + lineNumber );
+                System.err.println( "Column.... " + column );
+            }
+            else
+            {
+                if ( getCli().hasOption( DISPLAY_STACKTRACE ) )
+                {
+                    rootCause.printStackTrace();
+                }
+                msg = rootCause.getLocalizedMessage();
+
+                if ( msg == null )
+                {
+                    msg = rootCause.getClass().getName();
+                }
+            }
+        }
+        else
+        {
+            msg = e.getLocalizedMessage();
+        }
+
+        System.err.println( 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( "[Unable to load driver properties: " + e );
+        }
+        finally
+        {
+            try { is.close(); } catch ( IOException 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 = "Available [Plugins] / Goals";
+        if ( pluginOnly )
+        {
+            title = ( plugin == null ? "Available plugins" : "Goals in " + plugin );
+        }
+        log.info( title );
+        log.info( format( "", title.length(), '=' ) );
+
+        Set goals = mavenSession.getAllGoalNames();
+        displayGoals( pluginOnly, plugin, 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( "" );
+    }
+
+    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 ) );
+    }
+
+    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( "Undocumented goals : " );
+        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();
+    }
+
+    private String wrapConsoleLine( String msg, int wrapIndent, int lineWidth )
+    {
+        int offset = lineWidth - wrapIndent;
+        if ( msg.length() <= offset )
+        {
+            return msg;
+        }
+        else
+        {
+            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 + " minutes " + secs + " seconds";
+        }
+        else
+        {
+            return secs + " 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.0.2/src/java/org/apache/maven/cli/CLIManager.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/CLIManager.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/CLIManager.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,197 @@
+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;
+import org.apache.env.Which;
+
+/** 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).
+         */
+        options.addOption( OptionBuilder
+                           .withLongOpt( "nobanner" )
+                           .withDescription( "Suppress logo banner" )
+                           .create( 'b' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "define" )
+                           .hasArg()
+                           .withDescription( "Define a system property" )
+                           .create( 'D' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "dir" )
+                           .hasArg()
+                           .withDescription( "Set effective working directory (ignored with -p or -f)" )
+                           .create( 'd' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "exception" )
+                           .withDescription( "Produce exception stack traces" )
+                           .create( 'e' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "emacs" )
+                           .withDescription( "Produce logging information without adornments" )
+                           .create( 'E' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "find" )
+                           .hasArg()
+                           .withDescription( "Set project file and effective working directory by finding the project file" )
+                           .create( 'f' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "goals" )
+                           .withDescription( "Display available goals" )
+                           .create( 'g' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "usage" )
+                           .withDescription( "Display help on using the current project" )
+                           .create( 'u' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "help" )
+                           .withDescription( "Display help information" )
+                           .create( 'h' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "info" )
+                           .withDescription( "Display system information" )
+                           .create( 'i' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "offline" )
+                           .withDescription( "Build is happening offline" )
+                           .create( 'o' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "pom" )
+                           .hasArg()
+                           .withDescription( "Set project file" )
+                           .create( 'p' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "version" )
+                           .withDescription( "Display version information" )
+                           .create( 'v' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "quiet" )
+                           .withDescription( "Reduce execution output" )
+                           .create( 'q' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "debug" )
+                           .withDescription( "Produce execution debug output" )
+                           .create( 'X' ) );
+
+        options.addOption( OptionBuilder
+                           .withLongOpt( "plugin-help" )
+                           .withDescription( "Display help on using a given plugin" )
+                           .hasOptionalArg()
+                           .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>
+     *
+     *  @see <a href="http://jakarta.apache.org/commons/cli/">CLI</a>
+     *
+     *  @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.
+     */
+    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()
+    {
+        Which env = new Which();
+        env.doMain( new String[]{} );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/cli/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.cli</title>
+</head>
+<body>
+
+  <p>Code used to handle running Maven from a command line interface</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyBuildListener.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyBuildListener.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyBuildListener.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,161 @@
+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.XMLOutput;
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.util.Stack;
+
+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.0.2/src/java/org/apache/maven/jelly/JellyPropsHandler.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyPropsHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyPropsHandler.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,113 @@
+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.grant.DefaultPropsHandler;
+import org.apache.commons.jelly.JellyContext;
+import org.apache.commons.jelly.expression.Expression;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+
+/**
+ * Implementation of a Commons Grant <code>propsHandler</code> to resolve
+ * through Jelly's context.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">Bob McWhirter</a>
+ * @author <a href="mailto:stephenh at chase3000.com">Stephen Haberman</a>
+ */
+public class JellyPropsHandler
+    extends DefaultPropsHandler
+{
+    /** The JellyContext. */
+    private JellyContext context;
+
+    /**
+     * Simple constructor with the context to be used.
+     *
+     * @param context The context to be used.
+     */
+    public JellyPropsHandler( JellyContext context )
+    {
+        this.context = context;
+    }
+
+    /**
+     * Set an ant property.
+     *
+     * @param name The property name.
+     * @param value The property value.
+     */
+    public void setProperty( String name, String value )
+    {
+        context.setVariable( name, value );
+    }
+
+    /**
+     * Retrieve an ant property.
+     *
+     * @param name The property name.
+     * @return The property value.
+     */
+    public String getProperty( String name )
+    {
+        if ( name == null )
+        {
+            return null;
+        }
+
+        Object value = this.context.getVariable( name );
+
+        if ( value == null )
+        {
+            return null;
+        }
+        else
+        {
+            if ( value instanceof Expression )
+            {
+                return ( ( Expression ) value ).evaluateAsString( context );
+            }
+            else
+            {
+                return value.toString();
+            }
+        }
+    }
+
+    /**
+     * Retrieve all ant properties.
+     *
+     * @return A <code>Hashtable</code> of all properties.
+     */
+    public Hashtable getProperties()
+    {
+        Hashtable h = new Hashtable();
+        for ( Iterator i = this.context.getVariableNames(); i.hasNext();)
+        {
+            String name = ( String ) i.next();
+            String value = getProperty( name );
+            if ( value != null )
+            {
+                h.put( name, value );
+            }
+        }
+        return h;
+    }
+
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyUtils.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/JellyUtils.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,308 @@
+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.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.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+
+import javax.xml.parsers.SAXParserFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Iterator;
+
+/**
+ * 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 122327 2004-06-26 14:55:46Z dion $
+ */
+public class JellyUtils
+{
+    /** 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;
+        }
+
+        runScript( new FileInputStream( scriptFile ),
+                   scriptFile.getAbsolutePath(),
+                   rootUrl,
+                   context,
+                   output );
+    }
+
+    /**
+     * 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
+    {
+        return compileScript( new FileInputStream( scriptFile ), scriptFile.getAbsolutePath(), context );
+    }
+
+    /**
+     * 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 )
+        {
+            source = new InputSource( new InputStreamReader( scriptInputStream, encoding ) ) ;
+        }
+        else
+        {
+            source = new InputSource( scriptInputStream );
+        }
+
+        source.setSystemId( 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 srcContext 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.0.2/src/java/org/apache/maven/jelly/MavenExpressionFactory.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/MavenExpressionFactory.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/MavenExpressionFactory.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,157 @@
+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.html">
+ * 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: 122187 $
+ */
+
+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;
+        final ExpressionFactory f = this;
+
+        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.0.2/src/java/org/apache/maven/jelly/MavenJellyContext.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/MavenJellyContext.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/MavenJellyContext.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,716 @@
+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 com.werken.werkz.WerkzProject;
+
+import org.apache.commons.grant.GrantProject;
+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.lang.StringUtils;
+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.jelly.tags.maven.MavenTagLibrary;
+import org.apache.maven.project.Project;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/** 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 122343 2004-07-01 12:39:05Z brett $
+ */
+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 );
+        registerTagLibrary( "jelly:maven", new 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 = super.getVariable( name );
+
+        if ( value instanceof Expression )
+        {
+            value = ( (Expression) value ).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 com.werken.werkz.WerkzProject Werkz Project}
+     */
+    public void setWerkzProject( WerkzProject werkzProject )
+    {
+        setVariable( MavenConstants.WERKZ_PROJECT, werkzProject );
+    }
+
+    /**
+     * retrieve the werkz project object
+     * @return the {@link com.werken.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( GrantProject antProject )
+    {
+        setVariable( MavenConstants.MAVEN_ANT_PROJECT, antProject );
+    }
+
+    /**
+     * Get the ant project.
+     *
+     * @return The ant project.
+     */
+    public GrantProject getAntProject()
+    {
+        return (GrantProject) 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.0.2/src/java/org/apache/maven/jelly/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.jelly</title>
+</head>
+<body>
+
+  <p>Jelly utilities</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/JeezTagLibrary.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,117 @@
+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 com.werken.werkz.jelly.WerkzTagLibrary;
+
+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.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: 122327 $
+ */
+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.0.2/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/MavenJeezTagLibrary.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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 ( name.equals( "goal" ) )
+        {
+            return TagScript.newInstance( MavenGoalTag.class );
+        }
+        else if ( name.equals( "attainGoal" ) )
+        {
+            return TagScript.newInstance( MavenAttainGoalTag.class );
+        }
+
+        // Otherwise, act like nothing is different.
+        return super.createTagScript( name, attrs );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TagDefTag.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,52 @@
+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: 122095 $
+ */
+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.0.2/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/TargetTag.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,39 @@
+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 com.werken.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: 122095 $
+ */
+public class TargetTag extends GoalTag
+{
+
+    public TargetTag()
+    {
+    }
+
+    public void setDepends( String depends )
+    {
+        setPrereqs( depends );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/jeez/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,185 @@
+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 com.werken.werkz.NoActionDefinitionException;
+import com.werken.werkz.NoSuchGoalException;
+import com.werken.werkz.Session;
+import com.werken.werkz.UnattainableGoalException;
+import com.werken.werkz.WerkzProject;
+import com.werken.werkz.jelly.JellySession;
+import com.werken.werkz.jelly.WerkzTagSupport;
+
+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 java.util.Iterator;
+import java.util.Set;
+
+/**
+ * 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 122465 2004-11-06 05:51:16Z brett $
+ */
+public class MavenAttainGoalTag extends WerkzTagSupport
+{
+    /** The goal name. */
+    private String name;
+
+    /** The session. */
+    private Session session;
+
+    /**
+     * Construct.
+     */
+    public MavenAttainGoalTag()
+    {
+        // 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()
+    {
+        if ( this.session == null )
+        {
+            /* 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 );
+            this.session = new JellySession( ( ( MavenJellyContext ) getContext() ).getXMLOutput() );
+            for ( Iterator i = session.getAttributes().keySet().iterator(); i.hasNext();)
+            {
+                String key = ( String ) i.next();
+                this.session.setAttribute( key, session.getAttribute( key ) );
+            }
+        }
+
+        return this.session;
+    }
+
+    /**
+     * 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
+            MavenJellyContext baseContext = ( MavenJellyContext ) getSession().getAttribute(
+                    PluginManager.BASE_CONTEXT );
+            GoalToJellyScriptHousingMapper mapper = ( GoalToJellyScriptHousingMapper ) getSession().getAttribute(
+                    PluginManager.GOAL_MAPPER );
+            PluginManager pluginManager = ( PluginManager ) getSession().getAttribute( PluginManager.PLUGIN_MANAGER );
+
+            Set pluginSet;
+            try
+            {
+                pluginSet = pluginManager.prepAttainGoal( getName(), baseContext, mapper );
+            }
+            catch ( Exception e )
+            {
+                throw new JellyTagException( e );
+            }
+            project.attainGoal( getName(), getSession() );
+            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 ) getSession().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.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,125 @@
+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 com.werken.werkz.Action;
+import com.werken.werkz.Goal;
+import com.werken.werkz.Session;
+import com.werken.werkz.WerkzProject;
+import com.werken.werkz.jelly.GoalTag;
+
+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;
+
+/**
+ * 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 122327 2004-06-26 14:55:46Z dion $
+ */
+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.0.2/src/java/org/apache/maven/jelly/tags/werkz/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/jelly/tags/werkz/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.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.0.2/src/java/org/apache/maven/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 execute Maven</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,529 @@
+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 com.werken.werkz.CyclicGoalChainException;
+import com.werken.werkz.Goal;
+import com.werken.werkz.NoSuchGoalException;
+import com.werken.werkz.WerkzProject;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.util.InsertionOrderedSet;
+import org.apache.plexus.util.StringUtils;
+
+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;
+
+/**
+ * This is the process that we use:
+ * <p/>
+ * - Start with goal X.
+ * - Gather prereqs for X.
+ * <p/>
+ * 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.
+ * <p/>
+ * 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 ) == housing )
+            {
+                i.remove();
+            }
+        }
+        pluginDynaTagDepsMap.remove( housing );
+    
+        for ( Iterator i = goalPluginMap.keySet().iterator(); i.hasNext(); )
+        {
+            String goal = ( String ) i.next();
+            if ( goalPluginMap.get( goal ) == 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.0.2/src/java/org/apache/maven/plugin/JellyScriptHousing.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/JellyScriptHousing.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/JellyScriptHousing.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,228 @@
+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.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;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+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;
+
+/**
+ * @author <a href="mailto:jason at maven.org">Jason van Zyl</a>
+ *
+ * @version $Id: JellyScriptHousing.java 122327 2004-06-26 14:55:46Z dion $
+ */
+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
+     */
+    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 getScript()
+    {
+        return script;
+    }
+
+    public String toString()
+    {
+        return "\n source = " + getSource() +
+               "\n project = " + project +
+               "\n script = " + script;
+    }
+
+    /**
+     * @return
+     */
+    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
+    {
+        try
+        {
+            parse( handler, source.getAbsolutePath(), new FileInputStream( source ) );
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new MavenException( "Error reading plugin script", e );
+        }
+    }
+
+    /**
+     * @return
+     */
+    public Map getPluginProperties()
+    {
+        return pluginProperties;
+    }
+
+    /**
+     * @return
+     */
+    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 = new FileInputStream( propsFile );
+            props.load( in );
+            in.close();
+            map.putAll( props );
+        }
+
+        return map;
+    }
+}
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginCacheManager.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginCacheManager.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginCacheManager.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,708 @@
+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.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenException;
+import org.apache.maven.MavenSession;
+
+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;
+
+/**
+ * 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 ) throws IOException
+    {
+        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 )
+            {
+                stream.close();
+            }
+        }
+        return properties;
+    }
+
+    /**
+     *  Load on-disk cache information, if possible.
+     */
+    void loadCache( File directory ) throws IOException
+    {
+        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 );
+            if ( pluginName.equals( callbackPlugin ) )
+            {
+                sessionLog.debug( "removing callback cache entry for goal " + goalName );
+                i.remove();
+            }
+        }
+        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
+     * @param housing
+     */
+    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;
+            }
+            //if ( log.isDebugEnabled() )
+            //{
+                //log.debug( "cached dynatag dep by " + pluginName + " for taglibs " + pluginDynaTagDepsCache.get( pluginName ) );
+            //}
+        }
+        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;
+            }
+            //if ( log.isDebugEnabled() )
+            //{
+                //log.debug( "cached goal " + goalName + " in plugin " + pluginName );
+            //}
+        }
+        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;
+            }
+            //if ( log.isDebugEnabled() )
+            //{
+                //log.debug( "cached dynataglib " + uri + " in plugin " + pluginName );
+            //}
+        }
+
+        // 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 );
+                //if ( log.isDebugEnabled() )
+                //{
+                    //log.debug( "cached preGoal on " + goalName + " in plugin " + housing.getName() );
+                //}
+            }
+        }
+        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 );
+                //if ( log.isDebugEnabled() )
+                //{
+                    //log.debug( "cached postGoal on " + goalName + " in plugin " + housing.getName() );
+                //}
+            }
+        }
+        
+        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 getPluginCache()
+    {
+        return pluginCache;
+    }
+
+    /**
+     * @return
+     */
+    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.0.2/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,34 @@
+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="brett at apache.org">Brett Porter</a>
+ * @version $Id: PluginDefinitionHandler.java 122174 2004-03-28 21:27:27Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/plugin/PluginDefinitionHandler.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginManager.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginManager.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginManager.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,1165 @@
+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 com.werken.forehead.Forehead;
+import com.werken.forehead.ForeheadClassLoader;
+import com.werken.werkz.Goal;
+import com.werken.werkz.NoSuchGoalException;
+import com.werken.werkz.Session;
+import com.werken.werkz.WerkzProject;
+import com.werken.werkz.jelly.JellySession;
+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 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.Properties;
+import java.util.Set;
+
+/*
+
+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 122473 2004-11-10 09:20:47Z brett $
+ */
+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 );
+    }
+
+    /**
+     * @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, 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, 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
+     * @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 )
+        {
+            log.debug( "No dependencies to process for project " + project.getName() );
+            return;
+        }
+
+        ForeheadClassLoader projectClassLoader = (ForeheadClassLoader) project.getContext().getClassLoader();
+        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;
+    }
+
+    /**
+     * 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 = baseContext;
+
+        baseContext = new MavenJellyContext( mavenSession.getRootContext() );
+        baseContext.setInherit( true );
+        JellyUtils.populateVariables( baseContext, project.getContext() );
+        project.pushContext( baseContext );
+        baseContext.setProject( 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, 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 ( 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
+     */
+    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
+     * @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
+     * @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 != project.getContext().getParent() )
+            {
+                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 );
+                }
+            }
+            else
+            {
+                log.debug( "Plugin context for " + id + " already initialised for this base context" );
+                return project.getContext();
+            }
+        }
+        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
+     * @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() );
+            ForeheadClassLoader pluginClassLoader = (ForeheadClassLoader) jellyScriptHousing.getProject().getContext().getClassLoader();
+            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
+        {
+            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.0.2/src/java/org/apache/maven/plugin/PluginScriptParser.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginScriptParser.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/PluginScriptParser.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,213 @@
+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.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.MavenException;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * 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 ( !prefix.equals( "" ) && !uri.startsWith( "jelly:" ) && !uri.startsWith( "dummy" ) && !uri.equals( "" ) )
+        {
+            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 ( uri.equals( "jelly:core" )  && localName.equals( "import" ) )
+        {
+            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 );
+                try
+                {
+                    File f = new File( importUri );
+                    jellyScriptHousing.parse( handler, f.getAbsolutePath(), new FileInputStream( f ) );
+                }
+                catch ( MavenException e )
+                {
+                    log.warn( "Error parsing content from uri " + importUri, e );
+                }
+                catch ( IOException e )
+                {
+                    log.debug( "Skipping: error reading from uri " + importUri );
+                }
+            }
+        }
+        // TODO: only honour for maven.xml
+        if ( rawName.equals( "project" ) )
+        {
+            String defaultGoal = attributes.getValue( "default" );
+
+            if ( defaultGoal != null )
+            {
+                handler.setDefaultGoalName( defaultGoal );
+            }
+        }
+        else if ( rawName.equals( "goal" ) )
+        {
+            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 ( rawName.equals( "preGoal" ) )
+        {
+            String name = attributes.getValue( "name" );
+            handler.addPreGoal( name, jellyScriptHousing );
+        }
+        else if ( rawName.equals( "postGoal" ) )
+        {
+            String name = attributes.getValue( "name" );
+            handler.addPostGoal( name, jellyScriptHousing );
+        }
+        else if ( rawName.equals( "attainGoal" ) )
+        {
+            // Use lazy version
+        }
+        else if ( localName.equals( "taglib" ) && uri.equals( "jelly:define" ) )
+        {
+            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 final void printParseError( String type, SAXParseException spe )
+    {
+        System.err.println(
+                type + " [line " + spe.getLineNumber() + ", row " + spe.getColumnNumber() + "]: " + spe.getMessage() );
+    }
+}


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

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/UnknownPluginException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/UnknownPluginException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/UnknownPluginException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/plugin/UnknownPluginException.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/plugin/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/java/org/apache/maven/project/ArtifactType.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/ArtifactType.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/ArtifactType.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,112 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * Provides mapping between artifact types and an extension associated
+ * with these types.
+ *
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @version $Id: ArtifactType.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class ArtifactType
+{
+    /**
+     * EJB artifact mapping.
+     */
+    public static final ArtifactType EJB = new ArtifactType("ejb", "jar");
+
+    /**
+     * Plugin artifact mapping.
+     */
+    public static final ArtifactType PLUGIN = new ArtifactType("plugin", "jar");
+
+    /**
+     * Reusable AspectJ aspect mapping.
+     */
+    public static final ArtifactType ASPECT = new ArtifactType("aspect", "jar");
+
+    /**
+     * Artifact type.
+     */
+    private String type;
+
+    /**
+     * Artifact file extension.
+     */
+    private String extension;
+
+    /**
+     * @param type the artifact type
+     * @param extension the artifact extension
+     */
+    private ArtifactType(String type, String extension)
+    {
+        this.type = type;
+        this.extension = extension;
+    }
+
+    /**
+     * @return the artifact type
+     */
+    public String getType()
+    {
+        return this.type;
+    }
+
+    /**
+     * @return the artifact extension
+     */
+    public String getExtension()
+    {
+        return this.extension;
+    }
+
+    /**
+     * Factory to return the correct {@link ArtifactType} object.
+     *
+     * @param type the artifact type
+     * @return the artifact mapping
+     */
+    public static ArtifactType findType(String type)
+    {
+        ArtifactType result;
+
+        if (type == null)
+        {
+            result = null;
+        }
+        else if (type.equalsIgnoreCase("ejb"))
+        {
+            result = EJB;
+        }
+        else if (type.equalsIgnoreCase("plugin"))
+        {
+            result = PLUGIN;
+        }
+        else if (type.equalsIgnoreCase("aspect"))
+        {
+            result = ASPECT;
+        }
+        else
+        {
+            result = new ArtifactType(type, type);
+        }
+        return result;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/BaseObject.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/BaseObject.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/BaseObject.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,278 @@
+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 org.apache.commons.lang.StringUtils;
+import org.apache.maven.util.StringTool;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: BaseObject.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class BaseObject
+{
+    /**
+     * Id to use for this object.
+     */
+    protected String id;
+
+    /**
+     * Display name to use for this object.
+     */
+    private String name;
+
+    /**
+     * Give object that have not been given an explicit unique id
+     * one that will keep betwixt happy.
+     */
+    private static int uniqueId;
+
+    /**
+     * Meta information that can be used by all objects
+     * derived from <code>BaseObject</code>
+     */
+    private Map properties;
+
+    /**
+     * properties that are in the format name:value
+     */
+    private List combinedProperties = new ArrayList();
+
+    /**
+     * Sets the name attribute
+     *
+     * @param name the new name value
+     */
+    public void setName( String name )
+    {
+        this.name = StringTool.trim(name);
+    }
+
+    /**
+     * Gets the name attribute
+     *
+     * @return the name attribute
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * Sets the id attribute of the BaseObject object
+     *
+     * @param id the new id value
+     */
+    public void setId( String id )
+    {
+        this.id = StringTool.trim(id);
+    }
+
+    /**
+     * Gets the id attribute
+     *
+     * @return the id attribute
+     */
+    public String getId()
+    {
+        if ( id == null || id.equals(""))
+        {
+            id = Integer.toString( uniqueId++ );
+        }
+
+        return id;
+    }
+
+    /**
+     * Add a meta property to this object.
+     *
+     * @param combinedProperty The property that is fed in by
+     *        the MetaPropertiesRule is in the form name:value
+     *        so that we can fake out betwixt. Not beautiful
+     *        but it works and when we find a better solution
+     *        nothing will change for users.
+     */
+    public void addProperty( String combinedProperty )
+    {
+        combinedProperties.add( combinedProperty );
+    }
+
+    /**
+     * Get a meta property. The first time one is retrieved we
+     * create a property Map from the name:value entries in the
+     * list we have used to store the meta properties during
+     * mapping through betwixt.
+     *
+     * @param propertyName the name of the property to retrieve
+     * @return the property value
+     */
+    public String getProperty( String propertyName )
+    {
+        if ( properties == null )
+        {
+            resolveProperties();
+        }
+
+        return (String) properties.get( propertyName );
+    }
+
+    /**
+     * Set meta properties. They are stored in a {@link List} of
+     * name:value entries.
+     *
+     * @param combinedProperties a list of name:value strings
+     */
+    public void setProperties( List combinedProperties )
+    {
+        this.combinedProperties = combinedProperties;
+    }
+
+    /**
+     * Get meta properties.
+     *
+     * @return a {@link List} of name:value entries
+     */
+    public List getProperties()
+    {
+        return combinedProperties;
+    }
+
+    /**
+     * Get the resolved properties after the name:value
+     * processing has been done.
+     *
+     * @return a map from the {@link #getProperties() meta properties} turning
+     * the name:value strings into a key and value for the map
+     */
+    public Map resolvedProperties()
+    {
+        if ( properties == null )
+        {
+            resolveProperties();
+        }
+
+        return properties;
+    }
+
+    /**
+     * Resolve the name:value list into a real Map.
+     */
+    private void resolveProperties()
+    {
+        properties = new HashMap();
+
+        for ( Iterator i = combinedProperties.iterator(); i.hasNext();)
+        {
+            String combinedProperty = (String) i.next();
+            String[] s = StringUtils.split( combinedProperty, ":" );
+
+            if ( s.length == 3 )
+            {
+                // Property is specific and has a value.
+                properties.put( s[1], s[2] );
+            }
+            else
+            {
+                // Property is specific but has no value.
+                properties.put( s[1], "" );
+            }
+        }
+    }
+
+    /**
+     * Return a string suitable for display/debugging
+     *
+     * @return the name attribute as a default
+     */
+    public String toString()
+    {
+        return name;
+    }
+
+    /**
+     * Whether the passed object is the same as this one. In this case
+     * the id is the unique qualifier. So two objects are equal
+     * if they have equal id's
+     * @param o any object
+     * @return true if o is the same as this object, false otherwise
+     */
+    public boolean equals( Object o )
+    {
+        if ( o == null )
+        {
+            return false;
+        }
+
+        if ( getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        if ( getId() != null )
+        {
+            return getId().equals( ( (BaseObject) o ).getId() );
+        }
+        else
+        {
+            return ( (BaseObject) o ).getId() == null;
+        }
+    }
+
+    /**
+     * Provides the hashCode of this object, which is determined by simply
+     * delegating the responsibility to the name property
+     * @return the hashCode of the name if not null, otherwise delegate to the
+     * parent class
+     */
+    public int hashCode()
+    {
+        if ( getId() != null )
+        {
+            return getId().hashCode();
+        }
+        else
+        {
+            return super.hashCode();
+        }
+    }
+
+    /**
+     * 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
+             && !value.trim().equals("") )
+        {
+            return true;
+        }
+
+        return false;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Branch.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Branch.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Branch.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,61 @@
+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 org.apache.maven.util.StringTool;
+
+/**
+ * @author <a href="mailto:evenisse at ifrance.com">Emmanuel Venisse</a>
+ * @version $Id: Branch.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class Branch
+    extends BaseObject
+{
+    /**
+     * Repository tag from which this branch
+     * is made.
+     */
+    private String tag;
+
+    /**
+     * Constructor for the Branch object
+     */
+    public Branch()
+    {
+    }
+
+    /**
+     * Sets the tag attribute of the Branch object
+     *
+     * @param tag the repository tag from which this branch is made
+     */
+    public void setTag( String tag )
+    {
+        this.tag = StringTool.trim(tag);
+    }
+
+    /**
+     * Gets the tag attribute of the Branch object
+     *
+     * @return the repository tag from which this branch is made
+     */
+    public String getTag()
+    {
+        return tag;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Build.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Build.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Build.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,373 @@
+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 org.apache.maven.MavenUtils;
+import org.apache.maven.util.StringTool;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Build.java 122289 2004-05-13 10:15:56Z brett $
+ */
+public class Build
+    extends BaseObject
+{
+    /**
+     * Path entries that control which source directories are used
+     * to compile the project.
+     */
+    private String sourceDirectory;
+
+    /**
+     * Path entries that control which source directories contain
+     * aspectj sources to be compiled.
+     */
+    private String aspectSourceDirectory;
+
+    /**
+     * The directory on where the unit test source files are stored.
+     */
+    private String unitTestSourceDirectory;
+
+    /**
+     * The directory on where the integration unit test source files are stored.
+     */
+    private String integrationUnitTestSourceDirectory;
+
+    /**
+     * Email address to which build related messages should be sent (for use
+     * by automated build tools, for example those that provide continuous
+     * integration).
+     */
+    private String nagEmailAddress;
+
+    /** Unit test specification patterns. */
+    private UnitTest unitTest;
+
+    /** Source exclusions */
+    private List sourceModifications;
+
+    /** Resources to package up in the JAR. */
+    private List resources;
+    /**
+     * Constructor for the Build object
+     */
+    public Build()
+    {
+        sourceModifications = new ArrayList();
+        resources = new ArrayList();
+    }
+
+    /**
+     * Get the integration unit test source directory.
+     *
+     * @return the directory for integration unit test java source code
+     */
+    public String getIntegrationUnitTestSourceDirectory()
+    {
+        return integrationUnitTestSourceDirectory;
+    }
+
+    /**
+     * Set the integration unit test source direcotry.
+     *
+     * @param utDirectory the directory for integration unit test java source
+     *      code
+     */
+    public void setIntegrationUnitTestSourceDirectory( String utDirectory )
+    {
+        this.integrationUnitTestSourceDirectory = StringTool.trim(utDirectory);
+    }
+
+    /**
+     * Get the unit test source directory.
+     *
+     * @return the directory for unit test java source code
+     */
+    public String getUnitTestSourceDirectory()
+    {
+        return unitTestSourceDirectory;
+    }
+
+    /**
+     * Set the unit test source direcotry.
+     *
+     * @param utDirectory the directory for unit test java source code
+     */
+    public void setUnitTestSourceDirectory( String utDirectory )
+    {
+        this.unitTestSourceDirectory = StringTool.trim(utDirectory);
+    }
+
+    /**
+     * Add source modification.
+     *
+     * @param sourceModification Add a single source modification.
+     */
+    public void addSourceModification( SourceModification sourceModification )
+    {
+        sourceModifications.add( sourceModification );
+    }
+
+    /**
+     * Set the source modifications.
+     *
+     * @param sourceModifications Source modification.
+     */
+    public void setSourceModification( List sourceModifications )
+    {
+        this.sourceModifications = sourceModifications;
+    }
+
+    /**
+     * Get the source modifications.
+     *
+     * @return Source modifications.
+     */
+    public List getSourceModifications()
+    {
+        return sourceModifications;
+    }
+
+    /**
+     * Adds a feature to the SourceDirectory attribute of the Build object
+     *
+     * @param sourceDirectory the directory for java source code
+     */
+    public void setSourceDirectory( String sourceDirectory )
+    {
+        this.sourceDirectory = StringTool.trim(sourceDirectory);
+    }
+
+    /**
+     * Gets the sourceDirectories attribute of the Build object
+     *
+     * @return the directory for java source code
+     */
+    public String getSourceDirectory()
+    {
+        return sourceDirectory;
+    }
+
+    /**
+     * Adds a feature to the AspectSourceDirectory attribute of the Build object
+     *
+     * @param aspectSourceDirectory the directory for Aspect/J source code
+     */
+    public void setAspectSourceDirectory( String aspectSourceDirectory )
+    {
+        this.aspectSourceDirectory = StringTool.trim(aspectSourceDirectory);
+    }
+
+    /**
+     * Gets the directory that Aspect/J source is stored in
+     *
+     * @return the aspectSourceDirectory attribute
+     */
+    public String getAspectSourceDirectory()
+    {
+        return aspectSourceDirectory;
+    }
+
+    /**
+     * Set the nag email address, which is used for automated build failures.
+     *
+     * @param nagEmailAddress the new value of the nag email address
+     */
+    public void setNagEmailAddress( String nagEmailAddress )
+    {
+        this.nagEmailAddress = StringTool.trim(nagEmailAddress);
+    }
+
+    /**
+     * Get the nag email address.
+     *
+     * @return the email address to send automatic build failures to
+     */
+    public String getNagEmailAddress()
+    {
+        return nagEmailAddress;
+    }
+
+    /**
+     * Add a set of unit test patterns.
+     *
+     * @param unitTest Unit test patterns.
+     */
+    public void setUnitTest( UnitTest unitTest )
+    {
+        this.unitTest = unitTest;
+    }
+
+    /**
+     * Retrieve the unit test patterns.
+     *
+     *  @return The unit test patterns.
+     */
+    public UnitTest getUnitTest()
+    {
+        return this.unitTest;
+    }
+
+    /**
+     * Add a test resource.
+     *
+     * @param resource Add a test resource.
+     */
+    public void addResource( Resource resource )
+    {
+        resources.add( resource );
+    }
+
+    /**
+     * Set the resources.
+     *
+     * @param resources Test resources.
+     */
+    public void setResources( List resources )
+    {
+        this.resources = resources;
+    }
+
+    /**
+     * Gets the resources.
+     *
+     * @return Resources patterns for including or excluding arbitrary resources.
+     */
+    public List getResources()
+    {
+        return resources;
+    }
+
+    /**
+     * @return a string for debug purposes
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        return "[ sourceDirectory = " + getSourceDirectory()
+            + ", unitTestSourceDirectory = " + getUnitTestSourceDirectory() + " ]";
+    }
+
+    /**
+     * Resolve relative directories against a base directory.
+     * @param basedir the base directory
+     * @throws IOException file resolution error
+     */
+    public void resolveDirectories( File basedir ) throws IOException
+    {
+        for ( Iterator i = resources.iterator(); i.hasNext();)
+        {
+            Resource r = ( Resource ) i.next();
+            r.resolveDirectory( basedir );
+        }
+
+        if ( unitTest != null )
+        {
+            for ( Iterator i = unitTest.getResources().iterator(); i.hasNext();)
+            {
+                Resource r = ( Resource ) i.next();
+                r.resolveDirectory( basedir );
+            }
+        }
+
+        if ( sourceDirectory != null && sourceDirectory.length() > 0 )
+        {
+            sourceDirectory = MavenUtils.makeAbsolutePath( basedir, sourceDirectory );
+        }
+
+        if ( aspectSourceDirectory != null && aspectSourceDirectory.length() > 0 )
+        {
+            aspectSourceDirectory = MavenUtils.makeAbsolutePath( basedir, aspectSourceDirectory );
+        }
+
+        if ( unitTestSourceDirectory != null && unitTestSourceDirectory.length() > 0 )
+        {
+            unitTestSourceDirectory = MavenUtils.makeAbsolutePath( basedir, unitTestSourceDirectory );
+        }
+
+        if ( integrationUnitTestSourceDirectory != null && integrationUnitTestSourceDirectory.length() > 0 )
+        {
+            integrationUnitTestSourceDirectory =
+                    MavenUtils.makeAbsolutePath( basedir, integrationUnitTestSourceDirectory );
+        }
+    }
+
+    /**
+     * Setup inheritance from a parent project build element.
+     * @param parent the parent build element
+     */
+    void mergeParent(Build parent)
+    {
+        if ( parent == null )
+        {
+            return;
+        }
+
+        if ( sourceDirectory == null )
+        {
+            sourceDirectory = parent.sourceDirectory;
+        }
+
+        if ( unitTestSourceDirectory == null )
+        {
+            unitTestSourceDirectory = parent.unitTestSourceDirectory;
+        }
+
+        if ( integrationUnitTestSourceDirectory == null )
+        {
+            integrationUnitTestSourceDirectory = parent.integrationUnitTestSourceDirectory;
+        }
+
+        if ( aspectSourceDirectory == null )
+        {
+            aspectSourceDirectory = parent.aspectSourceDirectory;
+        }
+
+        if ( nagEmailAddress == null )
+        {
+            nagEmailAddress = parent.nagEmailAddress;
+        }
+
+        if ( resources == null || resources.isEmpty() )
+        {
+            resources = parent.resources;
+        }
+        if ( sourceModifications == null || sourceModifications.isEmpty() )
+        {
+            sourceModifications = parent.sourceModifications;
+        }
+        // Project.mergeLists( parent.resources, resources );
+        // Project.mergeLists( parent.sourceModifications, sourceModifications );
+
+        if ( unitTest == null )
+        {
+            unitTest = parent.unitTest;
+        }
+        else
+        {
+            unitTest.mergeParent( parent.unitTest );
+        }
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Contributor.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Contributor.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Contributor.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,173 @@
+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 org.apache.maven.util.StringTool;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+/**
+ * A Contributor to a project is an individual that has contributed in some way
+ * to the project, but is not a Contributor.
+ *
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:glenn at somanetworks.com">Glenn McAllister</a>
+ * @author <a href="mailto:kschrader at karmalab.org">Kurt Schrader</a>
+ * @version $Id: Contributor.java 122174 2004-03-28 21:27:27Z evenisse $
+ */
+public class Contributor
+    extends BaseObject
+{
+    /**
+     * Contributor's email address. NOTE: there may eventually be more than
+     * one email address.
+     */
+    private String email;
+
+    /**
+     * Contributor's organziation.
+     */
+    private String organization;
+
+    /**
+     * Contributor's role(s) in the project.
+     */
+    private SortedSet roles = new TreeSet();
+
+    /**
+     * Contributor's homepage URL
+     */
+    private String url;
+    
+    /**
+     * Contributor's timezone offset.  eg. -10
+     */
+    private String timezone;
+
+    /**
+     * Constructor for the Contributor object
+     */
+    public Contributor()
+    {
+    }
+
+    /**
+     * Sets the email attribute of the Contributor object
+     *
+     * @param email the Contributor's email address
+     */
+    public void setEmail( String email )
+    {
+        this.email = StringTool.trim(email);
+    }
+
+    /**
+     * Gets the email attribute of the Contributor object
+     *
+     * @return the Contributor's email address
+     */
+    public String getEmail()
+    {
+        return email;
+    }
+
+    /**
+     * Sets the organization attribute of the Contributor object
+     *
+     * @param organization the Contributor's organization affiliation
+     */
+    public void setOrganization( String organization )
+    {
+        this.organization = organization;
+    }
+
+    /**
+     * Gets the organization attribute of the Contributor object
+     *
+     * @return the organization the Contributor is affiliated with
+     */
+    public String getOrganization()
+    {
+        return organization;
+    }
+
+    /**
+     * Adds a role attribute to the Contributor object.
+     *
+     * @param role a role the Contributor plays in the project
+     */
+    public void addRole( String role )
+    {
+        roles.add( role );
+    }
+
+    /**
+     * Gets the sorted set of unique role attributes of the Contributor object.
+     *
+     * @return the sorted set of roles the Contributor plays in the project.
+     */
+    public SortedSet getRoles()
+    {
+        return roles;
+    }
+
+    /**
+     * Gets the homepage url of the Contributor object.
+     *
+     * @return the URL of the Contributor's homepage
+     */
+
+    public String getUrl()
+    {
+        return url;
+    }
+
+    /**
+     * Set the url attribute of the Contributor object
+     *
+     * @param url the Contributor's homepage URL
+     */
+
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    /**
+     * Gets the timezone offset of the Contributor object.
+     *
+     * @return the timezone offset of the Contributor's homepage
+     */
+
+    public String getTimezone()
+    {
+        return timezone;
+    }
+
+    /**
+     * Set the timezone offset of the Contributor object
+     *
+     * @param timezone offset of the Contributor
+     */
+    public void setTimezone(String timezone)
+    {
+        this.timezone = timezone;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Dependency.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Dependency.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Dependency.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,344 @@
+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 org.apache.maven.util.StringTool;
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @author <a href="mailto:vmassol at apache.org">Vincent Massol</a>
+ * @version $Id: Dependency.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class Dependency
+    extends BaseObject
+{
+    /** 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 ArtifactType type;
+
+    /** Flag to indicate the artifact is poorly named. */
+    //private boolean isPoorlyNamed = false;
+
+    /**
+     * Default constructor
+     */
+    public Dependency()
+    {
+    }
+
+    /**
+     * Set the id for this dependency.
+     *
+     * @param id for this dependency
+     */
+    public void setId( String id )
+    {
+        int i = id.indexOf( "+" );
+        int j = id.indexOf( ":" );
+
+        if ( i > 0 )
+        {
+            // We have something like 'ant+optional' where the
+            // group id is 'ant' and the artifact id is
+            // 'ant-optional'.
+            setGroupId( id.substring( 0, i ) );
+            setArtifactId( id.replace( '+', '-' ) );
+        }
+        else if ( j > 0 )
+        {
+            // We have something like 'ant:my-poorly-name.jar' where the
+            // group id is 'ant' and the artifact id is
+            // 'my-poorly-named.jar'.
+            setGroupId( id.substring( 0, j ) );
+            setArtifactId( id.substring( j + 1 ) );
+        }
+        else
+        {
+            // We have something like 'ant' where the
+            // the project id is 'ant' and the artifact name
+            // is 'ant'.
+            setGroupId( id );
+            setArtifactId( id );
+        }
+    }
+
+    /**
+     * @throws IllegalStateException if groupId, artifactId and id are all invalid
+     * @return groupId:artifactId if both are valid, or the id.
+     */
+    public String getId() throws IllegalStateException
+    {
+        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();
+        }
+
+        if (id == null)
+        {
+            throw new IllegalStateException("either id or (groupId and artifactId) must be "
+                + "provided for a dependency");
+        }
+        return id;
+    }
+
+    /**
+     * Set the group id.
+     *
+     * @param groupId Group id for the dependency.
+     */
+    public void setGroupId( String groupId )
+    {
+        this.groupId = StringTool.trim(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 = StringTool.trim(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;
+        }
+
+        return getArtifactId() + "-" + getVersion() + "." + getExtension();
+    }
+
+    /**
+     * Set the version for this dependency.
+     *
+     * @param version Version for this dependency
+     */
+    public void setVersion( String version )
+    {
+        this.version = StringTool.trim(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 ( StringTool.trim(jar).length() == 0 )
+        {
+            return;
+        }
+
+        this.jar = StringTool.trim(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 = StringTool.trim(url);
+    }
+
+    /**
+     * Get the name of the url for the dependency.
+     *
+     * @return Name of the url for the dependency
+     */
+    public String getUrl()
+    {
+        return url;
+    }
+
+
+    /**
+     * @return dependency type such as "jar", "war", etc.
+     */
+    public String getType()
+    {
+        String result = null;
+
+        if (this.type != null)
+        {
+            result = this.type.getType();
+        }
+        return result;
+    }
+
+    /**
+     * @return dependency extension such as "jar", "war", etc.
+     */
+    public String getExtension()
+    {
+        String result = null;
+
+        if (this.type != null)
+        {
+            result = this.type.getExtension();
+        }
+        return result;
+    }
+
+    /**
+     * Sets the dependency type such as "jar" or "war"
+     *
+     * @param type The type of dependency.
+     */
+    public void setType( String type )
+    {
+        this.type = ArtifactType.findType(StringTool.trim(type));
+    }
+
+    /**
+     * Debug string.
+     *
+     * @return Debugging string.
+     */
+    public String toString()
+    {
+        return "Dep[ id:" + getId() + " pid:" + getId()
+            + " ver:" + getVersion() + " ar:" + getArtifact() + " jar:"
+            + getJar() + " ]";
+    }
+
+    /**
+     * Usually only jars and ejbs are added to the classpath
+     *
+     * @return true if the given dependency belongs on the classpath
+     */
+    public boolean isAddedToClasspath()
+    {
+        if (type != null)
+        {
+            String artifactType = type.getType();
+            return artifactType.equals("jar") || artifactType.equalsIgnoreCase("ejb");
+        }
+        return false;
+    }
+
+    /**
+     * @return true if the dependency is a maven plugin
+     */
+    public boolean isPlugin()
+    {
+        if (type != null)
+        {
+            return type.getType().equals("plugin");
+        }
+        return false;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Developer.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Developer.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Developer.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,36 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * A Developer is, in Jakarta terms, a committer on a project.
+ *
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @author <a href="mailto:glenn at somanetworks.com">Glenn McAllister</a>
+ * @version $Id: Developer.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class Developer
+    extends Contributor
+{
+    /**
+     * Constructor for the Developer object
+     */
+    public Developer()
+    {
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Jar.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Jar.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Jar.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,35 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * A Jar as specified in the project descriptor
+ *
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Jar.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class Jar
+    extends BaseObject
+{
+    /**
+     * Create an instance of this class
+     */
+    public Jar()
+    {
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/License.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/License.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/License.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,102 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * A License as specified in the project descriptor
+ *
+ * @author <a href="mailto:bwalding at apache.org">Ben Walding</a>
+ * @version $Id: License.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class License
+    extends BaseObject
+{
+    private String name;
+    private String url;
+    private String distribution;
+    private String comments;
+
+    /**
+     * @return String
+     */
+    public String getName()
+    {
+      return name;
+    }
+
+    /**
+     * @return String
+     */
+    public String getDistribution()
+    {
+      return distribution;
+    }
+
+    /**
+     * @return String
+     */
+    public String getUrl()
+    {
+      return url;
+    }
+
+    /**
+     * Sets the name.
+     * @param name The name to set
+     */
+    public void setName(String name)
+    {
+      this.name = name;
+    }
+
+    /**
+     * Sets the type.
+     * @param type The type to set
+     */
+    public void setDistribution(String type)
+    {
+      this.distribution = type;
+    }
+
+    /**
+     * Sets the url.
+     * @param url The url to set
+     */
+    public void setUrl(String url)
+    {
+      this.url = url;
+    }
+
+    /**
+     * @return String
+     */
+    public String getComments()
+    {
+        return comments;
+    }
+
+    /**
+     * Sets the comments.
+     * @param comments The comments to set
+     */
+    public void setComments(String comments)
+    {
+        this.comments = comments;
+    }
+
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/MailingList.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/MailingList.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/MailingList.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,109 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: MailingList.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class MailingList
+    extends BaseObject
+{
+    /**
+     * Subcribe email address.
+     */
+    private String subscribe;
+
+    /**
+     * Usubscribe email address.
+     */
+    private String unsubscribe;
+
+    /**
+     * URL of the mail archive.
+     */
+    private String archive;
+
+    /**
+     * Constructor for the MailingList object
+     */
+    public MailingList()
+    {
+    }
+
+    /**
+     * Sets the subscribe attribute of the MailingList object
+     *
+     * @param subscribe the address of the subscription mailing list
+     */
+    public void setSubscribe( String subscribe )
+    {
+        this.subscribe = subscribe;
+    }
+
+    /**
+     * Gets the subscribe attribute of the MailingList object
+     *
+     * @return the url (typically mailto:) for subscribing
+     */
+    public String getSubscribe()
+    {
+        return subscribe;
+    }
+
+    /**
+     * Sets the unsubscribe attribute of the MailingList object
+     *
+     * @param unsubscribe the url for unsubscribing from the project mailing
+     *      list
+     */
+    public void setUnsubscribe( String unsubscribe )
+    {
+        this.unsubscribe = unsubscribe;
+    }
+
+    /**
+     * Gets the unsubscribe attribute of the MailingList object
+     *
+     * @return the url (typically mailto:) for unsubscribing
+     */
+    public String getUnsubscribe()
+    {
+        return unsubscribe;
+    }
+
+    /**
+     * Sets the archive attribute of the MailingList object
+     *
+     * @param archive the url for the mailing list archive
+     */
+    public void setArchive( String archive )
+    {
+        this.archive = archive;
+    }
+
+    /**
+     * Gets the archive attribute of the MailingList object
+     *
+     * @return the url for the mailing list archive
+     */
+    public String getArchive()
+    {
+        return archive;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Organization.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Organization.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Organization.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,77 @@
+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 org.apache.maven.util.StringTool;
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Organization.java 122321 2004-06-23 13:13:26Z brett $
+ */
+public class Organization
+    extends BaseObject
+{
+    /**
+     * Organization url
+     */
+    private String url;
+
+    /**
+     * Organization logo
+     */
+    private String logo;
+
+    /**
+     * Sets the url attribute of the Organization object
+     * @param url the address of the organization's website
+     */
+    public void setUrl( String url )
+    {
+        this.url = StringTool.trim( url );
+    }
+
+    /**
+     * Gets the organization URL.
+     *
+     * @return the organization url.
+     */
+    public String getUrl()
+    {
+        return url;
+    }
+
+    /**
+     * Sets the logo text attribute of the Organization object.
+     *
+     * @param logo the logo text
+     */
+    public void setLogo( String logo )
+    {
+        this.logo = StringTool.trim( logo );
+    }
+
+    /**
+     * Gets the organization logo text.
+     *
+     * @return the organization logo.
+     */
+    public String getLogo()
+    {
+        return logo;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/PackageGroup.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/PackageGroup.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/PackageGroup.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,71 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * A PackageGroup is a group of packages with a title which is used to document
+ * the packages inside a project when creating the javadoc.
+ *
+ * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
+ * @version PackageGroup.java,v 1.1 2003/01/07 08:23:27 jstrachan Exp
+ */
+public class PackageGroup
+    extends BaseObject
+{
+    private String title;
+    private String packages;
+
+    /**
+     * Returns the package patterns.
+     * @return String
+     */
+    public String getPackages()
+    {
+        return packages;
+    }
+
+    /**
+     * Returns the title of this package group.
+     *
+     * @return String
+     */
+    public String getTitle()
+    {
+        return title;
+    }
+
+    /**
+     * Sets the package patterns to use.
+     *
+     * @param packages The packages to set
+     */
+    public void setPackages(String packages)
+    {
+        this.packages = packages;
+    }
+
+    /**
+     * Sets the title of this package group.
+     *
+     * @param title The title to set
+     */
+    public void setTitle(String title)
+    {
+        this.title = title;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Plugin.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Plugin.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Plugin.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,32 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * A Plugin is essentially a Project, but in the context of  POM
+ * we only need the basic id, verions, and properties so extending
+ * BaseObject will suffice. If we find we need more then we can
+ * extend Project.
+ *
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Plugin.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class Plugin
+    extends BaseObject
+{
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Project.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Project.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Project.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,1635 @@
+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 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.util.StringTool;
+import org.apache.maven.verifier.ChecksumVerificationException;
+import org.apache.maven.verifier.DependencyVerifier;
+import org.apache.maven.verifier.RepoConfigException;
+import org.apache.maven.verifier.UnsatisfiedDependencyException;
+import org.dom4j.Document;
+import org.dom4j.io.SAXReader;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * @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 122464 2004-11-06 02:27:14Z brett $
+ * @todo Change the file reference for the source POM to an URL.
+ */
+public class Project extends BaseObject
+{
+    /** Project dependencies */
+    private List dependencies;
+
+    /** Repository where this project is stored. */
+    private Repository repository;
+
+    /** Build information */
+    private Build build;
+
+    /** Project Url */
+    private String url;
+
+    /** Project logo url */
+    private String logo;
+
+    /** Project description */
+    private String description;
+
+    /** Project's issue tracking Url */
+    private String issueTrackingUrl;
+
+    /** Project's mailing lists. */
+    private List mailingLists;
+
+    /** Project's developers. */
+    private List developers;
+
+    /** Project's (non-committing) contributors. */
+    private List contributors;
+
+    /** Project's licenses. Typically only one. */
+    private List licenses;
+
+    /** Current version */
+    private String currentVersion;
+
+    /** Organization that hosts the project. */
+    private Organization organization;
+
+    /** Year the project was started. */
+    private String inceptionYear;
+
+    /** The base package for this project i.e. org.apache.turbine */
+    private String projectPackage;
+
+    /**
+     * The site where the project is hosted. For example:
+     * jakarta.apache.org.
+     */
+    private String siteAddress;
+
+    /** The directory on the server where the site is stored. */
+    private String siteDirectory;
+
+    /**
+     * The server where distributions are stored. Typically this
+     * will be the central repository, but people may wish not to
+     * distribute to the central repository so if this value is defined
+     * then it will be obey.
+     */
+    private String distributionSite;
+
+    /**
+     * The directory on the server where the distributions are stored.
+     * There are source and binary distributions.
+     */
+    private String distributionDirectory;
+
+    /** Version of the project model. */
+    private String pomVersion;
+
+    /** Versions associated with this project. */
+    private List versions;
+
+    /** Branches associated with this project. */
+    private List branches;
+
+    /**
+     * Distributions map that associates the distribution ids
+     * with the distribution objects.
+     */
+    private HashMap versionMap;
+
+    /** POM to extend. */
+    private String pomToExtend;
+
+    /** Parent project. */
+    private Project parent;
+
+    /** Gump repository id. */
+    private String gumpRepositoryId;
+
+    /** Short description. */
+    private String shortDescription;
+
+    /** Project group id. */
+    private String groupId;
+
+    /** 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;
+
+    /**
+     * Dependencies Map so that an individual dependency can
+     * be retrieved by id.
+     */
+    private Map dependencyMap;
+
+    /** Artifact list. */
+    private List artifactList;
+
+    /**
+     * Reports to be generated for a project for a project. This is a list of the
+     * plugin ids which have a goal of the form <plugin-id>:report.
+     */
+    private List reports;
+
+    /** This project's Jelly context. */
+    private MavenJellyContext context;
+
+    /** TODO: use commons-collections. */
+    private List contextStack = new ArrayList();
+
+    /** A list of PackageGroup instances used for documenting the packages */
+    private List packageGroups;
+
+    /** ArtifactId. */
+    private String artifactId;
+
+    /** log for debug and output */
+    private static final Log log = LogFactory.getLog( Project.class );
+
+    /** the maven.xml file for this project */
+    private File mavenXml;
+
+    /**
+     * Default constructor.
+     */
+    public Project()
+    {
+        dependencies = new ArrayList();
+        mailingLists = new ArrayList();
+        developers = new ArrayList();
+        contributors = new ArrayList();
+        licenses = new ArrayList();
+        versions = new ArrayList();
+        branches = new ArrayList();
+        dependencyPaths = new HashMap();
+        dependencyMap = new HashMap();
+        reports = new ArrayList();
+        packageGroups = new ArrayList();
+    }
+
+    /**
+     * @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 ( id != null && id.indexOf( ":" ) > 0 )
+        {
+            return id;
+        }
+        return getGroupId() + ":" + getArtifactId();
+    }
+
+    /**
+     * Set the artifactId for this project. This is used to produce distributable
+     * artifacts.
+     *
+     * @param artifactId The artifactId.
+     */
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = StringTool.trim( artifactId );
+    }
+
+    /**
+     * Get the artifact id.
+     *
+     * @return The artifactId
+     */
+    public String getArtifactId()
+    {
+        if ( !isValid( artifactId ) )
+        {
+            this.artifactId = id;
+        }
+        return artifactId;
+    }
+
+    /**
+     * Set the project group id.
+     * 
+     * @param groupId Project group id.
+     */
+    public void setGroupId( String groupId )
+    {
+        this.groupId = StringTool.trim( groupId );
+    }
+
+    /**
+     * The group id in a particular POM refers to a real id of another
+     * project. We will use the Jelly and its tag libraries as an example
+     * of how this mechanism works.
+     * <p/>
+     * Jelly has a separate build for each Jelly tag lib that contributes to
+     * the overall family of tag libs. Much of the information required to build
+     * each tag library is shared so Maven's extension mechanism is utilized.
+     * <p/>
+     * We want each Jelly tag lib to have a group id of 'commons-jelly' because we
+     * want the resultant artifact to be of the form 'commons-jelly-X' where X is the
+     * id of the individual tag lib.
+     *
+     * @return Project group id.
+     */
+    public String getGroupId()
+    {
+        if ( groupId == null )
+        {
+            groupId = getArtifactId();
+        }
+        return groupId;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * Set the path to the file that this project extends.
+     * 
+     * @param pomToExtend Project which this project extends.
+     */
+    public void setExtend( String pomToExtend )
+    {
+        this.pomToExtend = StringTool.trim( pomToExtend );
+    }
+
+    /**
+     * Get the path to the file that this project extends.
+     * 
+     * @return Name of POM file that this project extends.
+     */
+    public String getExtend()
+    {
+        return pomToExtend;
+    }
+
+    /**
+     * @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 );
+    }
+
+    /**
+     * Set the gump repository descriptor.
+     * 
+     * @param gumpRepositoryId Gump repository id.
+     */
+    public void setGumpRepositoryId( String gumpRepositoryId )
+    {
+        this.gumpRepositoryId = StringTool.trim( gumpRepositoryId );
+    }
+
+    /**
+     * Get the gump repository descriptor.
+     * 
+     * @return Gump repository id.
+     */
+    public String getGumpRepositoryId()
+    {
+        return gumpRepositoryId;
+    }
+
+    /**
+     * Set short description
+     * 
+     * @param shortDescription Short description of project.
+     */
+    public void setShortDescription( String shortDescription )
+    {
+        this.shortDescription = shortDescription;
+    }
+
+    /**
+     * Get short description
+     * 
+     * @return Short description of project.
+     */
+    public String getShortDescription()
+    {
+        return shortDescription;
+    }
+
+    /**
+     * @return the directory name for this proejct's artifacts
+     */
+    public String getArtifactDirectory()
+    {
+        if ( isValid( getGroupId() ) )
+        {
+            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() );
+    }
+
+    /**
+     * Set the site address where the documentation lives.
+     * 
+     * @param siteAddress the hostname of the web server that hosts the
+     *                    project's web site (ex: "jakarta.apache.org")
+     */
+    public void setSiteAddress( String siteAddress )
+    {
+        this.siteAddress = StringTool.trim( siteAddress );
+    }
+
+    /**
+     * Get the projects site address.
+     * 
+     * @return the site address
+     */
+    public String getSiteAddress()
+    {
+        return siteAddress;
+    }
+
+    /**
+     * Set the site directory where the documentation
+     * lives.
+     * 
+     * @param siteDirectory the directory on the web server where the public
+     *                      web site for this project resides
+     *                      (ex: "/www/maven.apache.org/")
+     */
+    public void setSiteDirectory( String siteDirectory )
+    {
+        this.siteDirectory = StringTool.trim( siteDirectory );
+    }
+
+    /**
+     * Get the project's site directory.
+     * 
+     * @return the site directory
+     */
+    public String getSiteDirectory()
+    {
+        return siteDirectory;
+    }
+
+    /**
+     * Set the distribution site.
+     * 
+     * @param distributionSite the server where the
+     *                         final distributions will be published
+     */
+    public void setDistributionSite( String distributionSite )
+    {
+        this.distributionSite = StringTool.trim( distributionSite );
+    }
+
+    /**
+     * Get the project's distribution site.
+     * 
+     * @return the distribution site
+     */
+    public String getDistributionSite()
+    {
+        return distributionSite;
+    }
+
+    /**
+     * Set the distribution directory.
+     * 
+     * @param distributionDirectory the directory on the web server where the
+     *                              final distributions will be published
+     *                              (ex: "/www/maven.apache.org/builds/")
+     */
+    public void setDistributionDirectory( String distributionDirectory )
+    {
+        this.distributionDirectory = StringTool.trim( distributionDirectory );
+    }
+
+    /**
+     * Get the project's distribution directory.
+     * 
+     * @return the distribution directory
+     */
+    public String getDistributionDirectory()
+    {
+        return distributionDirectory;
+    }
+
+    /**
+     * Add a unique dependency for this project.
+     * 
+     * @param dependency Dependency for this project.
+     */
+    public void addDependency( Dependency dependency )
+    {
+        if ( !dependencies.contains( dependency ) )
+        {
+            dependencies.add( dependency );
+            dependencyMap.put( dependency.getId(), dependency );
+        }
+    }
+
+    /**
+     * Set a list of dependencies.
+     * 
+     * @param dependencies List of dependencies to add to the project.
+     */
+    public void setDependencies( List dependencies )
+    {
+        this.dependencies = dependencies;
+    }
+
+    /**
+     * Get the list of dependencies for this project.
+     * 
+     * @return the dependencies for this project
+     */
+    public List getDependencies()
+    {
+        return dependencies;
+    }
+
+    /**
+     * @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() );
+        }
+    }
+
+    /**
+     * @param versions parent versions
+     * @todo eventually, just use the map
+     */
+    private void addParentVersions( List versions )
+    {
+        for ( Iterator i = versions.iterator(); i.hasNext(); )
+        {
+            addVersion( ( Version ) 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( legacyToStandardId( 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( legacyToStandardId( depId ) );
+    }
+
+    /**
+     * Add a unique report for this project.
+     * 
+     * @param report report for this project.
+     */
+    public void addReport( String report )
+    {
+        String reportName = StringTool.trim( report );
+        if ( !reports.contains( reportName ) )
+        {
+            reports.add( reportName );
+        }
+    }
+
+    /**
+     * Set a list of dependencies.
+     * 
+     * @param reports the reports this project will produce
+     */
+    public void setReports( List reports )
+    {
+        this.reports = reports;
+    }
+
+    /**
+     * Get the list of dependencies for this project.
+     * 
+     * @return the dependencies for this project
+     */
+    public List getReports()
+    {
+        return reports;
+    }
+
+
+    /**
+     * Sets the build attribute of the Project object
+     * 
+     * @param build the build environment of a project
+     */
+    public void setBuild( Build build )
+    {
+        this.build = build;
+    }
+
+    /**
+     * Get the build model for this project.
+     * 
+     * @return the build attribute of the Project object
+     */
+    public Build getBuild()
+    {
+        return build;
+    }
+
+    /**
+     * Add a mailing list for this project.
+     * 
+     * @param mailingList Mailing list for this project.
+     */
+    public void addMailingList( MailingList mailingList )
+    {
+        mailingLists.add( mailingList );
+    }
+
+    /**
+     * Set mailing lists.
+     * 
+     * @param mailingLists Set the mailing lists for the project.
+     */
+    public void setMailingLists( List mailingLists )
+    {
+        this.mailingLists = mailingLists;
+    }
+
+    /**
+     * Return the mailing lists for this project.
+     * 
+     * @return List of mailing lists.
+     */
+    public List getMailingLists()
+    {
+        return mailingLists;
+    }
+
+    /**
+     * Add a developer to this project.
+     * 
+     * @param developer Developer for this project.
+     */
+    public void addDeveloper( Developer developer )
+    {
+        developers.add( developer );
+    }
+
+    /**
+     * Set the list of developers for this project.
+     * 
+     * @param developers Project developers.
+     */
+    public void setDevelopers( List developers )
+    {
+        this.developers = developers;
+    }
+
+    /**
+     * Return the developers for this project.
+     * 
+     * @return List of developers.
+     */
+    public List getDevelopers()
+    {
+        return developers;
+    }
+
+    /**
+     * Set contributors for this project.
+     * 
+     * @param contributors Contributors for this project.
+     */
+    public void setContributors( List contributors )
+    {
+        this.contributors = contributors;
+    }
+
+    /**
+     * Add a contributor to this project.
+     * 
+     * @param contributor Contributor for this project.
+     */
+    public void addContributor( Contributor contributor )
+    {
+        contributors.add( contributor );
+    }
+
+    /**
+     * Return the contributors for this project.
+     * 
+     * @return List of contributors.
+     */
+    public List getContributors()
+    {
+        return contributors;
+    }
+
+    /**
+     * Set licenses for this project.
+     * 
+     * @param licenses Licenses for this project.
+     */
+    public void setLicenses( List licenses )
+    {
+        this.licenses = licenses;
+    }
+
+    /**
+     * Add a license to this project.
+     * 
+     * @param license License for this project.
+     */
+    public void addLicense( License license )
+    {
+        licenses.add( license );
+    }
+
+    /**
+     * Return the licenses for this project.
+     * 
+     * @return List of licenses.
+     */
+    public List getLicenses()
+    {
+        return licenses;
+    }
+
+    /**
+     * Set the repository for this project.
+     * 
+     * @param repository the repository this project is part of
+     */
+    public void setRepository( Repository repository )
+    {
+        this.repository = repository;
+    }
+
+    /**
+     * Return the repository used by this project.
+     * 
+     * @return {@link Repository} for this project
+     */
+    public Repository getRepository()
+    {
+        return repository;
+    }
+
+    /**
+     * Sets the url attribute of the Project object.
+     * 
+     * @param url the URL to the organization's home page
+     */
+    public void setUrl( String url )
+    {
+        this.url = StringTool.trim( url );
+    }
+
+    /**
+     * Set the URL to this project's main page.
+     * 
+     * @return the URL to the organization's home page
+     */
+    public String getUrl()
+    {
+        return url;
+    }
+
+    /**
+     * Sets the issueTrackingUrl attribute of the Project object.
+     * 
+     * @param issueTrackingUrl the URL to the project's issue tracking system
+     */
+    public void setIssueTrackingUrl( String issueTrackingUrl )
+    {
+        this.issueTrackingUrl = StringTool.trim( issueTrackingUrl );
+    }
+
+    /**
+     * Set the URL to this project's issue tracking system.
+     * 
+     * @return the URL to the project's issue tracking system
+     */
+    public String getIssueTrackingUrl()
+    {
+        return issueTrackingUrl;
+    }
+
+    /**
+     * Sets the description attribute of the Project object.
+     * 
+     * @param description the long description of the project
+     */
+    public void setDescription( String description )
+    {
+        this.description = description;
+    }
+
+    /**
+     * Gets the description attribute of the Project object.
+     * 
+     * @return the long description of the project
+     */
+    public String getDescription()
+    {
+        return description;
+    }
+
+    /**
+     * 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 ( repository != null );
+    }
+
+    /**
+     * Sets the currentVersion attribute of the Project object.
+     * 
+     * @param currentVersion the current version number of the project, e.g.
+     *                       <code>1.0</code>, <code>1.1-dev</code>
+     */
+    public void setCurrentVersion( String currentVersion )
+    {
+        this.currentVersion = StringTool.trim( currentVersion );
+    }
+
+    /**
+     * Gets the currentVersion attribute of the Project object.
+     * 
+     * @return the current version of the project e.g. <code>1.0</code>,
+     *         <code>1.1-dev</code>
+     */
+    public String getCurrentVersion()
+    {
+        return currentVersion;
+    }
+
+    /**
+     * Sets the project Organization.
+     * 
+     * @param organization the organisation name
+     */
+    public void setOrganization( Organization organization )
+    {
+        this.organization = organization;
+    }
+
+    /**
+     * Get the Project Organization.
+     * 
+     * @return the Project Organization object.
+     */
+    public Organization getOrganization()
+    {
+        return organization;
+    }
+
+    /**
+     * Sets the package attribute of the Project object.
+     * 
+     * @param projectPackage the package name, e.g.
+     *                       <code>org.apache.maven</code>
+     */
+    public void setPackage( String projectPackage )
+    {
+        this.projectPackage = StringTool.trim( projectPackage );
+    }
+
+    /**
+     * Gets the package attribute of the Project object.
+     * 
+     * @return the base package name for the project, e.g.
+     *         <code>org.apache.maven</code>
+     */
+    public String getPackage()
+    {
+        return projectPackage;
+    }
+
+    /**
+     * Sets the inceptionYear attribute of the Project object.
+     * 
+     * @param inceptionYear the year the project started, e.g. <code>2000</code>
+     */
+    public void setInceptionYear( String inceptionYear )
+    {
+        this.inceptionYear = StringTool.trim( inceptionYear );
+    }
+
+    /**
+     * Gets the inceptionYear attribute of the Project object
+     * 
+     * @return the inception year
+     */
+    public String getInceptionYear()
+    {
+        return inceptionYear;
+    }
+
+    /**
+     * Sets the version attribute of the Project object
+     * 
+     * @param pomVersion the new value
+     */
+    public void setPomVersion( String pomVersion )
+    {
+        this.pomVersion = StringTool.trim( pomVersion );
+    }
+
+    /**
+     * Gets the version attribute of the Project object.
+     * 
+     * @return the version of the project object specified or <code>1</code>
+     *         if no value is provided
+     */
+    public String getPomVersion()
+    {
+        if ( pomVersion == null )
+        {
+            pomVersion = "1";
+        }
+        return pomVersion;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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 );
+        }
+        versions.add( version );
+    }
+
+    /**
+     * Set the versions for this project.
+     * 
+     * @param versions List of versions for this project.
+     */
+    public void setVersions( List versions )
+    {
+        this.versions = versions;
+        versionMap = null;
+    }
+
+    /**
+     * Return the distributions for this project.
+     * 
+     * @return List of distributions.
+     */
+    public List getVersions()
+    {
+        return versions;
+    }
+
+    /**
+     * Add a branch to this project.
+     * 
+     * @param branch Branch for this project.
+     */
+    public void addBranch( Branch branch )
+    {
+        branches.add( branch );
+    }
+
+    /**
+     * Set the branches for this project.
+     * 
+     * @param branches List of branches for this project.
+     */
+    public void setBranches( List branches )
+    {
+        this.branches = branches;
+    }
+
+    /**
+     * Return the branches for this project.
+     * 
+     * @return List of branches.
+     */
+    public List getBranches()
+    {
+        return branches;
+    }
+
+    /**
+     * Return a distribution for this project.
+     * 
+     * @param versionId the id of the version to return
+     * @return List of distributions.
+     */
+    public Version getVersionById( String versionId )
+    {
+        // We have to lazily initialize this because of betwixt/digester
+        // behavior where an objects addXXX() method is called but
+        // the parameter object is not yet fully populated.
+        if ( versionMap == null )
+        {
+            versionMap = new HashMap();
+
+            for ( Iterator i = versions.iterator(); i.hasNext(); )
+            {
+                Version version = ( Version ) i.next();
+                versionMap.put( version.getId(), version );
+            }
+        }
+
+        return ( Version ) versionMap.get( versionId );
+    }
+
+    /**
+     * Set the project logo image URL.
+     * 
+     * @param logo the url for the project logo image.
+     */
+    public void setLogo( String logo )
+    {
+        this.logo = StringTool.trim( logo );
+    }
+
+    /**
+     * Return the project logo image URL.
+     * 
+     * @return the logo image URL
+     */
+    public String getLogo()
+    {
+        return logo;
+    }
+
+    /**
+     * Returns a list of PackageGroup instances used for documenting the
+     * packages
+     * 
+     * @return the list of PackageGroup instances
+     */
+    public List getPackageGroups()
+    {
+        return packageGroups;
+    }
+
+    /**
+     * Sets the list of PackageGroup instances used for documenting the packages
+     * 
+     * @param packageGroups is the list of PackageGroup instances
+     */
+    public void setPackageGroups( List packageGroups )
+    {
+        this.packageGroups = packageGroups;
+    }
+
+    /**
+     * Adds a new PackageGroup to this project
+     * 
+     * @param packageGroup is the new PackageGroup instance to be added to the
+     *                     list
+     */
+    public void addPackageGroup( PackageGroup packageGroup )
+    {
+        packageGroups.add( packageGroup );
+    }
+
+    /**
+     * Create a dom4j document from the POM. Used for dvsl processing right now.
+     * Hopefully we can make this more general so that people
+     * can use the POM in XSLT transformations. This is not
+     * working for some reason, I believe due to encoding problems.
+     * This might be working now but I will test it later.
+     * 
+     * @return Document Dom4j document.
+     * @throws Exception If an error occurs while creating the dom4j document.
+     */
+    public Document createDocument() throws Exception
+    {
+        SAXReader reader = new SAXReader();
+        return reader.read( new InputStreamReader( MavenUtils.getProjectInputStream( this ) ) );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    /** 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 Exception If an error occurs during project initialization.
+     */
+    public void initialize() throws IOException
+    {
+        if ( initialized )
+        {
+            return;
+        }
+
+        buildArtifactList();
+        dependencyClasspath = DependencyClasspathBuilder.build( this );
+        setDependencyVerifier( new DependencyVerifier( this ) );
+        getDependencyVerifier().setIgnoreErrors( false );
+        if ( build != null )
+        {
+            build.resolveDirectories( 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 )
+        {
+            newId += ":" + id;
+        }
+
+        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 ( repository == null )
+        {
+            repository = parent.repository;
+        }
+
+        if ( getName() == null )
+        {
+            setName( parent.getName() );
+        }
+
+        if ( url == null )
+        {
+            url = parent.url;
+        }
+
+        if ( logo == null )
+        {
+            logo = parent.logo;
+        }
+
+        if ( description == null )
+        {
+            description = parent.description;
+        }
+
+        if ( issueTrackingUrl == null )
+        {
+            issueTrackingUrl = parent.issueTrackingUrl;
+        }
+
+        if ( currentVersion == null )
+        {
+            currentVersion = parent.currentVersion;
+        }
+
+        if ( organization == null )
+        {
+            organization = parent.organization;
+        }
+
+        if ( inceptionYear == null )
+        {
+            inceptionYear = parent.inceptionYear;
+        }
+
+        if ( projectPackage == null )
+        {
+            projectPackage = parent.projectPackage;
+        }
+
+        if ( siteAddress == null )
+        {
+            siteAddress = parent.siteAddress;
+        }
+
+        if ( siteDirectory == null )
+        {
+            siteDirectory = parent.siteDirectory;
+        }
+
+        if ( distributionSite == null )
+        {
+            distributionSite = parent.distributionSite;
+        }
+
+        if ( distributionDirectory == null )
+        {
+            distributionDirectory = parent.distributionDirectory;
+        }
+
+        if ( pomVersion == null )
+        {
+            pomVersion = parent.pomVersion;
+        }
+
+        if ( gumpRepositoryId == null )
+        {
+            gumpRepositoryId = parent.gumpRepositoryId;
+        }
+
+        if ( shortDescription == null )
+        {
+            shortDescription = parent.shortDescription;
+        }
+
+        if ( groupId == null )
+        {
+            groupId = parent.groupId;
+        }
+
+        if ( build == null )
+        {
+            // Must copy as resolveDirs changes entries
+            build = new Build();
+            build.mergeParent( parent.build );
+        }
+        else
+        {
+            build.mergeParent( parent.build );
+        }
+
+        // The following replaces the list merges
+        if ( mailingLists == null || mailingLists.isEmpty() )
+        {
+            mailingLists = parent.mailingLists;
+        }
+        if ( contributors == null || contributors.isEmpty() )
+        {
+            contributors = parent.contributors;
+        }
+        if ( developers == null || developers.isEmpty() )
+        {
+            developers = parent.developers;
+        }
+        if ( versions == null || versions.isEmpty() )
+        {
+            setVersions( parent.versions );
+        }
+        if ( licenses == null || licenses.isEmpty() )
+        {
+            licenses = parent.licenses;
+        }
+        if ( branches == null || branches.isEmpty() )
+        {
+            branches = parent.branches;
+        }
+        if ( reports == null || reports.isEmpty() )
+        {
+            reports = parent.reports;
+        }
+        if ( packageGroups == null || packageGroups.isEmpty() )
+        {
+            packageGroups = parent.packageGroups;
+        }
+
+        //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.dependencies );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Repository.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Repository.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Repository.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,280 @@
+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 org.apache.maven.util.EnhancedStringTokenizer;
+import org.apache.maven.util.StringTool;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * NOTE: This is very CVS specific, but I would like to try additional SCM
+ * package like subversion ASAP.
+ *
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ *
+ * @version $Id: Repository.java 122300 2004-05-29 23:21:26Z dion $
+ *
+ * @todo Check on the CVS specific methods at the bottom of this file. I believe they
+ *       are used by the gump plugin.
+ */
+public class Repository
+    extends BaseObject
+{
+    /** Connection URL. */
+    private String connection;
+
+    /** Developer connection URL. */
+    private String developerConnection;
+
+    /** Web URL. */
+    private String url;
+
+    /**
+     * Sets the connection attribute of the Repository object
+     *
+     * @param connection Connection URL.
+     */
+    public void setConnection( String connection )
+    {
+        this.connection = StringTool.trim(connection);
+    }
+
+    /**
+     * Sets the connection attribute of the Repository object
+     *
+     * @param connection Developer connection URL.
+     */
+    public void setDeveloperConnection( String developerConnection )
+    {
+        this.developerConnection = StringTool.trim(developerConnection);
+    }
+
+    /**
+     * Gets the connection attribute of the Repository object
+     *
+     * @return Connection URL.
+     */
+    public String getConnection()
+    {
+        return connection;
+    }
+
+    /**
+     * Gets the connection attribute of the Repository object
+     *
+     * @return Connection URL.
+     */
+    public String getDeveloperConnection()
+    {
+        return developerConnection;
+    }
+
+    /**
+     * Sets the url attribute of the Repository object
+     *
+     * @param url Web URL.
+     */
+    public void setUrl( String url )
+    {
+        this.url = StringTool.trim(url);
+    }
+
+    /**
+     * Gets the url attribute of the Repository object
+     *
+     * @return Web URL.
+     */
+    public String getUrl()
+    {
+        return url;
+    }
+
+    /**
+     * Get the SCM type
+     */
+    public String getScmType() {
+        if ( isValid( getConnection() ) )
+        {
+            return splitSCMConnection(getConnection())[1];
+        }
+        return null;
+    }
+
+    /**
+     * Get cvs root.
+     *
+     * @return CVS root.
+     */
+    public String getCvsRoot()
+    {
+        if ( isValid( getConnection() ) )
+        {
+            return getCvsRoot(getConnection(), "");
+        }
+
+        return null;
+    }
+
+    /**
+     * Get cvs module.
+     *
+     * @return CVS module.
+     */
+    public String getCvsModule()
+    {
+        if ( isValid( getConnection() ) )
+        {
+            return getCvsModule(getConnection());
+        }
+
+        return null;
+    }
+    
+    /**
+     * Get cvs server.
+     *
+     * Used in xdocs/src/plugin-resources/templates/cvs-usage.xml
+     *
+     * @param conn six token connection string
+     * @return CVS module.
+     */
+    public String getCvsServer(String conn)
+    {
+        String[] tokens = splitSCMConnection(conn);
+        if (!tokens[1].equals("cvs"))
+        {
+            return "";
+        }
+
+        if(tokens[3].indexOf('@') >= 0)
+        {
+            return tokens[3].substring(tokens[3].indexOf('@')+1);
+        }
+        else
+        {
+            return tokens[3];
+        }
+    }
+
+    /**
+     * Get cvs root.
+     *
+     * Used in xdocs/src/plugin-resources/templates/cvs-usage.xml
+     *
+     * @param conn six token connection string
+     * @param username username override if non-empty.
+     * @return CVS root.
+     */
+    public String getCvsRoot(String conn, String username)
+    {
+        String[] tokens = splitSCMConnection(conn);
+        
+        if (!tokens[1].equals("cvs"))
+        {
+            return "";
+        }
+        
+        if(tokens[3].indexOf('@') >= 0)
+        {
+            if (username.length() == 0)
+            {
+                username = tokens[3].substring(0, tokens[3].indexOf('@'));
+            }
+            tokens[3] = username + "@" + tokens[3].substring(tokens[3].indexOf('@') + 1);
+        }
+        String result = ":" + tokens[2] + ":" + tokens[3] + ":" + tokens[4];
+        return result;
+    }
+  
+    /**
+     * Get cvs module.
+     *
+     * Used in xdocs/src/plugin-resources/templates/cvs-usage.xml
+     *
+     * @param conn six token connection string
+     * @return CVS module.
+     */
+    public String getCvsModule(String conn)
+    {
+        String[] tokens = splitSCMConnection(conn);
+        if (!tokens[1].equals("cvs"))
+        {
+            return "";
+        }
+        return tokens[5];
+    }    
+     
+   
+    /**
+     * Splits an SCM string into parts 
+     * @param connection
+     * @return
+     */
+    public static String[] splitSCMConnection(String connection)
+    {
+        if (connection == null)
+        {
+            throw new NullPointerException("repository connection is null");
+        }
+
+        if (connection.length() < 4)
+        {
+            throw new IllegalArgumentException("repository connection is too short");
+        }
+
+        if (!connection.startsWith("scm"))
+        {
+            throw new IllegalArgumentException("repository connection must start with scm[delim]");
+        }
+        
+        String delimiter = "" + connection.charAt(3);
+
+        EnhancedStringTokenizer tok = new EnhancedStringTokenizer(connection, delimiter);
+
+        String[] tokens = tokenizerToArray(tok);
+
+        // for a valid repository, it should be scm:<provider> at least
+        if (tokens.length >= 1 && tokens[1].equals("cvs"))
+        {
+            if (tokens.length != 6)
+            {
+                throw new IllegalArgumentException("cvs repository connection string doesn't contain six tokens");
+            }
+        }
+        return tokens;
+    }
+
+    /**
+     * Converts a tokenizer to an array of strings
+     * FIXME: This should be in a string util class
+     * @param tok
+     * @return String[]
+     */
+    public static String[] tokenizerToArray(EnhancedStringTokenizer tok)
+    {
+        List l = new ArrayList();
+        while (tok.hasMoreTokens())
+        {
+            l.add(tok.nextToken());
+        }
+        return (String[]) l.toArray(new String[l.size()]);
+    }
+
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Resource.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Resource.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Resource.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,166 @@
+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 org.apache.maven.MavenUtils;
+import org.apache.maven.util.StringTool;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Represents a set of files in a single directory.
+ *
+ * @author <a href="mailto:james at jamestaylor.org">James Taylor</a>
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ */
+public class Resource
+    extends BaseObject
+{
+    /** Resource Directory */
+    private String dir;
+
+    /** Target directory. */
+    private String targetPath = "";
+
+    /** Include patterns. */
+    private List includes = new ArrayList();
+
+    /** Exclude patterns. */
+    private List excludes = new ArrayList();
+
+    /**
+     * Is filtering on?
+     */
+    private boolean isFiltering = false;
+
+    /**
+     * Add an include pattern.
+     *
+     * @param pattern Add an include pattern.
+     */
+    public void addInclude( String pattern )
+    {
+        this.includes.add( StringTool.trim(pattern) );
+    }
+
+    /**
+     * Add an exclude pattern.
+     *
+     * @param pattern Add an exlude pattern.
+     */
+    public void addExclude( String pattern )
+    {
+        this.excludes.add( StringTool.trim(pattern) );
+    }
+
+    /**
+     * Retrieve a list of include patterns.
+     *
+     * @return List of include patterns.
+     */
+    public List getIncludes()
+    {
+        return this.includes;
+    }
+
+    /**
+     * Retrieve a list of exclude patterns.
+     *
+     * @return List of exclude patterns.
+     */
+    public List getExcludes()
+    {
+        return this.excludes;
+    }
+
+    /**
+     * Set the directory where resources are located.
+     *
+     * @param dir The directory where resources are located.
+     */
+    public void setDirectory( String dir )
+    {
+        this.dir = StringTool.trim(dir);
+    }
+
+    /**
+     * Get the directory where resources are located.
+     *
+     * @return The directory where resources are located.
+     */
+    public String getDirectory()
+    {
+        return this.dir;
+    }
+
+   /**
+     * Set the target directory where resources are placed.
+     *
+     * @param targetPath The directory where resources are placed.
+     */
+    public void setTargetPath( String targetPath )
+    {
+        this.targetPath = StringTool.trim(targetPath);
+    }
+
+    /**
+     * Get the directory where resources are placed
+     *
+     * @return The directory where resources are placed.
+     */
+    public String getTargetPath()
+    {
+        return this.targetPath;
+    }
+
+    public String toString()
+    {
+        return "[dir = " + this.dir + "]";
+    }
+
+    /**
+     * @param isFiltering specifies whether filtering is active or not
+     */
+    public void setFiltering( boolean isFiltering )
+    {
+        this.isFiltering = isFiltering;
+    }
+
+    /**
+     * @return whether filtering is on or off
+     */
+    public boolean getFiltering()
+    {
+        return this.isFiltering;
+    }
+
+    /**
+     * Resolve directory against a base directory if it is not already absolute.
+     * @todo proper project marshaller should construct as such
+     * @param basedir the base directory for relative paths
+     * @throws IOException if canonical path fails
+     */
+    public void resolveDirectory( File basedir ) throws IOException
+    {
+        dir = MavenUtils.makeAbsolutePath( basedir, dir );
+    }
+
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/SourceModification.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/SourceModification.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/SourceModification.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,86 @@
+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 org.apache.maven.util.StringTool;
+
+/**
+ * A source modification is made when a given class or property is present
+ * during a build. Currently with the way Maven works an exclusion is the only thing
+ * that makes sense. But I want to account for future cases where the sources
+ * are not all together and someone may want to include a body of source given
+ * the presence of a class or property.
+ *
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: SourceModification.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class SourceModification
+    extends Resource
+{
+    /**
+     * Class name to check for in the classpath. If it is present then perform
+     * the source modification.
+     */
+    private String className;
+
+    /**
+     * Property to check. If the property is present then perform the source
+     * modification.
+     */
+    private String property;
+
+    /**
+     * Sets the className attribute of the SourceModification object
+     *
+     * @param className Classname that if not present triggers an exclusion of sources.
+     */
+    public void setClassName( String className )
+    {
+        this.className = StringTool.trim(className);
+    }
+
+    /**
+     * Gets the className attribute of the SourceModification object
+     *
+     * @return Classname that if not present triggers an exclusion of sources.
+     */
+    public String getClassName()
+    {
+        return className;
+    }
+
+    /**
+     * Sets the property attribute of the SourceModification object
+     *
+     * @param property Property that when not present triggers an exclusion of sources.
+     */
+    public void setProperty( String property )
+    {
+        this.property = StringTool.trim(property);
+    }
+
+    /**
+     * Gets the property attribute of the SourceModification object
+     *
+     * @return Property that when not present triggers an exclusion of sources.
+     */
+    public String getProperty()
+    {
+        return property;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/UnitTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/UnitTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/UnitTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,143 @@
+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 org.apache.maven.util.StringTool;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Collects unit-test include and exclude patterns and resources.
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
+ * @author <a href="mailto:martin at mvdb.net">Martin van den Bemt</a>
+ * @author <a href="mailto:james at jamestaylor.org">James Taylor</a>
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ */
+public class UnitTest
+    extends BaseObject
+{
+    /** List of test resources. */
+    private List resources = new ArrayList();
+
+    /** Include patterns. */
+    private List includes = new ArrayList();
+
+    /** Exclude patterns. */
+    private List excludes = new ArrayList();
+
+    /**
+     * Add an include pattern.
+     *
+     * @param pattern Add an include pattern.
+     */
+    public void addInclude( String pattern )
+    {
+        this.includes.add( StringTool.trim(pattern) );
+    }
+
+    /**
+     * Add an exclude pattern.
+     *
+     * @param pattern Add an exlude pattern.
+     */
+    public void addExclude( String pattern )
+    {
+        this.excludes.add( StringTool.trim(pattern) );
+    }
+
+    /**
+     * Retrieve a list of include patterns.
+     *
+     * @return List of include patterns.
+     */
+    public List getIncludes()
+    {
+        return this.includes;
+    }
+
+    /**
+     * Retrieve a list of exclude patterns.
+     *
+     * @return List of exclude patterns.
+     */
+    public List getExcludes()
+    {
+        return this.excludes;
+    }
+
+    /**
+     * Add a test resource.
+     *
+     * @param resource Add a test resource.
+     */
+    public void addResource( Resource resource )
+    {
+        this.resources.add( resource );
+    }
+
+    /**
+     * Set the resources.
+     *
+     * @param resources Test resources.
+     */
+    public void setResources( List resources )
+    {
+        this.resources = resources;
+    }
+
+    /**
+     * Gets the resources.
+     *
+     * @return Resources patterns for including or excluding arbitrary resources.
+     */
+    public List getResources()
+    {
+        return this.resources;
+    }
+
+    /**
+     * Setup inheritance from a parent test element.
+     * @param parent the parent test element
+     */
+    void mergeParent(UnitTest parent)
+    {
+        if ( parent == null )
+        {
+            return;
+        }
+
+        // The following replaces the list merges
+        if ( resources == null || resources.isEmpty() )
+        {
+            resources = parent.resources;
+        }
+        if ( includes == null || includes.isEmpty() )
+        {
+            includes = parent.includes;
+        }
+        if ( excludes == null || excludes.isEmpty() )
+        {
+            excludes = parent.excludes;
+        }
+        // Project.mergeLists(parent.resources, resources);
+        // Project.mergeLists(parent.includes, includes);
+        // Project.mergeLists(parent.excludes, excludes);
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Version.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Version.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/Version.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,61 @@
+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 org.apache.maven.util.StringTool;
+
+/**
+ * @author <a href="mailto:jvanzyl at apache.org">Jason van Zyl</a>
+ * @version $Id: Version.java 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class Version
+    extends BaseObject
+{
+    /**
+     * Repository tag from which this distribution
+     * is made.
+     */
+    private String tag;
+
+    /**
+     * Constructor for the MailingList object
+     */
+    public Version()
+    {
+    }
+
+    /**
+     * Sets the tag attribute of the Distribution object
+     *
+     * @param tag the repository tag from which this distribution is made
+     */
+    public void setTag( String tag )
+    {
+        this.tag = StringTool.trim(tag);
+    }
+
+    /**
+     * Gets the tag attribute of the Distribution object
+     *
+     * @return the repository tag from which this distribution is made
+     */
+    public String getTag()
+    {
+        return tag;
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/project/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.project</title>
+</head>
+<body>
+
+  <p>Classes used in the Maven <code>Project Object Model</code></p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractArtifact.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractArtifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractArtifact.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,198 @@
+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.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.apache.plexus.util.FileUtils;
+
+import java.io.File;
+
+/**
+ * Base class from which all artifact subclasses are derived.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: AbstractArtifact.java 122500 2004-12-04 06:21:14Z brett $
+ */
+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;
+    }
+
+    /** @see Artifact#generatePath */
+    public String generatePath()
+    {
+        return fs + getDependency().getArtifactDirectory()
+             + fs + getDependency().getType() + "s"
+             + fs + getDependency().getArtifact();
+    }
+
+    /** @see Artifact#getUrlPath */
+    public String getUrlPath()
+    {
+        return "/" + getDependency().getArtifactDirectory()
+             + "/" + getDependency().getType() + "s"
+             + "/" + 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()
+    {
+        return getDependency().getVersion().indexOf( MavenConstants.SNAPSHOT_SIGNIFIER ) > 0 ||
+            getDependency().getArtifact().indexOf( MavenConstants.SNAPSHOT_SIGNIFIER ) > 0;
+    }
+
+    /** @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.0.2/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/AbstractRepositoryLayout.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public abstract class AbstractRepositoryLayout
+{
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/Artifact.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/Artifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/Artifact.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,129 @@
+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;
+import org.apache.maven.verifier.ChecksumVerificationException;
+
+import java.io.File;
+
+/**
+ * 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 122416 2004-09-24 10:38:46Z brett $
+ */
+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.0.2/src/java/org/apache/maven/repository/ArtifactTypeHandler.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/ArtifactTypeHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/ArtifactTypeHandler.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,49 @@
+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 122320 2004-06-23 13:00:37Z brett $
+ */
+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.0.2/src/java/org/apache/maven/repository/DefaultArtifactFactory.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactFactory.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactFactory.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,60 @@
+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 122095 2004-03-01 22:36:39Z evenisse $
+ *
+ * @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
+             || dependency.getType().equals( "jar" )
+             || dependency.getType().equals( "test" ) )
+        {
+            dependency.setType( "jar" );
+            return new GenericArtifact( dependency );
+        }
+        else
+        {
+            return new GenericArtifact( dependency );
+        }
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultArtifactTypeHandler.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,76 @@
+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 122327 2004-06-26 14:55:46Z dion $
+ */
+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 (type.equals("uberjar") || type.equals("ejb") || type.equals("plugin")) {
+            return ".jar";
+        }
+        else {
+            return "." + type;
+        }
+    }
+}
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/DefaultRepositoryLayout.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+ * ====================================================================
+ */
+
+/**
+ * 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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public class DefaultRepositoryLayout implements RepositoryLayout
+{
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/GenericArtifact.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/GenericArtifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/GenericArtifact.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/repository/PluginArtifact.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/PluginArtifact.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/PluginArtifact.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,52 @@
+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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/repository/RepositoryLayout.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/RepositoryLayout.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/RepositoryLayout.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+public interface RepositoryLayout
+{
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/repository/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.repository</title>
+</head>
+<body>
+
+  <p>Repository and their held artifacts</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Base64.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Base64.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Base64.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,388 @@
+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];
+            int encIdx = 0;
+            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();
+
+        int index = 0;
+        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.0.2/src/java/org/apache/maven/util/Base64.java
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/BootstrapDownloadMeter.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/BootstrapDownloadMeter.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/BootstrapDownloadMeter.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+ * ====================================================================
+ */
+
+/**
+ * Bootstrap download progress meter.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: BootstrapDownloadMeter.java 122358 2004-07-06 12:45:48Z brett $
+ */
+public class BootstrapDownloadMeter implements DownloadMeter
+{
+    private int shownSoFar = 0;
+    private final int numHashes;
+    private final char hashChar;
+
+    public BootstrapDownloadMeter()
+    {
+        this( 20, '.' );
+    }
+
+    public BootstrapDownloadMeter(int numHashes, char hashChar)
+    {
+        this.numHashes = numHashes;
+        this.hashChar = hashChar;
+    }
+
+    /* non-Javadoc. @see DownloadMeter.update(int,int) */
+    public void update(int complete, int total)
+    {
+        if (total > 0)
+        {
+            int numToShow = ( complete * numHashes ) / total;
+            for ( int i = shownSoFar + 1; i <= numToShow; i++ )
+            {
+                System.out.print( hashChar );
+            }
+            shownSoFar = numToShow;
+        }
+    }
+
+    /* non-Javadoc. @see DownloadMeter.finish(int) */
+    public void finish(int total)
+    {
+        update( total, total );
+        System.out.println(" (" + (total/1024) + "K)");
+    }
+
+}
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/CaseInsensitiveGlobPatternMapper.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,54 @@
+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.0.2/src/java/org/apache/maven/util/ConsoleDownloadMeter.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/ConsoleDownloadMeter.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/ConsoleDownloadMeter.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,43 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * Console download progress meter.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: ConsoleDownloadMeter.java 122358 2004-07-06 12:45:48Z brett $
+ */
+public class ConsoleDownloadMeter implements DownloadMeter
+{
+    /* non-Javadoc. @see DownloadMeter.update(int,int) */
+    public void update(int complete, int total)
+    {
+        System.out.print((complete/1024) + "/" + (total == 0 ? "?" : (total/1024) + "K" ) + "\r");
+    }
+
+    /* non-Javadoc. @see DownloadMeter.finish(int) */
+    public void finish(int total)
+    {
+        System.out.println((total/1024) + "K downloaded");
+    }
+
+}
+
+
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLFormatter.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLFormatter.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLFormatter.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.text.DecimalFormat;
+
+/**
+ * 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 122175 2004-03-28 21:46:05Z evenisse $
+ * @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.0.2/src/java/org/apache/maven/util/DVSLPathTool.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLPathTool.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DVSLPathTool.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,303 @@
+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.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 122176 2004-03-28 23:44:34Z dion $
+ * @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 (relativePath.equals("."))
+        {
+            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.0.2/src/java/org/apache/maven/util/DownloadMeter.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DownloadMeter.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/DownloadMeter.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,42 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * Download progress meter.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: DownloadMeter.java 122358 2004-07-06 12:45:48Z brett $
+ */
+public interface DownloadMeter
+{
+    /**
+     * Update the progress bar.
+     * @param complete amount complete in bytes
+     * @param total the total in bytes, or 0 if unknown
+     */
+    void update(int complete, int total);
+
+    /**
+     * Finalise the progress bar.
+     * @param total the total in bytes
+     */
+    void finish(int total);
+}
+
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/EnhancedStringTokenizer.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/EnhancedStringTokenizer.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/EnhancedStringTokenizer.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,123 @@
+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.0.2/src/java/org/apache/maven/util/Expand.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Expand.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/Expand.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,218 @@
+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.tools.ant.util.FileUtils;
+
+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;
+
+/**
+ * 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;
+        try
+        {
+            // code from WarExpand
+            zis = new ZipInputStream( new FileInputStream( source ) );
+            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 ( zis != null )
+            {
+                try
+                {
+                    zis.close();
+                }
+                catch ( IOException e )
+                {
+                    // intentionally left blank
+                }
+            }
+        }
+    }
+
+    /** 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 )
+                    {
+                        // intentionally left blank
+                    }
+                }
+            }
+        }
+
+        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.0.2/src/java/org/apache/maven/util/HttpUtils.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/HttpUtils.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/HttpUtils.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,774 @@
+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.httpclient.Credentials;
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpRecoverableException;
+import org.apache.commons.httpclient.NTCredentials;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.util.DateParseException;
+import org.apache.commons.httpclient.util.DateParser;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Authenticator;
+import java.net.HttpURLConnection;
+import java.net.PasswordAuthentication;
+import java.net.URL;
+import java.net.URLConnection;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * 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
+{
+    private static final Log LOG = LogFactory.getLog( HttpUtils.class );
+
+    private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone( "GMT" );
+
+    /**
+     * @todo make it a property.
+     */
+    private static final int REDIRECT_LIMIT = 5;
+
+    private static final DownloadMeter silentDownloadMeter = new SilentDownloadMeter();
+
+    private static DownloadMeter defaultDownloadMeter = new ConsoleDownloadMeter();
+
+    /**
+     * 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.
+     */
+    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 );
+    }
+
+    /**
+     * 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.
+     * @param loginHost       The host the authentication request is originating from.
+     *                        Essentially, the computer name for this machine.
+     * @param loginDomain     the domain to authenticate within.
+     */
+    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, defaultDownloadMeter );
+
+        // 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, silentDownloadMeter );
+            }
+            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
+     */
+    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, defaultDownloadMeter );
+    }
+
+    /**
+     * 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 loginHost       The host the authentication request is originating from.
+     *                        Essentially, the computer name for this machine.
+     * @param loginDomain     the domain to authenticate within.
+     * @param downloadMeter   the download meter to use
+     */
+    public static void getFile( String url,
+                                File destinationFile,
+                                boolean ignoreErrors,
+                                boolean useTimestamp,
+                                String proxyHost,
+                                String proxyPort,
+                                String proxyUserName,
+                                String proxyPassword,
+                                String loginHost,
+                                String loginDomain,
+                                DownloadMeter downloadMeter )
+        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,
+                     downloadMeter );
+        }
+        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
+     * @param loginHost       The host the authentication request is originating from.
+     *                        Essentially, the computer name for this machine.
+     * @param loginDomain     the domain to authenticate within.
+     * @param downloadMeter   the download meter to use
+     * @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,
+                                String loginHost,
+                                String loginDomain,
+                                DownloadMeter downloadMeter )
+        throws IOException
+    {
+        String[] s = parseUrl( url );
+        String username = s[0];
+        String password = s[1];
+        String parsedUrl = s[2];
+
+        LOG.debug( "Getting URL: " + parsedUrl );
+        if ( username != null )
+        {
+            LOG.debug( "username is " + username + "; password hidden" );
+        }
+
+        URL source = new URL( parsedUrl );
+        if ( source.getProtocol().equals( "http" ) || source.getProtocol().equals( "https" ) )
+        {
+            Credentials creds = null;
+            if ( !empty( loginHost ) || !empty( loginDomain ) )
+            {
+                creds = new NTCredentials( proxyUserName, proxyPassword, loginHost, loginDomain );
+            }
+            else if ( !empty( proxyUserName ) || !empty( proxyPassword ) )
+            {
+                creds = new UsernamePasswordCredentials( proxyUserName, proxyPassword );
+            }
+
+            HttpClient client = new HttpClient();
+            HostConfiguration hc = new HostConfiguration();
+            hc.setHost( source.getHost(), source.getPort(), source.getProtocol() );
+
+            if ( !empty( proxyHost ) || !empty( proxyPort ) )
+            {
+                try
+                {
+                    hc.setProxy( proxyHost, Integer.parseInt( proxyPort ) );
+                }
+                catch ( NumberFormatException e )
+                {
+                    LOG.error( "Unable to parse proxy port '" + proxyPort + "', ignoring proxy settings" );
+                }
+            }
+            client.setHostConfiguration( hc );
+            if ( creds != null )
+            {
+                client.getState().setProxyCredentials( null, null, creds );
+                client.getState().setAuthenticationPreemptive( true );
+            }
+
+            // Basic authentication
+            if ( username != null || password != null )
+            {
+                creds = new UsernamePasswordCredentials( username, password );
+                client.getState().setCredentials( null, null, creds );
+                client.getState().setAuthenticationPreemptive( true );
+            }
+
+            for ( int i = 0; i < REDIRECT_LIMIT; i++ )
+            {
+                String redirect = retrieveArtifact( client, source, destinationFile, timestamp, downloadMeter );
+                if ( redirect == null )
+                {
+                    break;
+                }
+                if ( i >= REDIRECT_LIMIT - 1 )
+                {
+                    throw new IOException( "Redirection limit of " + REDIRECT_LIMIT + " exceeded" );
+                }
+
+                redirect = StringUtils.replace( redirect, ":/", "://" );
+                redirect = StringUtils.replace( redirect, "//", "/" );
+
+                source = new URL( redirect );
+                hc.setHost( source.getHost(), source.getPort(), source.getProtocol() );
+                client.setHostConfiguration( hc );
+            }
+        }
+        else
+        {
+            //set proxy connection
+            useProxyUser( proxyHost, proxyPort, proxyUserName, proxyPassword );
+    
+            //set up the URL connection
+            URLConnection connection = source.openConnection();
+            InputStream is = null;
+            try
+            {
+                //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();
+
+                if ( connection.getLastModified() <= timestamp && connection.getLastModified() != 0 )
+                {
+                    LOG.debug( "Not modified" );
+                    return;
+                }
+
+                long remoteTimestamp = connection.getLastModified();
+
+                is = connection.getInputStream();
+                process( is, destinationFile, 0, timestamp, remoteTimestamp, downloadMeter );
+            }
+            finally
+            {
+                if ( is != null )
+                    try
+                    {
+                        is.close();
+                    }
+                    catch ( Exception e )
+                    {
+                        LOG.error( "error closing stream", e );
+                    }
+            }
+        }
+    }
+
+    private static String retrieveArtifact( HttpClient client, URL source, File destinationFile, long timestamp, DownloadMeter downloadMeter ) throws FileNotFoundException, IOException, HttpRecoverableException
+    {
+        int statusCode = -1;
+        String redirectUrl = null;
+        InputStream is = null;
+        GetMethod get = new GetMethod( source.getPath() );
+        // Handle these ourselves until httpclient deals with cross host redirects
+        get.setFollowRedirects( false );
+        try
+        {
+            if ( timestamp >= 0 )
+            {
+                SimpleDateFormat fmt = new SimpleDateFormat( "EEE, dd-MMM-yy HH:mm:ss zzz", Locale.US );
+                fmt.setTimeZone( GMT_TIME_ZONE );
+                Header hdr = new Header( "If-Modified-Since", fmt.format( new Date( timestamp ) ) );
+                LOG.debug( "sending ==> " + hdr + "(" + timestamp + ")" );
+                get.addRequestHeader( hdr );
+            }
+
+            // We will retry up to 3 times.
+            for ( int i = 0; i < 3; i++ )
+            {
+                try
+                {
+                    statusCode = client.executeMethod( get );
+                    if ( statusCode != -1 )
+                    {
+                        LOG.debug( "Received status code: " + statusCode );
+                        break;
+                    }
+                }
+                catch ( HttpRecoverableException e )
+                {
+                    if ( i >= 2 )
+                    {
+                        throw e;
+                    }
+                    LOG.warn( "A recoverable exception occurred." + e.getMessage() );
+                }
+                catch ( IOException e )
+                {
+                    throw e;
+                }
+                LOG.warn( "retrying (" + ( i + 1 ) + ")" );
+            }
+
+            boolean isOk = statusCode < 300;
+
+            if ( statusCode == HttpURLConnection.HTTP_NOT_MODIFIED )
+            {
+                LOG.debug( "Not modified" );
+            }
+            else if ( statusCode >= 300 && statusCode < 400 )
+            {
+                Header header = get.getResponseHeader( "Location" );
+                if ( header != null )
+                {
+                    redirectUrl = header.getValue();
+                    LOG.debug( "Location: " + redirectUrl );
+                }
+                else
+                {
+                    LOG.warn( "Location header not specified" );
+                }
+            }
+
+            // Must read content regardless
+            is = get.getResponseBodyAsStream();
+            if ( is == null )
+            {
+                // This could be null, which is fine. The reponse just wasn't a redirect.
+                return redirectUrl;
+            }
+
+            if ( isOk )
+            {
+                int projected = 0;
+                Header header = get.getResponseHeader( "Content-Length" );
+                if ( header != null )
+                {
+                    try
+                    {
+                        projected = Integer.valueOf( header.getValue() ).intValue();
+                    }
+                    catch ( NumberFormatException e )
+                    {
+                        LOG.warn( "error parsing content length header '" + header.getValue() + "' " + e );
+                    }
+                }
+
+                long remoteTimestamp = 0;
+                header = get.getResponseHeader( "Last-Modified" );
+                if ( header != null )
+                {
+                    try
+                    {
+                        remoteTimestamp = DateParser.parseDate( header.getValue() ).getTime();
+                    }
+                    catch ( DateParseException e )
+                    {
+                        LOG.warn( "Unable to parse last modified header", e );
+                    }
+                    LOG.debug( "last-modified = " + header.getValue() + " (" + remoteTimestamp + ")" );
+                }
+                else
+                {
+                    LOG.warn( "warning: last-modified not specified" );
+                }
+                if ( remoteTimestamp <= timestamp && remoteTimestamp != 0 )
+                {
+                    LOG.debug( "Not modified - local file is newer" );
+                }
+                else
+                {
+                    process( is, destinationFile, projected, timestamp, remoteTimestamp, downloadMeter );
+                }
+                return null;
+            }
+            else
+            {
+                readAndDispose( is );
+
+                if ( statusCode == HttpURLConnection.HTTP_NOT_FOUND )
+                {
+                    throw new FileNotFoundException( source.toString() );
+                }
+                // test for 401 result (HTTP only)
+                if ( statusCode == HttpURLConnection.HTTP_UNAUTHORIZED )
+                {
+                    throw new IOException( "Not authorized." );
+                }
+                // test for 403 result (HTTP only)
+                if ( statusCode == HttpURLConnection.HTTP_FORBIDDEN )
+                {
+                    throw new IOException( "Forbidden." );
+                }
+                // test for 407 result (HTTP only)
+                if ( statusCode == HttpURLConnection.HTTP_PROXY_AUTH )
+                {
+                    throw new IOException( "Not authorized by proxy." );
+                }
+                throw new IOException( "Unknown error downloading; status code was: " + statusCode );
+            }
+        }
+        finally
+        {
+            if ( is != null )
+            {
+                try
+                {
+                    is.close();
+                }
+                catch ( Exception e )
+                {
+                    LOG.error( "error closing stream", e );
+                }
+            }
+            get.releaseConnection();
+        }
+    }
+
+    private static void process( InputStream is, File destinationFile, int projected, long timestamp, long remoteTimestamp, DownloadMeter downloadMeter )
+        throws IOException
+    {
+        byte[] buffer = new byte[100 * 1024];
+        int length, total = 0;
+        OutputStream os = null;
+
+        try
+        {
+            os = new FileOutputStream( destinationFile );
+            while ( ( length = is.read( buffer ) ) >= 0 )
+            {
+                os.write( buffer, 0, length );
+                total += length;
+                downloadMeter.update( total, projected );
+            }
+        }
+        finally
+        {
+            if ( os != null )
+                try
+                {
+                    os.close();
+                }
+                catch ( Exception e )
+                {
+                    LOG.error( "error closing stream", e );
+                }
+        }
+
+        downloadMeter.finish( total );
+
+        LOG.debug( "Local timestamp: " + timestamp );
+        LOG.debug( "Remote timestamp: " + remoteTimestamp );
+
+        // 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 )
+        {
+            if ( remoteTimestamp != 0 )
+            {
+                touchFile( destinationFile, remoteTimestamp );
+            }
+        }
+    }
+
+    private static void readAndDispose( InputStream is )
+        throws IOException
+    {
+        byte[] buffer = new byte[100 * 1024];
+
+        while ( is.read( buffer ) >= 0 )
+        {
+        }
+    }
+
+    /**
+     * 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.
+     */
+    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;
+    }
+
+    /**
+     * 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
+     */
+    private static boolean touchFile( File file, long timemillis )
+    {
+        long modifiedTime;
+
+        if ( timemillis < 0 )
+        {
+            modifiedTime = System.currentTimeMillis();
+        }
+        else
+        {
+            modifiedTime = timemillis;
+        }
+
+        LOG.debug( "touching " + file + " with " + modifiedTime );
+        file.setLastModified( modifiedTime );
+        return true;
+    }
+
+    private static boolean empty( String s )
+    {
+        return s == null || s.length() == 0;
+    }
+
+    /**
+     * @todo this method of setting the meter is not desirable... but a static method class is not really
+     * conducive to anything else :)
+     */
+    public static void setMeterType( String type )
+    {
+        if ( type.equals( "bootstrap" ) )
+        {
+            defaultDownloadMeter = new BootstrapDownloadMeter();
+        }
+        else if ( type.equals( "console" ) )
+        {
+            defaultDownloadMeter = new ConsoleDownloadMeter();
+        }
+        else if ( type.equals( "silent" ) )
+        {
+            defaultDownloadMeter = new SilentDownloadMeter();
+        }
+        else
+        {
+            LOG.warn( "Unknown download meter type: " + type );
+        }
+    }
+}
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/InsertionOrderedSet.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/InsertionOrderedSet.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/InsertionOrderedSet.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,177 @@
+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 122095 2004-03-01 22:36:39Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/util/MD5Sum.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/MD5Sum.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/MD5Sum.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,160 @@
+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.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: 122175 $ $Date: 2004-03-28 23:46:05 +0200 (sön, 28 mar 2004) $
+ */
+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 );
+        }
+
+        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.0.2/src/java/org/apache/maven/util/MavenTool.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/MavenTool.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/MavenTool.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 org.apache.maven.project.Project;
+import org.apache.tools.ant.types.Path;
+
+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;
+
+/**
+ * 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 = new TreeSet();
+            }
+            else
+            {
+                items = (Set) map.get( count );
+            }
+            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.0.2/src/java/org/apache/maven/util/ResourceBean.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/ResourceBean.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/ResourceBean.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/java/org/apache/maven/util/SilentDownloadMeter.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/SilentDownloadMeter.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/SilentDownloadMeter.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,42 @@
+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.
+ * ====================================================================
+ */
+
+/**
+ * Silent download progress meter.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: SilentDownloadMeter.java 122358 2004-07-06 12:45:48Z brett $
+ */
+public class SilentDownloadMeter implements DownloadMeter
+{
+    /* non-Javadoc. @see DownloadMeter.update(int,int) */
+    public void update(int complete, int total)
+    {
+        // This page left intentionally blank
+    }
+
+    /* non-Javadoc. @see DownloadMeter.finish(int) */
+    public void finish(int total)
+    {
+        // This page left intentionally blank
+    }
+
+}
+
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringInputStream.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringInputStream.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringInputStream.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,107 @@
+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.0.2/src/java/org/apache/maven/util/StringTool.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringTool.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/StringTool.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 org.apache.commons.lang.StringUtils;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:bwalding at jakarta.org">Ben Walding</a>
+ * @version $Id: StringTool.java 122175 2004-03-28 21:46:05Z evenisse $
+ * @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.0.2/src/java/org/apache/maven/util/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/util/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.util</title>
+</head>
+<body>
+
+  <p>Utility code</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/ChecksumVerificationException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/ChecksumVerificationException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/ChecksumVerificationException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,39 @@
+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 122175 2004-03-28 21:46:05Z evenisse $
+ */
+public class ChecksumVerificationException
+    extends MavenException
+{
+    /**
+     * Constructs an ChecksumVerificationException with the specified detail message.
+     * @param message Detailed message.
+     */
+    public ChecksumVerificationException( String message )
+    {
+        super( message );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/DependencyVerifier.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/DependencyVerifier.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/DependencyVerifier.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,452 @@
+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.commons.lang.StringUtils;
+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.project.Project;
+import org.apache.maven.repository.Artifact;
+import org.apache.maven.util.HttpUtils;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * 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>
+ *
+ * @version $Id: DependencyVerifier.java 122499 2004-12-04 06:12:34Z brett $
+ *
+ * @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.
+ * @todo For a given maven session keep track of what snapshots have been downloaded
+ *       so that we can prevent the same snapshots retrieval attempts from happening
+ *       repeatedly. I think we can assume in a single session the snapshot won't
+ *       change. This would certainly help is large reactor builds like the jelly
+ *       tags where all of them depend on a jelly snapshot.
+ */
+public class DependencyVerifier
+    extends AbstractMavenComponent
+{
+    /** log for debug output */
+    private static final Log log = LogFactory.getLog(DependencyVerifier.class);
+
+    /** Control the use of timestamp comparison when downloading missing resources. */
+    private boolean useTimestamp = true;
+
+    /** Control continuation upon errors during the downloading of missing resources. */
+    private boolean ignoreErrors = true;
+
+    /** List of failed deps. */
+    private List failedDependencies;
+
+    /** Local Repository verifier. */
+    private LocalSettingsVerifier localRepositoryVerifier;
+
+    /**
+     * 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();
+        //verifyDependencies();
+    }
+
+    /**
+     * 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.
+     */
+    private void satisfyDependencies()
+        throws UnsatisfiedDependencyException
+    {
+        // 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();
+
+            // The artifact plain doesn't exist so chalk it up as a failed dependency.
+            if ( !artifact.exists() )
+            {
+                failedDependencies.add( artifact );
+            }
+            else if ( artifact.isSnapshot() )
+            {
+                // 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 ( overrideType.equals( Artifact.OVERRIDE_VERSION ) )
+                {
+                    message.append( "; version override doesn't exist: " + artifact.getDependency().getVersion() );
+                }
+                else if ( overrideType.equals( Artifact.OVERRIDE_PATH ) )
+                {
+                    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();
+    }
+
+    /**
+     * Rules for verifying the checksum.
+     *
+     * We attempt to download artifacts and their accompanying md5 checksum
+     * files.
+     */
+
+
+    /**
+     *  Try and retrieve the dependencies from the remote repository in
+     *  order to satisfy the dependencies of the project.
+     */
+    private void getDependencies()
+    {
+        log.debug("Getting failed dependencies: " + failedDependencies);
+        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 ( overrideType == Artifact.OVERRIDE_PATH )
+            {
+               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
+                    // FIXME: localize this message
+                    log.info("Artifact " + artifact.getUrlPath()
+                        + " doesn't exists in remote repository, but it exists locally");
+                    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.
+     */
+    private boolean getRemoteArtifact( Artifact artifact )
+    {
+        boolean artifactFound = false;
+        boolean errorsFound = false;
+
+        for ( Iterator i = getProject().getContext().getMavenRepoRemote().iterator(); i.hasNext();)
+        {
+            String remoteRepo = (String) i.next();
+
+            if (remoteRepo.endsWith("/")) {
+                remoteRepo = remoteRepo.substring(0, remoteRepo.length() - 1);
+            }
+
+            // The username and password parameters are not being
+            // used here. Those are the "" parameters you see below.
+            String url = remoteRepo + "/" + artifact.getUrlPath();
+            url = StringUtils.replace( url, "//", "/" );
+
+            if ( !url.startsWith( "file" ) )
+            {
+                if ( url.startsWith( "https" ) )
+                {
+                    url = StringUtils.replace( url, "https:/", "https://" );
+                }
+                else
+                {
+                    url = StringUtils.replace( url, "http:/", "http://" );
+                }
+            }
+
+            // Attempt to retrieve the artifact and set the checksum if retrieval
+            // of the checksum file was successful.
+            try
+            {
+                String loginHost = (String) getProject().getContext().getVariable( MavenConstants.PROXY_LOGINHOST );
+                String loginDomain = (String) getProject().getContext().getVariable( MavenConstants.PROXY_LOGINDOMAIN );
+                String meterType = (String) getProject().getContext().getVariable( MavenConstants.DOWNLOAD_METER );
+                if ( meterType != null ) {
+                    HttpUtils.setMeterType( meterType );
+                }
+                HttpUtils.getFile( url,
+                                   artifact.getFile(),
+                                   ignoreErrors,
+                                   useTimestamp,
+                                   getProject().getContext().getProxyHost(),
+                                   getProject().getContext().getProxyPort(),
+                                   getProject().getContext().getProxyUserName(),
+                                   getProject().getContext().getProxyPassword(),
+                                   loginHost,
+                                   loginDomain,
+                                   true );
+
+                // 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;
+                }
+            }
+            catch (FileNotFoundException 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
+                String[] parsedUrl = HttpUtils.parseUrl(url);
+                log.warn("Error retrieving artifact from [" + parsedUrl[2] + "]: " + e);
+                if (parsedUrl[0] != null) {
+                    log.debug("Username was '" + parsedUrl[0] + "', password hidden");
+                }
+                log.debug("Error details", e);
+                errorsFound = true;
+            }
+        }
+
+        return artifactFound;
+    }
+
+    // ----------------------------------------------------------------------
+    // V E R I F I C A T I O N
+    // ----------------------------------------------------------------------
+
+    /**
+     * Verify each of the artifacts if an md5 checksum is available.
+     * XXX As this is not used, it has probably never been tested.
+     * @throws ChecksumVerificationException If we encounter an artifact that
+     *         is corrupted.
+     */
+    private void verifyDependencies()
+        throws ChecksumVerificationException
+    {
+        for ( Iterator i = getProject().getArtifacts().iterator(); i.hasNext();)
+        {
+            Artifact artifact = (Artifact) i.next();
+            artifact.verify();
+        }
+    }
+
+    /**
+     * @return true if the ignore errors flag is set.
+     */
+    public boolean isIgnoreErrors()
+    {
+        return ignoreErrors;
+    }
+
+    /**
+     * Sets the ignoreErrors flag.
+     * @param ignoreErrors The ignoreErrors to set
+     */
+    public void setIgnoreErrors(boolean ignoreErrors)
+    {
+        this.ignoreErrors = ignoreErrors;
+    }
+
+}
+

Added: branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/LocalSettingsVerifier.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,85 @@
+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.AbstractMavenComponent;
+import org.apache.maven.project.Project;
+
+import java.io.File;
+
+/**
+ * Verify the integrity of the local repository.
+ *
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: LocalSettingsVerifier.java 122175 2004-03-28 21:46:05Z evenisse $
+ */
+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.0.2/src/java/org/apache/maven/verifier/RepoConfigException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/RepoConfigException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/RepoConfigException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,39 @@
+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 122100 2004-03-02 11:22:42Z brett $
+ */
+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.0.2/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/UnsatisfiedDependencyException.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,41 @@
+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 122100 2004-03-02 11:22:42Z brett $
+ */
+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.0.2/src/java/org/apache/maven/verifier/package.html
===================================================================
--- branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/package.html	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/java/org/apache/maven/verifier/package.html	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.verifier</title>
+</head>
+<body>
+
+  <p>Code that verifies Maven configuration details</p>
+  
+</body>
+</html>

Added: branches/maven1/upstream/1.0.2/src/man/maven.1
===================================================================
--- branches/maven1/upstream/1.0.2/src/man/maven.1	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/man/maven.1	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,137 @@
+.\" Process this file with
+.\" groff -man -Tascii foo.1
+.\"
+.TH MAVEN 1 "MARCH 2003" Linux "User Manuals"
+.SH NAME
+maven \- builds a project
+.SH SYNOPSIS
+\fB maven\fR [\fIoptions\fR] \fIgoal\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\-\-debug\fR (\fB\-X\fR)
+Produce execution debug output
+.TP
+\fB\-\-emacs\fR (\fB\-E\fR)
+Produce logging information without adornments.
+.TP
+\fB\-\-define\fR arg (\fB-D\fRarg)
+Define a system property.
+arg must be in the form: 
+.br
+\fBmaven.property.name\fI=\fRvalue
+.TP
+\fB\-\-nobanner\fR (\fB\-b)
+Suppress the logo banner.
+.TP
+\fB\-\-dir\fR (\fB\-d\fR) arg
+Set the effective working directory.
+.TP
+\fB\-\-exception\fR (\fB\-e\fR)
+Produce exception stack traces.
+.TP
+\fB\-\-find\fR (\fB-f\fR) arg
+Set the project file and effective working directory by finding the project.
+file.
+.TP
+\fB\-\-goals\fR (\fB\-g\fR)
+Display available goals.
+.TP
+\fB\-\-help\fR (\fB\-h\fR)
+Display help information.
+.TP
+\fB\-\-info\fR (\fB\-i\fR)
+Display system information.
+.TP
+\fB\-\-offline\fR (\fB\-o\fR)
+Build is happening offline.
+.TP
+\fB\-\-pom\fR (\fB\-p\fR) arg
+Set the project file.
+.TP
+\fB\-\-version\fR (\fB\-v\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 120303 2003-03-26 10:40:58Z smor $

Added: branches/maven1/upstream/1.0.2/src/messages/messages_el.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_el.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_el.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/messages/messages_en.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_en.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_en.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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=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}.
+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}.

Added: branches/maven1/upstream/1.0.2/src/messages/messages_es.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_es.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_es.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# 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}.

Added: branches/maven1/upstream/1.0.2/src/messages/messages_fr.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_fr.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_fr.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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=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}.
+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}.
\ No newline at end of file

Added: branches/maven1/upstream/1.0.2/src/messages/messages_it.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_it.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_it.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/messages/messages_ja.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_ja.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_ja.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/messages/messages_nl.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_nl.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_nl.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/messages/messages_no.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_no.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_no.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/messages/messages_pl.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_pl.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_pl.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/messages/messages_zh_CN.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/messages/messages_zh_CN.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/messages/messages_zh_CN.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+# -------------------------------------------------------------------
+
+# --------------------------------------------------------------------------
+# ÏîÄ¿ÑéÖ¤
+# --------------------------------------------------------------------------
+failed.download.warning=¾¯¸æ£º ${1} ÏÂÔØʧ°Ü¡£
+remote.repository.disabled.warning=½ûֹʹÓÃÔ¶³Ì×ÊÔ´²Ö¿â¡£
+directory.nonexistant.warning=Ŀ¼ ${1} ²»´æÔÚ¡£ ³¢ÊÔн¨ÖС­¡­
+not.directory.warning=${1} ²»ÊÇĿ¼¡£
+not.writable.warning=${1} Ö»¶Á¡£
+cannot.create.directory.warning=´´½¨Ä¿Â¼ ${1} ʧ°Ü¡£
+maven.repo.local.unset.warning=ûÓÐÉèÖà maven.repo.local ÊôÐÔ¡£
+single.unsatisfied.dependency.error=ÓÉÓÚÒÔϵÄÒÀÀµÈ±ÉÙ£¬´´½¨²»ÄܽøÐУº
+multiple.unsatisfied.dependency.error=ÓÉÓÚÒÔϵÄÒÀÀµÈ±ÉÙ£¬´´½¨²»ÄܽøÐУº
+offline.snapshot.warning=ÀëÏßʱ´´½¨£¬¿ÉÄÜ  ${1} ¹ýÆÚ£¡
+download.message=³¢ÊÔÏÂÔØ ${1}¡­¡­
+plugin.loading.error=×°Èë plugin ${1} ʧ°Ü¡£
+empty.descriptor.error=Îļþ ${1} µÄ³¤¶ÈΪ0¡£
+checksum.verification.error=ÒÔÏÂ×ÊÔ´Òѱ»ÆÆ»µ£º${1}¡£

Added: branches/maven1/upstream/1.0.2/src/test/basedir/extend-1/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/basedir/extend-1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/basedir/extend-1/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,43 @@
+<?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>**/*.properties</includes>
+          </resource>
+      </resources>
+  </build>
+
+</project>

Added: branches/maven1/upstream/1.0.2/src/test/basedir/extend-2/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/basedir/extend-2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/basedir/extend-2/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,43 @@
+<?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>**/*.properties</includes>
+          </resource>
+      </resources>
+  </build>
+
+</project>

Added: branches/maven1/upstream/1.0.2/src/test/basedir/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/basedir/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/basedir/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>
+    <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>**/*.xml</includes>
+            </resource>
+        </resources>
+    </build>
+
+</project>

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


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

Added: branches/maven1/upstream/1.0.2/src/test/extend/child_project/project-child2.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/extend/child_project/project-child2.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/extend/child_project/project-child2.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/extend/child_project/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/extend/child_project/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/extend/child_project/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/extend/project-child.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/extend/project-child.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/extend/project-child.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>maven</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.0.2/src/test/extend/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/extend/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/extend/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/java/org/apache/maven/JAXPTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/JAXPTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/JAXPTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 junit.framework.TestCase;
+
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+/**
+ * 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.0.2/src/test/java/org/apache/maven/MavenUtilsTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/MavenUtilsTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/MavenUtilsTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,272 @@
+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 junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.jelly.MavenJellyContext;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * 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 122423 2004-09-28 11:05:32Z brett $
+ */
+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( "mavenHome", "/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( "basedir", basedir );
+        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();
+        MavenUtils.integrateMapInContext( result, context );
+
+        // Values that should be taken from systemProperties.
+        assertEquals( "/projects/maven", ( String ) context.getVariable( "mavenHome" ) );
+
+        // 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.0.2/src/test/java/org/apache/maven/app/MavenTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/app/MavenTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/app/MavenTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,181 @@
+package org.apache.maven.app;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT 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;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class MavenTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.MavenSession maven = null;
+    // JUnitDoclet end class
+
+    public MavenTest( String name )
+    {
+        // JUnitDoclet begin method MavenTest
+        super( name );
+        // JUnitDoclet end method MavenTest
+    }
+
+    public org.apache.maven.MavenSession createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.MavenSession();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        maven = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        maven = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testHasProjectBuildFile() throws Exception
+    {
+        // JUnitDoclet begin method hasProjectBuildFile
+        // JUnitDoclet end method hasProjectBuildFile
+    }
+
+    public void testGetBaseAntProject() throws Exception
+    {
+        // JUnitDoclet begin method getBaseAntProject
+        // JUnitDoclet end method getBaseAntProject
+    }
+
+    public void testGetGoalNames() throws Exception
+    {
+        // JUnitDoclet begin method getGoalNames
+        // JUnitDoclet end method getGoalNames
+    }
+
+    public void testAddGoalName() throws Exception
+    {
+        // JUnitDoclet begin method addGoalName
+        // JUnitDoclet end method addGoalName
+    }
+
+    public void testAddGoalNames() throws Exception
+    {
+        // JUnitDoclet begin method addGoalNames
+        // JUnitDoclet end method addGoalNames
+    }
+
+    public void testClearGoalNames() throws Exception
+    {
+        // JUnitDoclet begin method clearGoalNames
+        // JUnitDoclet end method clearGoalNames
+    }
+
+    public void testGetXMLOutput() throws Exception
+    {
+        // JUnitDoclet begin method getXMLOutput
+        // JUnitDoclet end method getXMLOutput
+    }
+
+    public void testSetXMLOutput() throws Exception
+    {
+        // JUnitDoclet begin method setXMLOutput
+        // JUnitDoclet end method setXMLOutput
+    }
+
+    public void testIsDebug() throws Exception
+    {
+        // JUnitDoclet begin method isDebug
+        // JUnitDoclet end method isDebug
+    }
+
+    public void testGetPropertyNames() throws Exception
+    {
+        // JUnitDoclet begin method getPropertyNames
+        // JUnitDoclet end method getPropertyNames
+    }
+
+    public void testInitializeJelly() throws Exception
+    {
+        // JUnitDoclet begin method initializeJelly
+        // JUnitDoclet end method initializeJelly
+    }
+
+    public void testRuntimeInitialization() throws Exception
+    {
+        // JUnitDoclet begin method runtimeInitialization
+        // JUnitDoclet end method runtimeInitialization
+    }
+
+    public void testVerifyProject() throws Exception
+    {
+        // JUnitDoclet begin method verifyProject
+        // JUnitDoclet end method verifyProject
+    }
+
+    public void testAttainGoals() throws Exception
+    {
+        // JUnitDoclet begin method attainGoals
+        // JUnitDoclet end method attainGoals
+    }
+
+    public void testGetInstance() throws Exception
+    {
+        // JUnitDoclet begin method getInstance
+        // JUnitDoclet end method getInstance
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( MavenTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/AppTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/AppTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/AppTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,108 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class AppTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.cli.App app = null;
+    // JUnitDoclet end class
+
+    public AppTest( String name )
+    {
+        // JUnitDoclet begin method AppTest
+        super( name );
+        // JUnitDoclet end method AppTest
+    }
+
+    public org.apache.maven.cli.App createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.cli.App();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        app = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        app = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testInitializeCore() throws Exception
+    {
+        // JUnitDoclet begin method initializeCore
+        // JUnitDoclet end method initializeCore
+    }
+
+    public void testDoMain() throws Exception
+    {
+        // JUnitDoclet begin method doMain
+        // JUnitDoclet end method doMain
+    }
+
+    public void testMain() throws Exception
+    {
+        // JUnitDoclet begin method main
+        // JUnitDoclet end method main
+    }
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( AppTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/CLIManagerTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/CLIManagerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/cli/CLIManagerTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,109 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class CLIManagerTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.cli.CLIManager climanager = null;
+    // JUnitDoclet end class
+
+    public CLIManagerTest( String name )
+    {
+        // JUnitDoclet begin method CLIManagerTest
+        super( name );
+        // JUnitDoclet end method CLIManagerTest
+    }
+
+    public org.apache.maven.cli.CLIManager createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.cli.CLIManager();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        climanager = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        climanager = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testParse() throws Exception
+    {
+        // JUnitDoclet begin method parse
+        // JUnitDoclet end method parse
+    }
+
+    public void testDisplayHelp() throws Exception
+    {
+        // JUnitDoclet begin method displayHelp
+        // JUnitDoclet end method displayHelp
+    }
+
+    public void testDisplayInfo() throws Exception
+    {
+        // JUnitDoclet begin method displayInfo
+        // JUnitDoclet end method displayInfo
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( CLIManagerTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginCacheManagerTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,74 @@
+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 junit.framework.TestCase;
+
+import org.apache.maven.MavenException;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * @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 );
+        housing.parse( pgb, PLUGIN_SCRIPT, new FileInputStream( new File( PLUGIN_SCRIPT )));
+
+        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.0.2/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginManagerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/PluginManagerTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,246 @@
+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 junit.framework.TestCase;
+
+import com.werken.forehead.Forehead;
+
+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 java.io.File;
+import java.io.FileInputStream;
+
+/**
+ * @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/";
+
+    /** source base */
+    private static final String SOURCE_BASE = "/src/test/java/org/apache/maven/plugin/";
+
+    /** 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();
+
+        MavenJellyContext context = MavenUtils.createContext( new File( System.getProperty("user.dir") ) );
+        assertNotNull(context);
+
+        basedir = System.getProperty( "basedir" );
+        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";
+        context.setVariable( MavenConstants.MAVEN_HOME, fakeHome );
+
+        // 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
+        Forehead.getInstance().config(new FileInputStream(basedir + SOURCE_BASE + "forehead.conf"));
+
+        // 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);
+        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" ) );
+    }
+}
+

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/forehead.conf
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/forehead.conf	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/forehead.conf	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.0.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/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.0.2/src/test/java/org/apache/maven/plugin/maven-clean-plugin-1.2-SNAPSHOT.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/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.0.2/src/test/java/org/apache/maven/plugin/maven-java-plugin-1.3.jar
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/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.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.jelly
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/plugin.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# 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
\ No newline at end of file


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

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.properties
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/maven.home/plugins/jar/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>
+  <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/reference/plugins/jar/</url>
+  <siteDirectory>/www/maven.apache.org/reference/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/>
+  <dependencies>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-velocity</artifactId>
+      <version>20030303.205659</version>
+      <properties>
+        <classloader>root.maven</classloader>
+      </properties>
+    </dependency>
+    <dependency>
+      <id>velocity</id>
+      <version>1.4-dev</version>
+    </dependency>
+  </dependencies>
+</project>


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

Added: branches/maven1/upstream/1.0.2/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.0.2/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.0.2/src/test/java/org/apache/maven/plugin/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/plugin/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/java/org/apache/maven/project/BaseObjectTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BaseObjectTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BaseObjectTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,166 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class BaseObjectTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.BaseObject baseobject = null;
+    // JUnitDoclet end class
+
+    public BaseObjectTest( String name )
+    {
+        // JUnitDoclet begin method BaseObjectTest
+        super( name );
+        // JUnitDoclet end method BaseObjectTest
+    }
+
+    public org.apache.maven.project.BaseObject createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.BaseObject();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        baseobject = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        baseobject = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetName() throws Exception
+    {
+        // JUnitDoclet begin method setName getName
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            baseobject.setName( tests[i] );
+            assertEquals( tests[i], baseobject.getName() );
+        }
+        // JUnitDoclet end method setName getName
+    }
+
+    public void testSetGetId() throws Exception
+    {
+        // JUnitDoclet begin method setId getId
+        java.lang.String[] tests = {"a", "A", "ä", "ß", "0123456789", "012345678901234567890"};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            baseobject.setId( tests[i] );
+            assertEquals( tests[i], baseobject.getId() );
+        }
+        // JUnitDoclet end method setId getId
+    }
+
+    public void testAddProperty() throws Exception
+    {
+        // JUnitDoclet begin method addProperty
+        // JUnitDoclet end method addProperty
+    }
+
+    public void testGetProperty() throws Exception
+    {
+        // JUnitDoclet begin method getProperty
+        // JUnitDoclet end method getProperty
+    }
+
+    public void testSetGetProperties() throws Exception
+    {
+        // JUnitDoclet begin method setProperties getProperties
+        java.util.List[] tests = {new java.util.ArrayList(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            baseobject.setProperties( tests[i] );
+            assertEquals( tests[i], baseobject.getProperties() );
+        }
+        // JUnitDoclet end method setProperties getProperties
+    }
+
+    public void testResolvedProperties() throws Exception
+    {
+        // JUnitDoclet begin method resolvedProperties
+        // JUnitDoclet end method resolvedProperties
+    }
+
+    public void testToString() throws Exception
+    {
+        // JUnitDoclet begin method toString
+        // JUnitDoclet end method toString
+    }
+
+    public void testEquals() throws Exception
+    {
+        // JUnitDoclet begin method equals
+        // JUnitDoclet end method equals
+    }
+
+    public void testHashCode() throws Exception
+    {
+        // JUnitDoclet begin method hashCode
+        // JUnitDoclet end method hashCode
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( BaseObjectTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BasedirTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BasedirTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BasedirTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,150 @@
+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 junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.MavenUtils;
+
+import java.io.File;
+
+/* ====================================================================
+ * 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/>.
+ */
+
+/**
+ * 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 122327 2004-06-26 14:55:46Z dion $
+ */
+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.0.2/src/test/java/org/apache/maven/project/BuildTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BuildTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/BuildTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,146 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class BuildTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Build build = null;
+    // JUnitDoclet end class
+
+    public BuildTest( String name )
+    {
+        // JUnitDoclet begin method BuildTest
+        super( name );
+        // JUnitDoclet end method BuildTest
+    }
+
+    public org.apache.maven.project.Build createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Build();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        build = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        build = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testAddJarResource() throws Exception
+    {
+        // JUnitDoclet begin method addJarResource
+        // JUnitDoclet end method addJarResource
+    }
+
+    public void testGetJarResources() throws Exception
+    {
+        // JUnitDoclet begin method getJarResources
+        // JUnitDoclet end method getJarResources
+    }
+
+    public void testAddSourceModification() throws Exception
+    {
+        // JUnitDoclet begin method addSourceModification
+        // JUnitDoclet end method addSourceModification
+    }
+
+    public void testSetSourceModification() throws Exception
+    {
+        // JUnitDoclet begin method setSourceModification
+        // JUnitDoclet end method setSourceModification
+    }
+
+    public void testGetSourceModifications() throws Exception
+    {
+        // JUnitDoclet begin method getSourceModifications
+        // JUnitDoclet end method getSourceModifications
+    }
+
+    public void testSetGetNagEmailAddress() throws Exception
+    {
+        // JUnitDoclet begin method setNagEmailAddress getNagEmailAddress
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            build.setNagEmailAddress( tests[i] );
+            assertEquals( tests[i], build.getNagEmailAddress() );
+        }
+        // JUnitDoclet end method setNagEmailAddress getNagEmailAddress
+    }
+
+    public void testSetGetUnitTest() throws Exception
+    {
+        // JUnitDoclet begin method setUnitTest getUnitTest
+        org.apache.maven.project.UnitTest[] tests = {new org.apache.maven.project.UnitTest(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            build.setUnitTest( tests[i] );
+            assertEquals( tests[i], build.getUnitTest() );
+        }
+        // JUnitDoclet end method setUnitTest getUnitTest
+    }
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( BuildTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ContributorTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ContributorTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ContributorTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,142 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class ContributorTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Contributor contributor = null;
+    // JUnitDoclet end class
+
+    public ContributorTest( String name )
+    {
+        // JUnitDoclet begin method ContributorTest
+        super( name );
+        // JUnitDoclet end method ContributorTest
+    }
+
+    public org.apache.maven.project.Contributor createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Contributor();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        contributor = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        contributor = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetEmail() throws Exception
+    {
+        // JUnitDoclet begin method setEmail getEmail
+        java.lang.String[] tests = {"", "a", "A", "?", "?", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            contributor.setEmail( tests[i] );
+            assertEquals( tests[i], contributor.getEmail() );
+        }
+        // JUnitDoclet end method setEmail getEmail
+    }
+
+    public void testSetGetOrganization() throws Exception
+    {
+        // JUnitDoclet begin method setOrganization getOrganization
+        java.lang.String[] tests = {"", " ", "a", "A", "?", "?", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            contributor.setOrganization( tests[i] );
+            assertEquals( tests[i], contributor.getOrganization() );
+        }
+        // JUnitDoclet end method setOrganization getOrganization
+    }
+
+    public void testSetGetUrl() throws Exception
+    {
+        // JUnitDoclet begin method setUrl getUrl
+        java.lang.String[] tests = {"", " ", "a", "A", "?", "?", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            contributor.setUrl( tests[i] );
+            assertEquals( tests[i], contributor.getUrl() );
+        }
+        // JUnitDoclet end method setUrl getUrl
+    }
+
+    public void testAddRole() throws Exception
+    {
+        // JUnitDoclet begin method addRole
+        // JUnitDoclet end method addRole
+    }
+
+    public void testGetRoles() throws Exception
+    {
+        // JUnitDoclet begin method getRoles
+        // JUnitDoclet end method getRoles
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( ContributorTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DependencyTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DependencyTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DependencyTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,187 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class DependencyTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Dependency dependency = null;
+    // JUnitDoclet end class
+
+    public DependencyTest( String name )
+    {
+        // JUnitDoclet begin method DependencyTest
+        super( name );
+        // JUnitDoclet end method DependencyTest
+    }
+
+    public org.apache.maven.project.Dependency createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Dependency();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        dependency = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        dependency = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testToString() throws Exception
+    {
+        // JUnitDoclet begin method toString
+        // JUnitDoclet end method toString
+    }
+
+    public void testSetId() throws Exception
+    {
+        // JUnitDoclet begin method setId
+        // JUnitDoclet end method setId
+    }
+
+    public void testSetGetGroupId() throws Exception
+    {
+        // JUnitDoclet begin method setGroupId getGroupId
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            dependency.setGroupId( tests[i] );
+            assertEquals( tests[i], dependency.getGroupId() );
+        }
+        // JUnitDoclet end method setGroupId getGroupId
+    }
+
+    public void testSetGetArtifact() throws Exception
+    {
+        /*
+        // JUnitDoclet begin method setArtifact getArtifact
+        java.lang.String[] tests = {"foo", "bar"};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            dependency.setArtifact( tests[i] );
+            assertEquals( tests[i], dependency.getArtifact() );
+        }
+        // JUnitDoclet end method setArtifact getArtifact
+        */
+    }
+
+    public void testGetRealId() throws Exception
+    {
+        // JUnitDoclet begin method getRealId
+        // JUnitDoclet end method getRealId
+    }
+
+    public void testSetGetVersion() throws Exception
+    {
+        // JUnitDoclet begin method setVersion getVersion
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            dependency.setVersion( tests[i] );
+            assertEquals( tests[i], dependency.getVersion() );
+        }
+        // JUnitDoclet end method setVersion getVersion
+    }
+
+    public void testSetGetUrl() throws Exception
+    {
+        // JUnitDoclet begin method setUrl getUrl
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            dependency.setUrl( tests[i] );
+            assertEquals( tests[i], dependency.getUrl() );
+        }
+        // JUnitDoclet end method setUrl getUrl
+    }
+
+    public void testSetGetType() throws Exception
+    {
+        // JUnitDoclet begin method setType getType
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            dependency.setType( tests[i] );
+            assertEquals( tests[i], dependency.getType() );
+        }
+        // JUnitDoclet end method setType getType
+    }
+
+    public void testIsCompileType() throws Exception
+    {
+        // JUnitDoclet begin method isCompileType
+        // JUnitDoclet end method isCompileType
+    }
+
+    public void testIsTestType() throws Exception
+    {
+        // JUnitDoclet begin method isTestType
+        // JUnitDoclet end method isTestType
+    }
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( DependencyTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DeveloperTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DeveloperTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/DeveloperTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,91 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class DeveloperTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Developer developer = null;
+    // JUnitDoclet end class
+
+    public DeveloperTest( String name )
+    {
+        // JUnitDoclet begin method DeveloperTest
+        super( name );
+        // JUnitDoclet end method DeveloperTest
+    }
+
+    public org.apache.maven.project.Developer createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Developer();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        developer = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        developer = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( DeveloperTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/JarTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/JarTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/JarTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,91 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class JarTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Jar jar = null;
+    // JUnitDoclet end class
+
+    public JarTest( String name )
+    {
+        // JUnitDoclet begin method JarTest
+        super( name );
+        // JUnitDoclet end method JarTest
+    }
+
+    public org.apache.maven.project.Jar createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Jar();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        jar = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        jar = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( JarTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/LegacyIdTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/LegacyIdTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/LegacyIdTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,144 @@
+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 junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.maven.MavenUtils;
+
+import java.io.File;
+
+/**
+ * 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 122327 2004-06-26 14:55:46Z dion $
+ */
+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));
+    }
+
+    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 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() );
+    }
+    
+    /**
+     * Generate the test suite.
+     * @return the test suite
+     */
+    public static Test suite()
+    {
+        return new TestSuite( LegacyIdTest.class );
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/MailingListTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/MailingListTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/MailingListTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,130 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class MailingListTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.MailingList mailinglist = null;
+    // JUnitDoclet end class
+
+    public MailingListTest( String name )
+    {
+        // JUnitDoclet begin method MailingListTest
+        super( name );
+        // JUnitDoclet end method MailingListTest
+    }
+
+    public org.apache.maven.project.MailingList createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.MailingList();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        mailinglist = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        mailinglist = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetSubscribe() throws Exception
+    {
+        // JUnitDoclet begin method setSubscribe getSubscribe
+        java.lang.String[] tests = {"", " ", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            mailinglist.setSubscribe( tests[i] );
+            assertEquals( tests[i], mailinglist.getSubscribe() );
+        }
+        // JUnitDoclet end method setSubscribe getSubscribe
+    }
+
+    public void testSetGetUnsubscribe() throws Exception
+    {
+        // JUnitDoclet begin method setUnsubscribe getUnsubscribe
+        java.lang.String[] tests = {"", " ", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            mailinglist.setUnsubscribe( tests[i] );
+            assertEquals( tests[i], mailinglist.getUnsubscribe() );
+        }
+        // JUnitDoclet end method setUnsubscribe getUnsubscribe
+    }
+
+    public void testSetGetArchive() throws Exception
+    {
+        // JUnitDoclet begin method setArchive getArchive
+        java.lang.String[] tests = {"", " ", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            mailinglist.setArchive( tests[i] );
+            assertEquals( tests[i], mailinglist.getArchive() );
+        }
+        // JUnitDoclet end method setArchive getArchive
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( MailingListTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/OrganizationTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/OrganizationTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/OrganizationTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,125 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class OrganizationTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Organization organization = null;
+    // JUnitDoclet end class
+
+    public OrganizationTest( String name )
+    {
+        // JUnitDoclet begin method OrganizationTest
+        super( name );
+        // JUnitDoclet end method OrganizationTest
+    }
+
+    public org.apache.maven.project.Organization createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Organization();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        organization = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        organization = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetUrl() throws Exception
+    {
+        // JUnitDoclet begin method setUrl getUrl
+        java.lang.String[] tests = {"", " ", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            organization.setUrl( tests[i] );
+            if ( tests[i] != null )
+            {
+                tests[i] = tests[i].trim();
+            }
+            assertEquals( tests[i], organization.getUrl() );
+        }
+        // JUnitDoclet end method setUrl getUrl
+    }
+
+    public void testSetGetLogo() throws Exception
+    {
+        // JUnitDoclet begin method setLogo getLogo
+        java.lang.String[] tests = {"", " ", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", "\n", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            organization.setLogo( tests[i] );
+            if ( tests[i] != null )
+            {
+                tests[i] = tests[i].trim();
+            }
+            assertEquals( tests[i], organization.getLogo() );
+        }
+        // JUnitDoclet end method setLogo getLogo
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( OrganizationTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/PluginTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/PluginTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/PluginTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,91 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class PluginTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Plugin plugin = null;
+    // JUnitDoclet end class
+
+    public PluginTest( String name )
+    {
+        // JUnitDoclet begin method PluginTest
+        super( name );
+        // JUnitDoclet end method PluginTest
+    }
+
+    public org.apache.maven.project.Plugin createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Plugin();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        plugin = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        plugin = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( PluginTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,165 @@
+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 junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.MavenUtils;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+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( "maven", p.getGroupId() );
+        
+        assertEquals( "Super Extendo", p.getName() );
+        assertEquals( "maven: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() );
+
+        assertEquals( "dom4j:dom4j",
+                      ( (Dependency) p.getDependencies().get( 1 ) ).getId() );
+
+        assertEquals( "1.4-dev-8",
+                      ( (Dependency) p.getDependencies().get( 1 ) ).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( "maven", p.getGroupId() );
+    
+        assertEquals( "Child Project", p.getName() );
+        assertEquals( "maven: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.0.2/src/test/java/org/apache/maven/project/ProjectTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ProjectTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,505 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class ProjectTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Project project = null;
+    // JUnitDoclet end class
+
+    public ProjectTest( String name )
+    {
+        // JUnitDoclet begin method ProjectTest
+        super( name );
+        // JUnitDoclet end method ProjectTest
+    }
+
+    public org.apache.maven.project.Project createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Project();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        project = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        project = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetFile() throws Exception
+    {
+        // JUnitDoclet begin method setFile getFile
+        java.io.File[] tests = {new java.io.File( "." ), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setFile( tests[i] );
+            assertEquals( tests[i], project.getFile() );
+        }
+        // JUnitDoclet end method setFile getFile
+    }
+
+    public void testSetGetExtend() throws Exception
+    {
+        // JUnitDoclet begin method setExtend getExtend
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setExtend( tests[i] );
+            assertEquals( tests[i], project.getExtend() );
+        }
+        // JUnitDoclet end method setExtend getExtend
+    }
+
+    public void testSetGetGumpRepositoryId() throws Exception
+    {
+        // JUnitDoclet begin method setGumpRepositoryId getGumpRepositoryId
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setGumpRepositoryId( tests[i] );
+            assertEquals( tests[i], project.getGumpRepositoryId() );
+        }
+        // JUnitDoclet end method setGumpRepositoryId getGumpRepositoryId
+    }
+
+    public void testSetGetShortDescription() throws Exception
+    {
+        // JUnitDoclet begin method setShortDescription getShortDescription
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setShortDescription( tests[i] );
+            assertEquals( tests[i], project.getShortDescription() );
+        }
+        // JUnitDoclet end method setShortDescription getShortDescription
+    }
+
+    public void testSetGetGroupId() throws Exception
+    {
+        // JUnitDoclet begin method setGroupId getGroupId
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890"};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setGroupId( tests[i] );
+            assertEquals( tests[i], project.getGroupId() );
+        }
+        // JUnitDoclet end method setGroupId getGroupId
+    }
+
+    public void testSetGetSiteAddress() throws Exception
+    {
+        // JUnitDoclet begin method setSiteAddress getSiteAddress
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setSiteAddress( tests[i] );
+            assertEquals( tests[i], project.getSiteAddress() );
+        }
+        // JUnitDoclet end method setSiteAddress getSiteAddress
+    }
+
+    public void testSetGetSiteDirectory() throws Exception
+    {
+        // JUnitDoclet begin method setSiteDirectory getSiteDirectory
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setSiteDirectory( tests[i] );
+            assertEquals( tests[i], project.getSiteDirectory() );
+        }
+        // JUnitDoclet end method setSiteDirectory getSiteDirectory
+    }
+
+    public void testSetGetDistributionSite() throws Exception
+    {
+        // JUnitDoclet begin method setDistributionSite getDistributionSite
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setDistributionSite( tests[i] );
+            assertEquals( tests[i], project.getDistributionSite() );
+        }
+        // JUnitDoclet end method setDistributionSite getDistributionSite
+    }
+
+    public void testSetGetDistributionDirectory() throws Exception
+    {
+        // JUnitDoclet begin method setDistributionDirectory getDistributionDirectory
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setDistributionDirectory( tests[i] );
+            assertEquals( tests[i], project.getDistributionDirectory() );
+        }
+        // JUnitDoclet end method setDistributionDirectory getDistributionDirectory
+    }
+
+    public void testAddDependency() throws Exception
+    {
+        // JUnitDoclet begin method addDependency
+        // JUnitDoclet end method addDependency
+    }
+
+    public void testSetGetDependencies() throws Exception
+    {
+        // JUnitDoclet begin method setDependencies getDependencies
+        java.util.List[] tests = {new java.util.ArrayList(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setDependencies( tests[i] );
+            assertEquals( tests[i], project.getDependencies() );
+        }
+        // JUnitDoclet end method setDependencies getDependencies
+    }
+
+    public void testGetDependentProjectIds() throws Exception
+    {
+        // JUnitDoclet begin method getDependentProjectIds
+        // JUnitDoclet end method getDependentProjectIds
+    }
+
+    public void testSetDependencyPath() throws Exception
+    {
+        // JUnitDoclet begin method setDependencyPath
+        // JUnitDoclet end method setDependencyPath
+    }
+
+    public void testGetDependencyPath() throws Exception
+    {
+        // JUnitDoclet begin method getDependencyPath
+        // JUnitDoclet end method getDependencyPath
+    }
+
+    public void testGetDependency() throws Exception
+    {
+        // JUnitDoclet begin method getDependency
+        // JUnitDoclet end method getDependency
+    }
+
+    public void testSetGetBuild() throws Exception
+    {
+        // JUnitDoclet begin method setBuild getBuild
+        org.apache.maven.project.Build[] tests = {new org.apache.maven.project.Build(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setBuild( tests[i] );
+            assertEquals( tests[i], project.getBuild() );
+        }
+        // JUnitDoclet end method setBuild getBuild
+    }
+
+    public void testAddMailingList() throws Exception
+    {
+        // JUnitDoclet begin method addMailingList
+        // JUnitDoclet end method addMailingList
+    }
+
+    public void testSetGetMailingLists() throws Exception
+    {
+        // JUnitDoclet begin method setMailingLists getMailingLists
+        java.util.List[] tests = {new java.util.ArrayList(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setMailingLists( tests[i] );
+            assertEquals( tests[i], project.getMailingLists() );
+        }
+        // JUnitDoclet end method setMailingLists getMailingLists
+    }
+
+    public void testAddDeveloper() throws Exception
+    {
+        // JUnitDoclet begin method addDeveloper
+        // JUnitDoclet end method addDeveloper
+    }
+
+    public void testSetGetDevelopers() throws Exception
+    {
+        // JUnitDoclet begin method setDevelopers getDevelopers
+        java.util.List[] tests = {new java.util.ArrayList(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setDevelopers( tests[i] );
+            assertEquals( tests[i], project.getDevelopers() );
+        }
+        // JUnitDoclet end method setDevelopers getDevelopers
+    }
+
+    public void testSetGetContributors() throws Exception
+    {
+        // JUnitDoclet begin method setContributors getContributors
+        java.util.List[] tests = {new java.util.ArrayList(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setContributors( tests[i] );
+            assertEquals( tests[i], project.getContributors() );
+        }
+        // JUnitDoclet end method setContributors getContributors
+    }
+
+    public void testAddContributor() throws Exception
+    {
+        // JUnitDoclet begin method addContributor
+        // JUnitDoclet end method addContributor
+    }
+
+    public void testSetGetRepository() throws Exception
+    {
+        // JUnitDoclet begin method setRepository getRepository
+        org.apache.maven.project.Repository[] tests = {new org.apache.maven.project.Repository(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setRepository( tests[i] );
+            assertEquals( tests[i], project.getRepository() );
+        }
+        // JUnitDoclet end method setRepository getRepository
+    }
+
+    public void testSetGetUrl() throws Exception
+    {
+        // JUnitDoclet begin method setUrl getUrl
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setUrl( tests[i] );
+            assertEquals( tests[i], project.getUrl() );
+        }
+        // JUnitDoclet end method setUrl getUrl
+    }
+
+    public void testSetGetIssueTrackingUrl() throws Exception
+    {
+        // JUnitDoclet begin method setIssueTrackingUrl getIssueTrackingUrl
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setIssueTrackingUrl( tests[i] );
+            assertEquals( tests[i], project.getIssueTrackingUrl() );
+        }
+        // JUnitDoclet end method setIssueTrackingUrl getIssueTrackingUrl
+    }
+
+    public void testSetGetDescription() throws Exception
+    {
+        // JUnitDoclet begin method setDescription getDescription
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setDescription( tests[i] );
+            assertEquals( tests[i], project.getDescription() );
+        }
+        // JUnitDoclet end method setDescription getDescription
+    }
+
+    public void testHasRepository() throws Exception
+    {
+        // JUnitDoclet begin method hasRepository
+        // JUnitDoclet end method hasRepository
+    }
+
+    public void testSetGetCurrentVersion() throws Exception
+    {
+        // JUnitDoclet begin method setCurrentVersion getCurrentVersion
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setCurrentVersion( tests[i] );
+            assertEquals( tests[i], project.getCurrentVersion() );
+        }
+        // JUnitDoclet end method setCurrentVersion getCurrentVersion
+    }
+
+    public void testSetGetOrganization() throws Exception
+    {
+        // JUnitDoclet begin method setOrganization getOrganization
+        org.apache.maven.project.Organization[] tests = {new org.apache.maven.project.Organization(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setOrganization( tests[i] );
+            assertEquals( tests[i], project.getOrganization() );
+        }
+        // JUnitDoclet end method setOrganization getOrganization
+    }
+
+    public void testSetGetPackage() throws Exception
+    {
+        // JUnitDoclet begin method setPackage getPackage
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setPackage( tests[i] );
+            assertEquals( tests[i], project.getPackage() );
+        }
+        // JUnitDoclet end method setPackage getPackage
+    }
+
+    public void testSetGetInceptionYear() throws Exception
+    {
+        // JUnitDoclet begin method setInceptionYear getInceptionYear
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setInceptionYear( tests[i] );
+            assertEquals( tests[i], project.getInceptionYear() );
+        }
+        // JUnitDoclet end method setInceptionYear getInceptionYear
+    }
+
+    public void testSetGetPomVersion() throws Exception
+    {
+        // JUnitDoclet begin method setPomVersion getPomVersion
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890"};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setPomVersion( tests[i] );
+            assertEquals( tests[i], project.getPomVersion() );
+        }
+        // JUnitDoclet end method setPomVersion getPomVersion
+    }
+
+    public void testIsPomCurrent() throws Exception
+    {
+        // JUnitDoclet begin method isPomCurrent
+        // JUnitDoclet end method isPomCurrent
+    }
+
+    public void testGetCvsModule() throws Exception
+    {
+        // JUnitDoclet begin method getCvsModule
+        // JUnitDoclet end method getCvsModule
+    }
+
+    public void testGetCvsRoot() throws Exception
+    {
+        // JUnitDoclet begin method getCvsRoot
+        // JUnitDoclet end method getCvsRoot
+    }
+
+    public void testAddVersion() throws Exception
+    {
+        // JUnitDoclet begin method addVersion
+        // JUnitDoclet end method addVersion
+    }
+
+    public void testSetGetVersions() throws Exception
+    {
+        // JUnitDoclet begin method setVersions getVersions
+        java.util.List[] tests = {new java.util.ArrayList(), null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setVersions( tests[i] );
+            assertEquals( tests[i], project.getVersions() );
+        }
+        // JUnitDoclet end method setVersions getVersions
+    }
+
+    public void testGetVersionById() throws Exception
+    {
+        // JUnitDoclet begin method getVersionById
+        // JUnitDoclet end method getVersionById
+    }
+
+    public void testSetGetLogo() throws Exception
+    {
+        // JUnitDoclet begin method setLogo getLogo
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            project.setLogo( tests[i] );
+            assertEquals( tests[i], project.getLogo() );
+        }
+        // JUnitDoclet end method setLogo getLogo
+    }
+
+    public void testCreateDocument() throws Exception
+    {
+        // JUnitDoclet begin method createDocument
+        // JUnitDoclet end method createDocument
+    }
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( ProjectTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/RepositoryTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/RepositoryTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/RepositoryTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,143 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class RepositoryTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Repository repository = null;
+    // JUnitDoclet end class
+
+    public RepositoryTest( String name )
+    {
+        // JUnitDoclet begin method RepositoryTest
+        super( name );
+        // JUnitDoclet end method RepositoryTest
+    }
+
+    public org.apache.maven.project.Repository createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Repository();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        repository = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        repository = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetConnection() throws Exception
+    {
+        // JUnitDoclet begin method setConnection getConnection
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            repository.setConnection( tests[i] );
+            assertEquals( tests[i], repository.getConnection() );
+        }
+        // JUnitDoclet end method setConnection getConnection
+    }
+
+    public void testSetGetUrl() throws Exception
+    {
+        // JUnitDoclet begin method setUrl getUrl
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            repository.setUrl( tests[i] );
+            assertEquals( tests[i], repository.getUrl() );
+        }
+        // JUnitDoclet end method setUrl getUrl
+    }
+
+    public void testGetCvsRoot() throws Exception
+    {
+        repository.setConnection("scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:module");
+        String root = repository.getCvsRoot();
+        assertEquals("Wrong root returned", ":pserver:anoncvs at cvs.apache.org:/home/cvspublic", root);
+        repository.setConnection("scm|svn|http://svn.apache.org/repos");
+        root = repository.getCvsRoot();
+        assertEquals("Wrong root for non CVS string", "", root);
+    }
+
+    public void testGetCvsModule() throws Exception
+    {
+        // JUnitDoclet begin method getCvsModule
+        // JUnitDoclet end method getCvsModule
+    }
+
+
+    public void testSplitScmConnection()
+    {
+        repository.setConnection("scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:module");
+        String[] tokens = Repository.splitSCMConnection(repository.getConnection());
+        assertEquals("Wrong number of tokens split", 6, tokens.length);
+        repository.setConnection("scm|svn|http://svn.apache.org/repos");
+        tokens = Repository.splitSCMConnection(repository.getConnection());
+        assertEquals("Wrong number of tokens split", 3, tokens.length);
+    }
+    
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( RepositoryTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ResourceTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ResourceTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/ResourceTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,128 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class ResourceTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Resource resource = null;
+    // JUnitDoclet end class
+
+    public ResourceTest( String name )
+    {
+        // JUnitDoclet begin method ResourceTest
+        super( name );
+        // JUnitDoclet end method ResourceTest
+    }
+
+    public org.apache.maven.project.Resource createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Resource();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        resource = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        resource = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testAddInclude() throws Exception
+    {
+        // JUnitDoclet begin method addInclude
+        // JUnitDoclet end method addInclude
+    }
+
+    public void testAddExclude() throws Exception
+    {
+        // JUnitDoclet begin method addExclude
+        // JUnitDoclet end method addExclude
+    }
+
+    public void testGetIncludes() throws Exception
+    {
+        // JUnitDoclet begin method getIncludes
+        // JUnitDoclet end method getIncludes
+    }
+
+    public void testGetExcludes() throws Exception
+    {
+        // JUnitDoclet begin method getExcludes
+        // JUnitDoclet end method getExcludes
+    }
+
+    public void testSetGetDirectory() throws Exception
+    {
+        // JUnitDoclet begin method setDirectory getDirectory
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            resource.setDirectory( tests[i] );
+            assertEquals( tests[i], resource.getDirectory() );
+        }
+        // JUnitDoclet end method setDirectory getDirectory
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( ResourceTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/SourceModificationTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/SourceModificationTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/SourceModificationTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,117 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class SourceModificationTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.SourceModification sourcemodification = null;
+    // JUnitDoclet end class
+
+    public SourceModificationTest( String name )
+    {
+        // JUnitDoclet begin method SourceModificationTest
+        super( name );
+        // JUnitDoclet end method SourceModificationTest
+    }
+
+    public org.apache.maven.project.SourceModification createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.SourceModification();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        sourcemodification = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        sourcemodification = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetClassName() throws Exception
+    {
+        // JUnitDoclet begin method setClassName getClassName
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            sourcemodification.setClassName( tests[i] );
+            assertEquals( tests[i], sourcemodification.getClassName() );
+        }
+        // JUnitDoclet end method setClassName getClassName
+    }
+
+    public void testSetGetProperty() throws Exception
+    {
+        // JUnitDoclet begin method setProperty getProperty
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            sourcemodification.setProperty( tests[i] );
+            assertEquals( tests[i], sourcemodification.getProperty() );
+        }
+        // JUnitDoclet end method setProperty getProperty
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( SourceModificationTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/VersionTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/VersionTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/project/VersionTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,104 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class VersionTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.project.Version version = null;
+    // JUnitDoclet end class
+
+    public VersionTest( String name )
+    {
+        // JUnitDoclet begin method VersionTest
+        super( name );
+        // JUnitDoclet end method VersionTest
+    }
+
+    public org.apache.maven.project.Version createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.project.Version();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        version = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        version = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testSetGetTag() throws Exception
+    {
+        // JUnitDoclet begin method setTag getTag
+        java.lang.String[] tests = {"", "a", "A", "ä", "ß", "0123456789", "012345678901234567890", null};
+
+        for ( int i = 0; i < tests.length; i++ )
+        {
+            version.setTag( tests[i] );
+            assertEquals( tests[i], version.getTag() );
+        }
+        // JUnitDoclet end method setTag getTag
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( VersionTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultArtifactFactoryTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultArtifactFactoryTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultArtifactFactoryTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,97 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class DefaultArtifactFactoryTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.repository.DefaultArtifactFactory defaultartifactfactory = null;
+    // JUnitDoclet end class
+
+    public DefaultArtifactFactoryTest( String name )
+    {
+        // JUnitDoclet begin method DefaultArtifactFactoryTest
+        super( name );
+        // JUnitDoclet end method DefaultArtifactFactoryTest
+    }
+
+    public org.apache.maven.repository.DefaultArtifactFactory createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.repository.DefaultArtifactFactory();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        defaultartifactfactory = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        defaultartifactfactory = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testCreateArtifact() throws Exception
+    {
+        // JUnitDoclet begin method createArtifact
+        // JUnitDoclet end method createArtifact
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( DefaultArtifactFactoryTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultRepositoryLayoutTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultRepositoryLayoutTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/DefaultRepositoryLayoutTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,91 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class DefaultRepositoryLayoutTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.repository.DefaultRepositoryLayout defaultrepositorylayout = null;
+    // JUnitDoclet end class
+
+    public DefaultRepositoryLayoutTest( String name )
+    {
+        // JUnitDoclet begin method DefaultRepositoryLayoutTest
+        super( name );
+        // JUnitDoclet end method DefaultRepositoryLayoutTest
+    }
+
+    public org.apache.maven.repository.DefaultRepositoryLayout createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.repository.DefaultRepositoryLayout();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        defaultrepositorylayout = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        defaultrepositorylayout = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( DefaultRepositoryLayoutTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/GenericArtifactTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/GenericArtifactTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/repository/GenericArtifactTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,115 @@
+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 junit.framework.TestCase;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class GenericArtifactTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.repository.GenericArtifact genericartifact = null;
+    // JUnitDoclet end class
+
+    public GenericArtifactTest( String name )
+    {
+        // JUnitDoclet begin method GenericArtifactTest
+        super( name );
+        // JUnitDoclet end method GenericArtifactTest
+    }
+
+    public org.apache.maven.repository.GenericArtifact createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.repository.GenericArtifact( new org.apache.maven.project.Dependency() );
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        genericartifact = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        genericartifact = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testGetDependency() throws Exception
+    {
+        // JUnitDoclet begin method getDependency
+        // JUnitDoclet end method getDependency
+    }
+
+    public void testGetPath() throws Exception
+    {
+        // JUnitDoclet begin method getPath
+        // JUnitDoclet end method getPath
+    }
+
+    public void testGetUrlPath() throws Exception
+    {
+        // JUnitDoclet begin method getUrlPath
+        // JUnitDoclet end method getUrlPath
+    }
+
+    public void testGetName() throws Exception
+    {
+        // JUnitDoclet begin method getName
+        // JUnitDoclet end method getName
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( GenericArtifactTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLFormatterTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLFormatterTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLFormatterTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,89 @@
+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.0.2/src/test/java/org/apache/maven/util/DVSLPathToolTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLPathToolTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/DVSLPathToolTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,267 @@
+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 122098 2004-03-02 05:38:55Z evenisse $
+ */
+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 122098 2004-03-02 05:38:55Z evenisse $
+     */
+    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.0.2/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/EnhancedStringTokenizerTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,117 @@
+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.0.2/src/test/java/org/apache/maven/util/ExpandTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/ExpandTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/ExpandTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,115 @@
+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;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class ExpandTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.util.Expand expand = null;
+    // JUnitDoclet end class
+
+    public ExpandTest( String name )
+    {
+        // JUnitDoclet begin method ExpandTest
+        super( name );
+        // JUnitDoclet end method ExpandTest
+    }
+
+    public org.apache.maven.util.Expand createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.util.Expand();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        expand = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        expand = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testExecute() throws Exception
+    {
+        // JUnitDoclet begin method verify
+        // JUnitDoclet end method verify
+    }
+
+    public void testSetDest() throws Exception
+    {
+        // JUnitDoclet begin method setDest
+        // JUnitDoclet end method setDest
+    }
+
+    public void testSetSrc() throws Exception
+    {
+        // JUnitDoclet begin method setSrc
+        // JUnitDoclet end method setSrc
+    }
+
+    public void testSetOverwrite() throws Exception
+    {
+        // JUnitDoclet begin method setOverwrite
+        // JUnitDoclet end method setOverwrite
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( ExpandTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/HttpUtilsTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/HttpUtilsTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/HttpUtilsTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,135 @@
+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;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class HttpUtilsTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.util.HttpUtils httputils = null;
+    // JUnitDoclet end class
+
+    public HttpUtilsTest( String name )
+    {
+        // JUnitDoclet begin method HttpUtilsTest
+        super( name );
+        // JUnitDoclet end method HttpUtilsTest
+    }
+
+    public org.apache.maven.util.HttpUtils createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.util.HttpUtils();
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        httputils = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        httputils = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testUseProxyUser() throws Exception
+    {
+        // JUnitDoclet begin method useProxyUser
+        // JUnitDoclet end method useProxyUser
+    }
+
+    public void testGetFile() throws Exception
+    {
+        // JUnitDoclet begin method getFile
+        // JUnitDoclet end method getFile
+    }
+
+    /**
+     * Test the function that will parse an url which contains
+     * a username and password into its constituent parts.
+     */
+    public void testParseUrl() throws Exception
+    {
+        String url = "http://username:password@repository.mycompany.com";
+        String[] up = HttpUtils.parseUrl( url );
+
+        assertEquals( "username", up[0] );
+        assertEquals( "password", up[1] );
+        assertEquals( "http://repository.mycompany.com", up[2] );
+    
+        url = "http://repository.mycompany.com";
+        up = HttpUtils.parseUrl( url );
+    
+        assertNull( up[0] );
+        assertNull( up[1] );
+        assertEquals( "http://repository.mycompany.com", up[2] );
+    }
+
+    public void testParseInvalidUrl() throws Exception
+    {
+        String invalidUrl = "a at username:http://password";
+        try {
+            String[] up = HttpUtils.parseUrl( invalidUrl );
+            fail("expected RuntimeException to be thrown but got " + up.length + " elements.");
+
+        } catch (RuntimeException e) {
+            assertTrue(true); // expected
+        }
+    }
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( HttpUtilsTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/InsertionOrderedSetTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,104 @@
+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;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Test InsertionOrderedSet.
+ *
+ * @author <a href="mailto:brett at apache.org">Brett Porter</a>
+ * @version $Id: InsertionOrderedSetTest.java 122098 2004-03-02 05:38:55Z evenisse $
+ */
+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 String STRING_4 = "yyy";
+
+    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.0.2/src/test/java/org/apache/maven/util/MD5SumTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/MD5SumTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/MD5SumTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.io.File;
+
+/**
+ * @author <a href="mailto:jason at zenplex.com">Jason van Zyl</a>
+ * @version $Id: MD5SumTest.java 122098 2004-03-02 05:38:55Z evenisse $
+ */
+
+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.0.2/src/test/java/org/apache/maven/util/MavenToolTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/MavenToolTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/MavenToolTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,81 @@
+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;
+
+import java.io.File;
+
+/**
+ * Unit test for <code>MavenTool</code>.
+ *
+ * @author <a href="mailto:dlr at finemaltcoding.com">Daniel Rall</a>
+ * @version $Id: MavenToolTest.java 122098 2004-03-02 05:38:55Z evenisse $
+ */
+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.0.2/src/test/java/org/apache/maven/util/StringInputStreamTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringInputStreamTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringInputStreamTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,121 @@
+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;
+
+// JUnitDoclet end import
+
+/**
+ * Generated by JUnitDoclet, a tool provided by
+ * ObjectFab GmbH under LGPL.
+ * Please see www.junitdoclet.org, www.gnu.org
+ * and www.objectfab.de for informations about
+ * the tool, the licence and the authors.
+ */
+
+
+public class StringInputStreamTest
+// JUnitDoclet begin extends_implements
+    extends TestCase
+// JUnitDoclet end extends_implements
+{
+    // JUnitDoclet begin class
+    org.apache.maven.util.StringInputStream stringinputstream = null;
+    // JUnitDoclet end class
+
+    public StringInputStreamTest( String name )
+    {
+        // JUnitDoclet begin method StringInputStreamTest
+        super( name );
+        // JUnitDoclet end method StringInputStreamTest
+    }
+
+    public org.apache.maven.util.StringInputStream createInstance() throws Exception
+    {
+        // JUnitDoclet begin method testcase.createInstance
+        return new org.apache.maven.util.StringInputStream( "test" );
+        // JUnitDoclet end method testcase.createInstance
+    }
+
+    protected void setUp() throws Exception
+    {
+        // JUnitDoclet begin method testcase.setUp
+        super.setUp();
+        stringinputstream = createInstance();
+        // JUnitDoclet end method testcase.setUp
+    }
+
+    protected void tearDown() throws Exception
+    {
+        // JUnitDoclet begin method testcase.tearDown
+        stringinputstream = null;
+        super.tearDown();
+        // JUnitDoclet end method testcase.tearDown
+    }
+
+    public void testRead() throws Exception
+    {
+        // JUnitDoclet begin method read
+        // JUnitDoclet end method read
+    }
+
+    public void testClose() throws Exception
+    {
+        // JUnitDoclet begin method close
+        // JUnitDoclet end method close
+    }
+
+    public void testMark() throws Exception
+    {
+        // JUnitDoclet begin method mark
+        // JUnitDoclet end method mark
+    }
+
+    public void testReset() throws Exception
+    {
+        // JUnitDoclet begin method reset
+        // JUnitDoclet end method reset
+    }
+
+    public void testMarkSupported() throws Exception
+    {
+        // JUnitDoclet begin method markSupported
+        // JUnitDoclet end method markSupported
+    }
+
+
+    /**
+     * JUnitDoclet moves marker to this method, if there is not match
+     * for them in the regenerated code and if the marker is not empty.
+     * This way, no test gets lost when regenerating after renaming.
+     * Method testVault is supposed to be empty.
+     */
+    public void testVault() throws Exception
+    {
+        // JUnitDoclet begin method testcase.testVault
+        // JUnitDoclet end method testcase.testVault
+    }
+
+    public static void main( String[] args )
+    {
+        // JUnitDoclet begin method testcase.main
+        junit.textui.TestRunner.run( StringInputStreamTest.class );
+        // JUnitDoclet end method testcase.main
+    }
+}

Added: branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringToolTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringToolTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/java/org/apache/maven/util/StringToolTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,63 @@
+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;
+
+import java.util.List;
+
+/**
+ * @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.0.2/src/test/log4j.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/log4j.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/log4j.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,119 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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
+
+# ------------------------------------------------------------------------
+# H T T P U T I L S
+# ------------------------------------------------------------------------
+#log4j.category.org.apache.maven.util.HttpUtils = ${log.level}, httputils
+#log4j.appender.httputils = org.apache.log4j.FileAppender
+#log4j.appender.httputils.file = log.httputils
+#log4j.appender.httputils.layout = org.apache.log4j.PatternLayout
+#log4j.appender.httputils.layout.conversionPattern = %c: %m%n
+#log4j.appender.httputils.append = true

Added: branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-1/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-1/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-1/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-2/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-2/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-2/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-3/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-3/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-3/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-4/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-4/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-4/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-5/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-5/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-5/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-6/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-6/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-6/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-7/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-7/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-7/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-8/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-8/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-8/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/mock-plugins/plugin-9/plugin.jelly
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-9/plugin.jelly	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/mock-plugins/plugin-9/plugin.jelly	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/base-id-only.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base-id-only.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/base-id-only.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/base.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/base.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/test-group-id-and-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/test-group-id-and-id-as-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-only.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-only.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/test-id-only.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-override-groupid.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-override-groupid.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-id-override-groupid.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/test-id-override-groupid.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-none.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-none.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/extend/test-none.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/extend/test-none.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-artifact-id.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/test-group-id-and-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/test-group-id-and-id-as-artifact-id.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-id-only.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-id-only.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/test-data/pom/test-id-only.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/test-data/pom/test-id-only.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,3 @@
+target
+maven.log
+velocity.log

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


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

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


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

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,892 @@
+<!-- 
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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"
+  default="jar:jar"
+  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-entity-goal" />
+    <attainGoal name="test-plugin-getset" />
+
+<!-- TODO - this is still broken (as in RC1)
+    <attainGoal name="test-reactor-maven-username" />
+    <attainGoal name="test-dot-property">
+-->
+    <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')}" />
+    <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-entity-goal">
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/entity-test/project.xml"
+      goals=""
+      ignoreFailures="false"
+    />
+    <maven:maven
+      descriptor="${basedir}/src/reactor-build/entity-test/subproject/project.xml"
+      goals=""
+      ignoreFailures="false"
+    />
+  </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 != 'theme'}">
+      <fail>maven.xdoc.theme in xdoc plugin is not 'theme', 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>
+</project>
+

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,50 @@
+# -------------------------------------------------------------------
+# Copyright 2001-2004 The Apache Software Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+#  
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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
+
+# ------------------------------------------------------------------------
+# 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

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,308 @@
+<?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>
+    <!-- 
+      |
+      | 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>
+    <!-- 
+      |
+      | 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>
+
+    <!-- 
+      |
+      | New groupId/artifactId selection.
+      |
+    -->
+
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-velocity</artifactId>
+      <version>20030303.205659</version>
+    </dependency>
+
+    <dependency>
+      <id>velocity</id>
+      <version>1.3</version>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-ant</artifactId>
+      <version>20030211.142045</version>
+    </dependency>
+    <!--
+     |
+     | Jelly runtime dependencies.
+     |
+    -->
+
+    <dependency>
+      <id>commons-jelly</id>
+      <version>20030902.160215</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly-tags-interaction</artifactId>
+      <version>20030211.143817</version>
+    </dependency>
+    <dependency>
+      <id>commons-betwixt</id>
+      <version>20030211.133854</version>
+    </dependency>
+    <dependency>
+      <id>commons-digester</id>
+      <version>1.4.1</version>
+    </dependency>
+    <dependency>
+      <id>commons-logging</id>
+      <version>1.0.1</version>
+    </dependency>
+    <dependency>
+      <id>commons-beanutils</id>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <id>commons-collections</id>
+      <version>2.1</version>
+    </dependency>
+    <dependency>
+      <id>dom4j</id>
+      <version>1.4-dev-8</version>
+    </dependency>
+    <dependency>
+      <id>werkz</id>
+      <version>1.0-beta-5</version>
+    </dependency>
+    <dependency>
+      <id>commons-jexl</id>
+      <version>1.0-beta-1</version>
+    </dependency>
+    <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>
+    <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.0.2/src/test/touchstone-build/src/aptdocs/apt-test.apt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/aptdocs/apt-test.apt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/aptdocs/apt-test.apt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/conf/log4j.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/log4j.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/log4j.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/conf/runtime.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/runtime.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/conf/runtime.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Foo.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/main/org/apache/maven/touchstone/Touchstone.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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 119120 2002-11-24 19:35:23Z jvanzyl $
+ */
+public class Touchstone
+{
+}

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+This example shows standard reactor'ed cleaning idiom.

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/clean/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/clean/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/clean/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/default/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+base.default.goal=base-default

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/default/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/default/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/entity/entity.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/entity/entity.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/entity/entity.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,4 @@
+<goal name="test-goal-in-entity">
+  <echo>Inside entity definition goal</echo>
+  <j:set var="entityGoalVar" value="true" />
+</goal>

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+ */
+ -->
+
+<!DOCTYPE project [
+  <!ENTITY entityGoal SYSTEM "entity/entity.xml">
+]>
+
+<project default="run" xmlns:j="jelly:core" xmlns:ant="jelly:ant">
+  &entityGoal;
+
+  <goal name="run">
+    <j:remove var="entityGoalVar"/>
+    <attainGoal name="test-goal-in-entity" />
+    <j:if test="${empty(entityGoalVar)}">
+      <ant:fail>entityGoalVar was not defined</ant:fail>
+    </j:if>
+  </goal>
+</project>

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,22 @@
+<?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>
+  <id>entity-test</id>
+</project>


Property changes on: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,23 @@
+<?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>
+  <id>entity-test-sub</id>
+</project>


Property changes on: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/entity-test/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/extra-failure/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-1/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/failure-2/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-1/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/failProperty/success-2/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/NOTES.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/build.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/build.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/build.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/build.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/build.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/inheritence/subproject/subproject2/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/a/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/b/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/c/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/d/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/e/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/f/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/a/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/b/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/c/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/d/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/e/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/f/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/legacy-fugly/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/resources/NOTES.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/resources/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/resources/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+target

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/resources/subproject/resources/test.properties
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+Second run of reactor fails with "Unknown goal ..." message.


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

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/run_twice/maven.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/run_twice/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/run_twice/subproject/project.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/BUGS.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/NOTES.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/a/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/a/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/a/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/b/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/b/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/b/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/c/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/c/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/c/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/d/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/d/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/d/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/e/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/e/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/f/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/f/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/project.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/project.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/project.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/standard/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/standard/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/username_test/maven.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/maven.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/maven.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/reactor-build/username_test/project.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/project.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/reactor-build/username_test/project.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/resources/resources.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/resources.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/resources.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/resources/resources.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/resources.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/resources/resources.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test/org/apache/maven/touchstone/TouchstoneTest.java	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,97 @@
+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 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.0.2/src/test/touchstone-build/src/test-data/maven.tar.gz
===================================================================
(Binary files differ)


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

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/sea-header
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/sea-header	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/sea-header	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/test-data/test.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/test.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/test.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/src/test-data/whacky.properties
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/whacky.properties	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/src/test-data/whacky.properties	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/xdocs/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+stylesheets

Added: branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/navigation.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/navigation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/navigation.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/test/touchstone-build/xdocs/tables.xml
===================================================================
--- branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/tables.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/test/touchstone-build/xdocs/tables.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/src/xsd/maven-navigation-1.0.xsd
===================================================================
--- branches/maven1/upstream/1.0.2/src/xsd/maven-navigation-1.0.xsd	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/xsd/maven-navigation-1.0.xsd	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+ */
+ -->
+
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+
+  <xs:element name="project">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="title"/>
+        <xs:element ref="head" minOccurs="0"/>
+        <xs:element ref="body"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="title" type="xs:string"/>
+  
+  <xs:element name="head">
+  </xs:element>
+
+  <xs:element name="body">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="links" minOccurs="0" />
+        <xs:element ref="menu" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="links">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="menu">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" />
+      <!-- type is an optional entry that defines where the menu is destined for.
+      	   Values - left-header (default), left-footer -->
+      <xs:attribute name="type" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="item">
+    <xs:complexType>
+      <xs:sequence>
+        <!-- items can have other items -->
+        <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="href" type="xs:string" />
+      <!-- img is an href that will be used as the image for link -->
+      <xs:attribute name="img" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+  
+</xs:schema>

Added: branches/maven1/upstream/1.0.2/src/xsd/maven-project.xsd
===================================================================
--- branches/maven1/upstream/1.0.2/src/xsd/maven-project.xsd	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/src/xsd/maven-project.xsd	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,451 @@
+<?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.
+ */
+ -->
+
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
+  elementFormDefault="qualified">
+  <xs:element name="project">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="extend" minOccurs="0"/>
+        <xs:element ref="pomVersion"/>
+        <xs:element ref="id"/>
+        <xs:element ref="name"/>
+        <xs:element ref="groupId" minOccurs="0"/>
+        <xs:element ref="currentVersion"/>
+        <xs:element ref="organization"/>
+        <xs:element ref="inceptionYear"/>
+        <xs:element ref="package" minOccurs="0"/>
+        <xs:element ref="logo" minOccurs="0"/>
+        <xs:element ref="gumpRepositoryId" minOccurs="0"/>
+        <xs:element ref="description" minOccurs="0"/>
+        <xs:element ref="shortDescription"/>
+        <xs:element ref="url" minOccurs="0" />
+        <xs:element ref="issueTrackingUrl" minOccurs="0"/>
+        <xs:element ref="siteAddress" minOccurs="0"/>
+        <xs:element ref="siteDirectory" minOccurs="0"/>
+        <xs:element ref="distributionSite" minOccurs="0"/>
+        <xs:element ref="distributionDirectory" minOccurs="0"/>
+        <xs:element ref="repository" minOccurs="0"/>
+        <xs:element ref="versions" minOccurs="0"/>
+        <xs:element ref="branches" minOccurs="0"/>
+        <xs:element ref="mailingLists" minOccurs="0"/>
+        <xs:element ref="developers"/>
+        <xs:element ref="contributors" minOccurs="0"/>
+        <xs:element ref="licenses" minOccurs="0"/>
+        <xs:element ref="dependencies" minOccurs="0"/>
+        <xs:element ref="build"/>
+        <xs:element ref="reports" minOccurs="0"/>
+        <xs:element ref="properties" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="extend" type='xs:string'/>
+  <xs:element name="connection" type='xs:string'/>
+  <xs:element name="developerConnection" type='xs:string'/>
+  <xs:element name="currentVersion" type='xs:string'/>
+  <xs:element name="description" type='xs:string'/>
+  <xs:element name="distributionSite" type='xs:string'/>
+  <xs:element name="distributionDirectory" type='xs:string'/>
+  <xs:element name="name" type='xs:string'/>
+  <xs:element name="groupId" type='xs:string'/>
+  <xs:element name="artifactId" type='xs:string'/>
+  <xs:element name="gumpRepositoryId" type='xs:string'/>
+  <xs:element name="id" type='xs:string'/>
+  <xs:element name="inceptionYear" type='xs:gYear'/>
+  <!-- not anyURI as it can contain ${pom....} -->
+  <xs:element name="issueTrackingUrl" type='xs:string'/>
+  <xs:element name="logo" type='xs:string'/>
+  <xs:element name="package" type='xs:string'/>
+  <xs:element name="pomVersion" type='xs:string'/>
+  <xs:element name="shortDescription" type='xs:string'/>
+  <xs:element name="siteAddress" type='xs:string'/>
+  <xs:element name="siteDirectory" type='xs:string'/>
+  <!-- not anyURI as it can contain ${pom....} -->
+  <xs:element name="url" type='xs:string'/>
+
+  <!-- /repository element -->
+  <xs:element name="repository">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="connection"/>
+        <xs:element ref="developerConnection" minOccurs="0"/>
+        <xs:element ref="url" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- /organization element -->
+  <xs:element name="organization">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name"/>
+        <xs:element ref="url" minOccurs="0" />
+        <xs:element ref="logo" minOccurs="0" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- /versions element -->
+  <xs:element name="versions">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="version" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /versions/version element -->
+  <xs:element name="version">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="id"/>
+        <xs:element ref="name"/>
+        <xs:element ref="tag"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /versions/version/tag and branches/branch/tag-->
+  <xs:element name="tag" type='xs:string'/>
+  
+  <!-- /branches element -->
+  <xs:element name="branches">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="branch" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /branches/branch element -->
+  <xs:element name="branch">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tag"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /mailingLists element -->
+  <xs:element name="mailingLists">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="mailingList" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /mailingLists/mailingList element -->
+  <xs:element name="mailingList">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name"/>
+        <xs:element ref="subscribe"/>
+        <xs:element ref="unsubscribe"/>
+        <xs:element ref="archive" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- /mailingLists/mailingList/subscribe element -->  
+  <xs:element name="subscribe" type='xs:string'/>
+  <!-- /mailingLists/mailingList/unsubscribe element -->  
+  <xs:element name="unsubscribe" type='xs:string'/>
+  <!-- /mailingLists/mailingList/archive element -->  
+  <xs:element name="archive" type='xs:string'/>
+  
+  <!-- /developers element -->
+  <xs:element name="developers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="developer" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /developers/developer element -->
+  <xs:element name="developer">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name"/>
+        <xs:element ref="id"/>
+        <xs:group ref="contactDetails" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- /developers/developer/contactDetails group and
+       /contributors/contributor/contactDetails group -->
+  <xs:group name="contactDetails">
+      <xs:sequence>
+        <xs:element ref="email"/>
+        <xs:element name="organization" type='xs:string' minOccurs="0"/>
+        <xs:element ref="roles" minOccurs="0" />
+        <xs:element ref="url" minOccurs="0" />
+        <xs:element ref="timezone" minOccurs="0" />
+      </xs:sequence>
+  </xs:group>
+
+  <!-- contactDetails/email element -->
+  <xs:element name="email" type='xs:string'/>
+
+  <!-- contactDetails/roles element -->
+  <xs:element name="roles">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="role" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- contactDetails/roles/role element -->
+  <xs:element name="role" type='xs:string'/>
+
+  <!-- type for contactDetails/roles/timezone element -->  
+  <xs:simpleType name="timezoneType">
+    <xs:restriction base="xs:decimal">
+      <xs:minInclusive value="-14"/>
+      <xs:maxInclusive value="+14"/>
+    </xs:restriction>
+  </xs:simpleType> 
+  
+  <!-- contactDetails/roles/timezone element
+       Stores a decimal that is the offset to GMT.
+    -->  
+  <xs:element name="timezone" type='timezoneType'/>
+
+  <!-- /contributors element -->  
+  <xs:element name="contributors">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="contributor" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /contributors/contributor element -->
+  <xs:element name="contributor">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name"/>
+        <xs:group ref="contactDetails" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- /licenses element -->
+  <xs:element name="licenses">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="license" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /licenses/license element -->
+  <xs:element name="license">
+    <xs:complexType>
+      <xs:sequence>
+        <!-- name of the license, e.g. ASL 1.1 -->
+        <xs:element ref="name" minOccurs="0"/>
+        <!-- fetchable version of the license -->
+        <xs:element ref="url" minOccurs="0" />
+        <!-- 'manual' or 'repo' -->
+        <xs:element ref="distribution" minOccurs="0" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- /licenses/license/distribution element -->
+  <xs:element name="distribution">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:pattern value="manual|repo"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+  
+  <!-- /dependencies element -->
+  <xs:element name="dependencies">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /dependencies/dependency element -->
+  <xs:element name="dependency">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="id" minOccurs="0" />
+        <xs:element ref="groupId" minOccurs="0" />
+        <xs:element ref="artifactId" minOccurs="0" />
+        <xs:element name="version" type="xs:string" />
+        <xs:element ref="jar" minOccurs="0"/>
+        <xs:element ref="type" minOccurs="0"/>
+        <xs:element ref="url" minOccurs="0"/>
+        <xs:element ref="properties" minOccurs="0" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- /dependencies/dependency/type element -->
+  <xs:element name="type" type='xs:string'/>
+  <!-- /dependencies/dependency/jar element -->
+  <xs:element name="jar" type='xs:string'/>
+  
+  <!-- /build element -->
+  <xs:element name="build">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="nagEmailAddress" minOccurs="0"/>
+        <xs:element ref="sourceDirectory" minOccurs="0"/>
+        <xs:element ref="sourceModifications" minOccurs="0"/>
+        <xs:element ref="unitTestSourceDirectory" minOccurs="0"/>
+        <xs:element ref="integrationUnitTestSourceDirectory" minOccurs="0"/>
+        <xs:element ref="aspectSourceDirectory" minOccurs="0"/>
+        <xs:element ref="unitTest" minOccurs="0"/>
+        <!-- no longer appears in build.java 
+        <xs:element ref="integrationUnitTest" minOccurs="0"/>
+        -->
+        <xs:element ref="resources" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="nagEmailAddress" type='xs:string'/>
+
+  <xs:element name="sourceDirectory" type='xs:string'/>
+  
+  <xs:element name="sourceModifications">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="sourceModification" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  
+  <xs:element name="sourceModification">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="className" type='xs:string'/>
+        <xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  
+  <xs:element name="unitTestSourceDirectory" type='xs:string'/>
+  <xs:element name="integrationUnitTestSourceDirectory" type='xs:string'/>
+  <xs:element name="aspectSourceDirectory" type='xs:string'/>
+  
+  <xs:element name="unitTest">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="resources" minOccurs="0" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="includes">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="include" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="excludes">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="exclude" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="include" type='xs:string'/>
+  <xs:element name="exclude" type='xs:string'/>
+  
+  <!-- no longer appears in build.java
+  <xs:element name="integrationUnitTest">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  -->
+  <xs:element name="resources">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="directory" type='xs:string'/>
+  <xs:element name="targetPath" type='xs:string'/>
+  <xs:element name="filtering" type="xs:boolean" />
+
+  <xs:element name="resource">
+    <xs:complexType>
+      <xs:sequence>
+        <!-- FIXME: I think that this defaults to basedir, need a check -->
+        <xs:element ref="directory" minOccurs="0"/>
+        <xs:element ref="targetPath" minOccurs="0"/>
+        <xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="filtering" minOccurs="0" maxOccurs="1"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element> 
+
+  <xs:element name="reports">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="report" minOccurs="0" maxOccurs="unbounded" 
+          type="xs:string"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="properties">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="classloader">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:pattern value="root|root.maven"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+
+</xs:schema>

Added: branches/maven1/upstream/1.0.2/xdocs/.cvsignore
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/.cvsignore	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/.cvsignore	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1 @@
+stylesheets

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/design.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/design.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/design.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,104 @@
+<?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</title>
+    <author email="maven at walding.com">Ben Walding</author>
+    <author email="dion at apacheorg">dIon Gillard</author>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <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>
+      <subsection name="An example">
+        <p>
+          To compile your java code using Ant, you must first
+          write a build.xml 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 build.xml 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 is 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
+          project.xml), one piece of which is your source directory 
+          that stores your java code.
+        </p>
+        <source><![CDATA[
+...
+  <build>
+    <sourceDirectory>src/java</sourceDirectory>
+    <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
+...
+]]>
+        </source>
+        <p>
+          To compile your code, you just need to specify that you have a
+          <code>sourceDirectory</code> 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 source code conforms to a coding standard uses
+          the same <code>sourceDirectory</code> as the plugin that compiles code.
+        </p>
+      </subsection>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.
+ */
+ -->
+
+
+<document>
+
+  <properties>
+    <title>Maven</title>
+    <author email="maven at walding.com">Ben Walding</author>
+  </properties>
+
+  <body>
+
+  <section name="Overview">
+    <p>
+      Most people have heard of Ant, the flagship build product for Java
+      applications.  Fewer people have heard of Maven, an integrated build
+      environment that sits on top of Jelly (scripting language), Ant and
+      several other key components.
+    </p>
+    
+    <p>
+      This guide covers the in and outs of using Maven from the perspective
+      of an existing Ant user.
+    </p>
+    
+    <p>
+      Each section covers a different aspect of the environment and relates
+      it back to Ant, how each environment differs, and where each
+      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="Sections">
+  
+    <subsection name="Philosophical">
+      <ul>
+        <li><a href="design.html">Design - How Maven and Ant are designed to work</a></li>
+        <li><a href="terminology.html">Terminology - Ant has this thing called X, what is it called in Maven?</a></li>
+      </ul>
+    </subsection>
+      
+    <subsection name="Political">
+      <ul>
+        <li><a href="where.html">Where - Where should I use Maven? Where should I use Ant?</a></li>
+      </ul>
+    </subsection>
+  
+    <subsection name="Practical">
+      <p>
+        A common question that comes up is how to do certain things in Maven that
+        are quite trivial in Ant.  These answers represent the best-of-breed solutions to problems,
+        and if you have a better solution, let the maintainer know.              
+      </p>
+
+      <p>
+        <ul>
+          <li><a href="practical.html">Practical Solutions</a></li>
+        </ul>
+      </p>
+    </subsection>        
+    
+  </section>
+
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/practical.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/practical.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/practical.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>Maven</title>
+    <author email="maven at walding.com">Ben Walding</author>
+  </properties>
+
+  <body>
+      
+    <section name="Practical">
+      <p>
+        A common question that comes up is how to do certain things in Maven that
+        are quite trivial in Ant.  These answers represent the best-of-breed solutions to problems,
+        and if you have a better solution, let the maintainer know.
+      </p>        
+      
+      <p>
+        <ul>
+          <li><a href="qna/speed.html">Ant is sooo much faster than this sluggish Maven</a></li>
+          <li><a href="qna/hooks.html">Using hooks to make extra things happen before / after a goal</a></li>
+          <li><a href="qna/antfarming.html">Using Ant build targets while you're converting over to Maven</a></li>
+          <li><a href="qna/help.html">Getting help on a project</a></li>
+          <li><a href="qna/properties.html">Expanding properties in a file</a></li>
+        </ul>
+      </p>
+    </section>        
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/antfarming.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/antfarming.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/antfarming.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,73 @@
+<?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</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Calling Ant Scripts from Maven">
+      <p>
+        Often, 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.xml</a> file with the information you need to do
+        the Maven tasks you are using.
+      </p>
+      <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 maven.xml 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 <a href="hooks.html">goal dependencies</a> 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 expected to be able 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>
+      <p>
+        Future steps of integration would be to start importing those small Ant fragments into your maven.xml, or
+        for larger tasks make them reusable and create a Maven plugin that will be available to all your projects.
+      </p>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/help.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/help.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/help.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>Maven</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <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 defualt goal is what you wanted.
+          A build.properties.sample 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 goal or what property it's expecting, you dig into
+          build.xml and look at what it is attempting.
+        </p>
+        <p>
+          The process for Maven should be simpler unless the project is being really unhelpful.
+        </p>
+      </subsection>
+      <subsection name="Help for a simple Maven project - no maven.xml">
+        <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 many subprojects,
+          <code>maven multiproject</code> is a good bet. Finally, <code>maven site</code> (or 
+          <code>maven multiproject:site</code>) should produce some documentation or at least some statistics.
+        </p>
+        <p>
+          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 Mavne plugin properties are being used, and you
+          know how they behave.
+        </p>
+      </subsection>
+      <subsection name="Help for a Maven project with maven.xml">
+        <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 "maven" 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">
+        <!-- TODO: move this up and link from the above section -->
+        <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.
+        </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, and harass 
+          the authors of the project via their users mailing list (which you should also find in
+          <code>project.xml</code>).
+        </p>
+      </subsection>
+    </section>
+  </body>
+  
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/hooks.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/hooks.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/hooks.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,62 @@
+<?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</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section 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;build&gt;/&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 according to the fragment above -->
+    ...
+  </goal>
+</project>]]></source>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/properties.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/properties.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/properties.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,37 @@
+<?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</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Expanding properties in a file">
+      <p>
+        This can now be done using resource filtering. See this wiki entry for more information: 
+        <a href="http://wiki.codehaus.org/maven/FilteringResources">http://wiki.codehaus.org/maven/FilteringResources</a>.
+      </p>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/speed.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/speed.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/qna/speed.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,62 @@
+<?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</title>
+    <author email="maven at walding.com">Ben Walding</author>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Question">
+      <p>
+        Maven takes a lot longer to initialise and start processing
+        when I run it.  How can Maven possibly save me time with such a 
+        huge startup overhead?
+      </p>
+    </section>
+      
+    <section name="Answers">
+      <subsection name="Are you sure?">
+        <p>
+          This has become a bit of a myth now, as Maven takes very little more than Ant
+          to initialise (with the exception of the first run when plugins must be 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!
+          This area is also a focus for future development so generating these types of parts of the build
+          are much faster.
+        </p>
+      </subsection>
+      <subsection name="Use the Console">
+        <p>
+          When it comes down to your day to day development and edit-build-test cycle, you
+          should use the "maven console" command.
+          This console keeps Maven loaded and ready to do your bidding for a specific project.
+          <b>This feature makes Maven faster than Ant for performing builds!</b>
+        </p>
+      </subsection>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/terminology.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/terminology.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/terminology.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,87 @@
+<?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</title>
+    <author email="maven at walding.com">Ben Walding</author>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <p>
+        This section covers what different components are called in each
+        of Maven and Ant
+        <ul>
+          <li><a href="#Project">Project</a></li>
+          <li><a href="#Target">Target</a></li>
+          <li><a href="#Build_file">Build file</a></li>
+        </ul>
+      </p>
+    </section>
+    
+    <section name="Project">
+      <p>
+        In ant a <code>project</code> is what you define in your build.xml file.
+        This project is a collection of <code>target</code>s, which are composed
+        of tasks.
+      </p>
+      <p>
+        In Maven a project is what you define in your project.xml file.
+        It's a collection of information about the development effort that Maven
+        uses to produce an artifact such as a jar or war.
+      </p>
+    </section>
+    
+    <section name="Target">
+      <p>
+        A target is the unit of execution for a user of ant. When you execute ant,
+        you provide a list of targets to run, e.g.
+      </p>
+      <source>ant clean compile</source>
+      <p>
+        Which executes the <code>clean</code> target followed by the <code>compile</code>
+        targets you have coded in your build.xml file.
+      </p>
+      <p>
+        In Maven, the <code>goal</code> is the equivalent of an ant target, e.g.
+      </p>
+      <source>maven clean java:compile</source>
+      <p>
+        Executes the <code>clean</code> goal of the <code>clean</code> plugin,
+        followed by the <code>java:compile</code> of the <code>java</code>
+        plugin.
+      </p>
+      <p>
+        Maven goals can contain ant tasks as well as <a href="http://jakarta.apache.org/commons/jelly/">jelly</a> tags.
+      </p>
+    </section>
+    
+    <section name="Build file">
+      <p>When writing your own code in ant, you place the <code>target</code>s 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 using standard Maven goals, maven.xml is not compulsory.
+      </p>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/ant-guide/where.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/ant-guide/where.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/ant-guide/where.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,55 @@
+<?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</title>
+    <author email="maven at walding.com">Ben Walding</author>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <p>Answers to the long asked questions
+        <ul>
+          <li>When would I use Maven?</li>
+          <li>When would I use Ant?</li>
+          <li>When would I use both?</li>
+        </ul>
+      </p>
+    </section>
+    <section name="When would I use Maven?">
+      <p>
+        
+      </p>
+    </section>
+    <section name="When would I use Ant?">
+      <p>
+        
+      </p>
+    </section>
+    <section name="When would I use both?">
+      <p>
+        
+      </p>
+    </section>
+  </body>
+  
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/apache/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/apache/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/apache/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,37 @@
+<?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="dion at apache.org">dIon Gillard</author>
+  </properties>
+
+  <body>
+
+    <section name="Apache Resources">
+      <p>
+        This section is a placeholder for various resources that the Apache Software 
+        Foundation provides that are relevant to Maven users and developers
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/archived/internals.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/archived/internals.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/archived/internals.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,54 @@
+<?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>Internals</title>
+    <author email="jason at maven.org">Jason van Zyl</author>
+  </properties>
+
+  <body>
+    <section name="Internals">
+      <p>
+        <ul>
+          <li>
+            Plugin contexts inherit from the project's context.
+          </li>
+          <li>
+            When plugins are processed the writing of the cache files is
+            performed, plugin dependencies are processed and goals are
+            created which is a process where the body of the goal is stored
+            in a Werkz Action.
+          </li>
+          <li>
+            When a goal is attained the action for the goal is executed. In
+            the case of the GoalTag the Jelly body of the goal is invoked.
+            When the goal is invoked we are asking for a specific Jelly blob
+            from a specific plugin to be executed. So we must attach the
+            correct context and classloader to the goal before it's
+            action is executed. So N goals may be executed and the
+            context/classloader combination is flipped before each
+            goal is attained.
+          </li>
+        </ul>
+      </p>
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/archived/links.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/archived/links.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/archived/links.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,45 @@
+<?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>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <title>Links</title>
+  </properties>
+
+  <body>
+
+    <section name="Links"/>
+    
+    <links>
+      <link>
+        <id>stqe</id>
+        <title>The Software Testing and Quality Engineering Magazine</title>
+        <url>http://www.stqemagazine.com/</url>
+      </link>
+      <link>
+        <id>compcon</id>
+        <title>Catalog of Compiler Construction Tools</title>
+        <url>http://catalog.compilertools.net/</url>
+      </link>
+    </links>
+  
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/archived/musings.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/archived/musings.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/archived/musings.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,169 @@
+<?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>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <title>Musings</title>
+  </properties>
+
+  <body>
+    <section name="Musings">
+      <p>
+        The following is a list of things that are being contemplated
+        for Maven.
+      </p>
+      <ol>
+        <li>
+          Figure out how to specify that aspects are required. I would like
+          to be able to make a huge reactor that the aspectj team can use to watch
+          the development of the AspectJ compiler.
+        </li>
+        <li>
+          The integration of Quilt.
+          David Peugh's is working on this and Quilt is available
+          <a href="http://quilt.sourceforge.net/">here</a>.
+        </li>
+        <li>
+          Javadoc parsing has been added to the parser in Maven and it would
+          be awesome to produce a javadoc indexing tool to help make it
+          easy to search through a lot of Javadocs. David Flanagan has a
+          tool called Jude which has been at version 0.9 for the last three
+          years. It is very functional and uses an Antlr parser so maybe he
+          would like to donate the code to Maven where it can be further
+          developed.
+        </li>
+        <li>
+          Find all unreferenced files in a project so that developers know
+          where the dead code is.
+        </li>
+       <li>
+          When doing large builds consult .cvspass in order to find overriding
+          values. at least make this the default. We want it to be easy for
+          people to use existing configurations where possible. In the same
+          vein use the configuration mechanism for any of the SCM systems
+          eventually.
+       </li>
+       <li>
+         The use of profiles for testing like we have in the tdk and torque.
+         How they can be made to work easily for developers working in
+         different environments. We also want to be able use multiple
+         profiles for testing so that a single developer can test
+         several scenarios. Also, if you have a testing machine for, say,
+         Turbine the profiles could get very sophisticated.
+         You may want to test multiple servlet containers using multiple
+         databases and you just want to cycle through the whole slew
+         of profiles looking for problems.
+       </li>
+       <li>
+         We need an easy way to access information from the project descriptor
+         and we can't assume that the source of the information is an XML
+         file. We should access the object model directly. We would like to
+         be able to publish a site if the build is being controlled from
+         a database. So we might want to revisit the the way the DVSL works
+         and creates the documents from the object model and not the XML
+         file directly. We started out with the storage of the model in XML
+         form because it's easy but we don't want to box ourselves in.
+         Maven will be used as a prototypical Turbine 3 application that
+         is controlled at the application model level and we're going to
+         use OJB to store the project object model in various places using
+         the various persistence brokers available in OJB.
+
+         One simple example is being able to reuse the description from the
+         project descriptor in the documentation. The description, which would
+         be available as $project.description in the velocity templates, could
+         be the concise first paragraph that could be used as the opening
+         paragraph on the index page and in any massive indices the description
+         can be used and it will be consistent in many different locations.
+       </li>
+       <li>
+         We need to make a glossary of terms for a project and we need a notation
+         that would allow us to link terms anywhere in the documentation to the
+         the definition of those terms in the glossary. We have something in the Tambora
+         documentation that uses javascript so we could probably steal that, or alternatively a
+         non-javascript solution can be employed. We just need accurate linking to terms.
+         A glossary for terms has been started for turbine3 so we can use that as an
+         example to start from.
+       </li>
+       <li>
+         Integration with various issue tracking systems.
+       </li>
+       <li>
+         Integration with Eyebrowse.
+       </li>
+       <li>
+         Integration with these other tools obviously point to a plugin type
+         mechanism for adding different tools so we're going to work on a small
+         API based on the project object model so that tools can be easily
+         added to plug in new tools.
+       </li>
+       <li>
+         Distributing a dependency graph resource that will allow a project
+         to state its direct dependencies and allow the consulation of the stored
+         dependency graph to find the indirect (run-time) dependencies because
+         you cannot force a project to keep track of another project's dependencies
+         because it's just not manageable.
+       </li>
+       <li>
+         Look at the Novosoft UML tools to see if we can automatically
+         generate UML diagrams from the source. ArgoUML, I believe, is using Novosoft
+         tools to reverse engineer a project to produce UML diagrams.
+       </li>
+       <li>
+         How to get the number of subscribers to the various mailing lists. So we need some
+         sort of adapter to get at various systems like mailman or ezmlm.
+       </li>
+       <li>
+         Need to get at access to the distributions that are made and building
+         reports based on the information.
+       </li>
+       <li>
+         A Java graphing package so that we can implement some of Tufte's
+         ideas in graphical representation of large data sets.  JGraph will
+         produce SVG. SVG can be viewed directly in many browsers (either with
+         a plugin, or built in with recent versions of IE and Mozilla). Batik
+         can be used to rasterize SVG for other targets (GIF and PNG for other
+         browsers, PDF for printed materials).
+       </li>
+       <li>
+         A common format for project usecases. Scarab has made a start here so that
+         would be good to integrate.
+       </li>
+       <li>
+         A common format for a project roadmap. Take a look at some formats
+         provided by the Unified Software Development Process.
+       </li>
+       <li>
+         How to easily link to references. The same mechanism that is used to
+         link entries in the glossary can be used.
+       </li>
+       <li>
+         Automate the archiving of the mail to mail-archive.com or
+         at least provide instructions on what to do.
+       </li>
+       <li>
+         Standard JavaCC pattern. Maven, Lucene, Jython all need something
+         like this and now that JavaCC is OSS it will be even easier!
+       </li>
+     </ol>
+   </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/archived/references.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/archived/references.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/archived/references.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <title>References</title>
+  </properties>
+
+  <body>
+
+    <section name="References"/>
+
+    <references>
+
+      <reference>
+        <id>[Alexander, Notes]</id>
+        <author>Alexander, Christopher</author>
+        <title>Notes on the Synthesis of Form</title>
+        <location>London</location>
+        <publisher>Oxford University Press</publisher>
+        <date>1964</date>
+      </reference>
+
+      <reference>
+        <id>[Alexander, Timeless]</id>
+        <author>Alexander, Christopher</author>
+        <title>The Timeless Way of Building</title>
+        <location></location>
+        <publisher></publisher>
+        <date></date>
+      </reference>
+
+      <reference>
+        <id>[Alexander, Pattern]</id>
+        <author>Alexander, Christopher</author>
+        <title>A Pattern Language</title>
+        <location></location>
+        <publisher></publisher>
+        <date></date>
+      </reference>
+
+      <reference>
+        <id>[Alexander, Oregon]</id>
+        <author>Alexander, Christopher</author>
+        <title>The Oregon Experiment</title>
+        <location></location>
+        <publisher></publisher>
+        <date></date>
+      </reference>
+
+      <reference>
+        <id>[Beck, XP]</id>
+        <author>Beck, Kent</author>
+        <title>eXtreme Programming eXplained: Embrace Change</title>
+        <location>Reading, MA</location>
+        <publisher>Addison-Wellsely</publisher>
+        <date>1999</date>
+      </reference>
+
+      <reference>
+        <id>[Fowler, UML]</id>
+        <author>Fowler M., with K. Scott</author>
+        <title>UML Distilled: Applying the Standard Object Modeling Language</title>
+        <location>Reading, MA</location>
+        <publisher>Addison-Wellsely</publisher>
+        <date>1997</date>
+      </reference>
+
+      <reference>
+        <id>[Gof]</id>
+        <author>Gamma, E., R. Helm, R. Johnson, and J. Vlissides</author>
+        <title>Design Patterns: Elements of Resuable Object Oriented Software</title>
+        <location>Reading, MA</location>
+        <publisher>Addison-Wellsely</publisher>
+        <date>1995</date>
+      </reference>
+
+      <reference>
+        <id>[Royce, 1998]</id>
+        <author>Royce, Walker</author>
+        <title>Software Project Management</title>
+        <location>Reading, MA</location>
+        <publisher>Addison-Wellsely</publisher>
+        <date>1998</date>
+      </reference>
+
+       <reference>
+        <id>[]</id>
+        <author></author>
+        <title>Unified Software Development Process</title>
+        <location>Reading, MA</location>
+        <publisher>Addison-Wellsely</publisher>
+        <date></date>
+      </reference>
+
+       <reference>
+        <id>[Tufte, VDQI]</id>
+        <author>Tufte, Edward R.</author>
+        <title>The Visual Display of Quantitative Information</title>
+        <location>Cheshire, CT</location>
+        <publisher>Graphics Press</publisher>
+        <date></date>
+      </reference>
+
+    </references>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/archived/roadmap.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/archived/roadmap.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/archived/roadmap.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,221 @@
+<?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 Road Map</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+
+  <section name="Road Map">
+    <p>
+      Many people often ask "Where is Maven going?" and this documents tries
+      to answer that question. This document will be of interest to anyone who
+      uses Maven but is primarily directed at those developers who want to
+      get more involved in Maven's development. There is a branch that has
+      been checked in and for the sake of brevity will be referred to from
+      here on as the Road Map Branch or RMB.
+    </p>
+    
+    <subsection name="Creating a coherent model for Maven">
+      <p>
+        The MavenSession class has moved back to the name Maven. I have
+        tried to move any and all code that would be of use when running Maven
+        in any environment from the App class into the Maven class. The App
+        class is now a very thin class whose only real purpose is to allow access
+        to the Maven model via the command line.
+      </p>
+      
+      <p>
+        Currently in the RMB any information that is required by the model is
+        passed in with a simple Map. This map contains options like the online
+        mode, debugging mode and things of that nature. The initial POM is
+        also passed into the model in a neutral form. Currently passing in
+        a file is supported but we should be able to pass in the initial
+        POM as a Reader, InputStream, File, URL or String.
+      </p>
+      
+      <p>
+        The use-cases currently driving the model are: the use of Maven
+        itself from the CLI, the use of Maven as a component in Continuum and
+        the use of Maven inside an IDE. More work needs to be done with
+        ClassWorlds so that the initial ClassWorld can be booted into
+        existence without the use the the Launcher class. I'm working
+        on an Embeddor class which should allow the booting of the initial
+        ClassWorld for the three above mentioned use-cases. The primary use
+        case to satisfy at the moment is the CLI so I simply altered the
+        constructor of the App class to accept a ClassWorld as a parameter.
+        ClassWorlds will look for this special constructor as a conduit 
+        for passing the booted ClassWorld to the running application.
+      </p>
+      
+      <p>
+        To help with some refactoring of Maven's model I have created an
+        interface for the model so hopefully this can be the place where
+        we can agree on Maven's contract and work from there to flesh
+        out the refactoring.
+      </p>
+      
+      <p>
+        In the RMB I've tried to move all the brains into the Maven class
+        which lead us into the next subsection.
+      </p>
+      
+    </subsection>
+    
+    <subsection name="Maven as an Avalon application">
+      <p>
+        The main idea behind trying to isolate the Model of Maven into the
+        single class is part of an attempt to make Maven an Avalon component.
+        Eventually I would like all the distinct portions of Maven to be
+        Avalon components that can be run under Plexus. Turning the code
+        in the RMB into Avalon components will definitely allow developers
+        to easily experiment with new implementations safely.
+      </p>
+    </subsection>
+
+    <subsection name="Separate dependency resolution code">
+      <p>
+        It's seems that Maven has spawned a raft of efforts to produce small
+        libraries to deal with the downloading of dependencies. I feel that
+        Maven still leads the way in this effort by dealing not only with JAR
+        dependencies but any project artifact that can be a dependency. This
+        code should be separated into a simple set of beans. From there we
+        can wrap it in component logic for use inside Maven and others can
+        use the code as they wish. One of our mandates now is to encourage
+        other projects to be involved in Maven and this is probably the
+        biggest way we can encourage collaboration. Much work has gone into
+        our dependency resolution package. That coupled with the work in Werkz
+        and the commons-graph pacakge I think we can make a tool that will
+        satisfy any common requirements.
+      </p>
+    </subsection>
+
+    <subsection name="Plugin ClassLoader Separation">
+      <p>
+        In the RMB ClassWorlds has replaced the use of Forehead to provide
+        better control over classloading. Each plugin now has a separate
+        ClassRealm which inherits from the core ClassRealm. So each goal
+        is in a plugin so what happens now internally is that when each
+        goal is run the classloader flips over to the plugin classloader
+        that corresponds to the goal being executed.
+      </p>
+    </subsection>
+
+    <subsection name="Plugin dependencies">
+      <p>
+        The way plugin dependencies are stated needs to become an explicit.
+        Currently if a plugin needs another plugin then a weird lookup occurs
+        where the dynatag namespace is used to find the plugin which is just
+        messy and causing problems. All of the plugin dependencies need to
+        change to something like the following:
+      </p>
+      
+      <source><![CDATA[
+      
+      <dependency>
+        <groupId>maven</groupId>
+        <artifactId>maven-xdoc-plugin</artifactId>
+        <type>maven-plugin</type>
+        <version>1.3</version>
+      </dependency>
+      
+      ]]></source>
+      
+      <p>
+        This will eliminate a great deal of nonsense from the plugin
+        manager. With the explicit information we can actually make decent
+        graph instead of the jumble of lookups currently used.
+      </p>
+      
+    </subsection>
+
+    <subsection name="Fully pluggable artifacts and artifact factory configuration">
+      <p>
+        Right now the use of different artifacts is possible but is very
+        limited. I believe what Michal has started is probably the best way
+        I've seen to handle this stuff and will allow any sort of
+        flexibility which will actually be required before we can do the
+        explicit plugin dependency declarations outlined in the section
+        above.
+      </p>
+    </subsection>
+
+
+    <subsection name="Removing Ant as a core dependency">
+      <p>
+        I would like to remove Ant as a core dependency as it's become more
+        a pain in the ass than anything. The coupling of Tasks to the
+        AntClassLoader and Project have become a real nuisance. Having Tasks
+        loaded into separate ClassLoaders just doesn't seem to work and Ant
+        was not designed for long-lived processes.
+      </p>
+      <p>
+        The plugins can definitely specify Ant as a dependency and remove the
+        implicit use of Ant. But there are many maven.xml files that use
+        Ant semantics and we can't cut off people at the knees. We need
+        separate mechanisms for dealing with Plugins and arbitrary Jelly
+        scripts. Currently they are dealt with in the same fashion which
+        is a problem.
+      </p>
+      
+      <p>
+        In the RBM I have replaced several Ant classes and they are loaded
+        before their actual Ant counterparts. The primary problem was with
+        the AntClassLoader. I stripped the AntClassLoader down to a shell
+        and it delegates entirely to the Maven model to resolve classes.
+        The Model uses ClassWorlds now.
+      </p>
+      
+    </subsection>
+
+    <subsection name="Pure Java API">
+      <p>
+        I would like to create a pure Java API for plugins. I have nothing
+        against Jelly but I am not entirely sure I want it as the primary path of
+        extension. I don't want to change anything about the way Jelly
+        plugins work. They should just continue to work they always have but
+        I would like to add a pure Java API so I can write plugins purely in
+        Java with no Jelly interaction. So people could easily create their
+        own plugin mechanisms for their own scripting languages or BSF for
+        example. I'm not overly fond of BSF but I think something like BSF
+        would make for a better plugin mechanism than Jelly.
+      </p>
+    </subsection>
+
+    <subsection name="Maven TLP site">
+      <p>
+        I'm working with Brian Behlendorf to setup the infrastructure for
+        maven.apache.org. None of the infrastructure team seems to be active
+        in processing any requests as Brian is the only one who seems to do
+        anything w.r.t to setting up new projects so we'll wait for him to
+        have some time and he's a _very_ busy fellow. I can take care of 
+        the CVS repositories, but the DNS and groups on the Apache machines
+        can only be dealt with by Brian.
+      </p>
+    </subsection>
+
+  </section>
+
+</body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/archived/tasks.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/archived/tasks.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/archived/tasks.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,122 @@
+<?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>Tasks</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+    <section name="Tasks">
+      <subsection name="Beyond 1.0">
+        <p>
+          <ul>
+            <li>
+              Plugins must have tests. There are a couple of plugins that are busted
+              because it's not possible to test them by hand. We need to
+              create a mechanism for test them for real reliablility. Velocity
+              was removed from the Maven core and as a result many Plugins are
+              now busted. Users will need HEAD for some plugins to work which
+              is not good.
+            </li>
+            <li>
+              Implement arbitrary artifact type handling. Michal Maczka (Mmaczka at cqs.ch)
+              had a very good solution but we didn't get around to getting it
+              in. Sorry about that Michal, please be patient.
+            </li>
+            <li>
+              Switch to classworlds to allow real isolation in plugins and real
+              embedding of Maven in client applications. This will all revolve around
+              allowing a ClassWorld to be initialized with MavenSession. We would truly
+              like to decouple MavenSession from the CLI front-end. Possibly using a
+              system property to pass in a set of JARs to populate the initial ClassWorld.
+              From there we can create child ClassWorlds for the plugins to execute in.
+            </li>
+            <li>
+              Add the use of checksums in the verification process. Throw an
+              ArtifactCorruptionException when the artifact cannot be
+              verified against the checksum. This mechanism has been implmented, but
+              we were having problems getting the checksums up to ibiblio reliably. We need
+              to thoroughly test the Jelly script that we are using for deployment and we
+              could probably also do with the shell scripts that can be run periodically
+              on repositories to make sure the checksums are valid.
+            </li>
+            <li>
+              Release vs HEAD website (so the inconsistencies we have in our
+              current situation can be alleviated. This is a real problem that needs
+              to be solved. We simply need a way to flag an incremental HEAD site
+              update as opposed to a release update.
+            </li>
+            <li>
+              Addition of POM entries to allow anonymous checkout
+            </li>
+            <li>
+              Roadmap document. (jvz)
+            </li>
+            <li>
+              Write proposal for globally distributed JAR repository and distribution
+              repository. There are definite things to be learned from the Perl folks.(jvz)
+            </li>
+            <li>
+              Need to restructure the mailing lists and object model so
+              that we can easily select the dev mailing list for continuous
+              integration problems. discovered when trying to apply the
+              nag feature of gump.
+            </li>
+            <li>
+              Status document (weekly report type thing).
+            </li>
+            <li>
+              Add maven:plugin-list target to list all known plugins from
+              remote repos. Each repo may optionally provide a plugins.list
+              file similar to the jars.list. A plugin is packaged as a jar file.
+            </li>
+            <li>
+              How to generally deal with example code and where it belongs
+              in the source tree and how it should be package in the
+              distribution.
+            </li>
+            <li>
+              Release generated page based on the distribution directory and some
+              standard text. just looking at things that can be culled from
+              the turbine site.
+            </li>
+            <li>
+              Same with the 'how do i contribute' blurb at the bottom of the t2
+              pages. those can be generated.
+            </li>
+            <li>
+              A little report displaying the use of dev JARs as opposed to
+              using released versions of products. Encourage projects to
+              try and use released versions of JARs.
+            </li>
+            <li>
+              Need a way to transform a POM across multiple versions
+              of Maven. For any number of reasons a project may decide to
+              hold back on upgrading Maven immediately and we need to make
+              sure that users can move safely upgrade across N versions.
+            </li>
+          </ul>
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/changes.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/changes.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/changes.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,142 @@
+<?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.
+ */
+ -->
+
+<document>
+  <properties>
+    <title>Changes</title>
+    <author email="vmassol at apache.org">Vincent Massol</author>
+  </properties>
+  <body>
+    <release version="1.0.2" date="2004-12-07">
+      <action dev="brett" type="fix" issue="MAVEN-1511">Allow
+        <code>SNAPSHOT</code>as a version override
+      </action>
+      <action dev="brett" type="fix" issue="MAVEN-1428">Prevent "Response Content Length not known" warning</action>
+      <action dev="brett" type="fix" issue="MAVEN-1502">Fail on 403 response to dependency download (and also anything &gt;= 400)</action>
+      <action dev="brett" type="fix" issue="MAVEN-1507">Should now work on IBM JDK 1.3</action>
+      <action dev="brett" type="fix" issue="MAVEN-1518" due-to="Hardy Ferentschik">Don't download a dependency if there is a JAR override for it</action>
+      <action dev="brett" type="fix" issue="MAVEN-1501">Ensure that default properties are correctly overidden when inherited from a parent</action>
+    </release>
+    <release version="1.0.1" date="2004-11-10">
+      <action dev="brett" type="fix">Ensure plugin:install correctly refreshes the cache when the plugin with the same version was previously installed</action>
+      <action dev="brett" type="fix" issue="MAVEN-1471">Move dependency verification until the point where the project is in a consistent state, so that the reactor succeeds when ignoreFailures is true</action>
+      <action dev="brett" type="fix">Upgrade to Ant Tag Library 1.0 to avoid an error when the ant project is in a certain state</action>
+      <action dev="brett" type="fix" issue="MAVEN-1427">Improve plugin dependency handling by removing old plugins before using a different version</action>
+      <action dev="brett" type="fix" issue="MAVEN-1422" due-to="Eric Lapierre">Fix inheritence inside the reactor over multiple levels</action>
+      <action dev="brett" type="fix" issue="MAVEN-1405" due-to="Philipp Kohl">Use preemptive authentication when there are some credentials, so the first 403 is really forbidden.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1457">Don't display the password on the console when a remote repository uses basic authentication.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1469">Give an error message if the parent pom is not valid</action>
+      <action dev="brett" type="fix" issue="MAVEN-1439" due-to="Shinobu Kawai">Allow the property
+        <code>maven.mode.online</code>to work, but be overridden by the
+        <code>-o</code>command line option
+      </action>
+      <action dev="brett" type="update">No longer default the maven.repo.central[.directory] properties to upload to ibiblio as access is restricted</action>
+      <action dev="brett" type="fix" issue="MAVEN-1477">Document mirrors of the Maven repository at ibiblio</action>
+      <action dev="brett" type="fix" issue="MAVEN-1355" due-to="Miguel Griffa">Document how to build Maven using Maven instead of bootstrapping</action>
+      <action dev="brett" type="fix" issue="MAVEN-1437">Specifically target the 1.3 JVM</action>
+      <action dev="brett" type="fix" issue="MAVEN-1363">Goals in maven:reactor and maven:maven are trimmed</action>
+      <action dev="brett" type="fix" issue="MAVEN-1424" due-to="Felipe Leme">maven -p now fails if file does not exist.</action>
+      <action dev="brett" type="add" issue="MAVEN-573">Remove junitdoclet test that causes problems with the bootstrap on non-US character sets</action>
+      <action dev="brett" type="add" issue="MAVEN-1475" due-to="Julien Kirch">Update FAQ to discuss creation of plugins to share build script code.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1406">More fixes to the shell script for paths with spaces in them</action>
+      <action dev="brett" type="fix" issue="MAVEN-109">Cleaned up exits in App, verified that all error paths return an error code.</action>
+      <action dev="brett" type="fix" issue="MAVEN-581">Improve error message for missing overridden dependencies</action>
+      <action dev="brett" type="fix" issue="MAVEN-880">Updated documentation for project descriptor.</action>
+      <action dev="brett" type="add" issue="MAVEN-1139">Add a global shell configuration file for unix, /etc/mavenrc</action>
+      <action dev="brett" type="fix" issue="MAVEN-1208">Make example POM in documentation validate according to strict XSD</action>
+      <action dev="brett" type="fix" issue="MAVEN-1358">Make touchstone test-defaults run no matter what the previous state.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1323">Don't execute preGoals for a goal that doesn't exist: return an error</action>
+      <action dev="brett" type="fix" issue="MAVEN-1335">Add reference to the project descriptor from the user guide.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1362">Change plugin variable used in touchstone test as it is commonly overwritted.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1373">Don't cause an exception when maven -u run on a directory with no project.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1383" due-to="Ben Walding">Exit with error code is JAVA_HOME not defined</action>
+      <action dev="brett" type="fix" issue="MAVEN-1387">Treat dependency with SNAPSHOT versions as a snapshot, even if the filename does not include it</action>
+      <action dev="brett" type="fix" issue="MAVEN-1431">Delete plugin cache directory before expanding to ensure it is clean, and so that after the extraction the timestamp is newer than the JAR file to avoid being repeatedly extracted.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1433">Show filename in error when Jelly can't parse XML</action>
+      <action dev="dion" type="add" issue="MAVEN-1382">Add license report to web site</action>
+      <action dev="evenisse" type="fix" issue="MAVEN-1454">Correct if-modified-since header handling on non-English languages, fixes SNAPSHOT download timing problems</action>
+    </release>
+    <release version="1.0" date="2004-07-13">
+      <action dev="brett" type="add">Bundle the Jelly XML tag library for build and for plugin's convenience</action>
+      <action dev="brett" type="fix" issue="MAVEN-1296" due-to="Eric Lapierre">Fix property inheritence under some circumstances</action>
+      <action dev="brett" type="add">Add different types of download progress meters.</action>
+      <action dev="brett" type="fix">&lt;maven:get/&gt; now initialises the plugin if it has not already been loaded, removing the need for dependency handles</action>
+      <action dev="brett" type="fix" issue="MAVEN-1188">Check last modified timestamp as well as conditional GET in case the server time is behind the local time</action>
+      <action dev="brett" type="fix" issue="MAVEN-1343">Bugfixes for new httpclient based downloading (incorrect timestamps)</action>
+      <action dev="brett" type="fix" issue="MAVEN-1353">Handle cross site redirects</action>
+      <action dev="brett" type="fix" issue="MAVEN-1290">Correct absolute paths with no drive designator on windows</action>
+      <action dev="brett" type="fix" issue="MAVEN-1341">Amend bootstrap to create directories that might not exist</action>
+      <action dev="brett" type="fix" issue="MAVEN-1344">If artifact is not a snapshot, don't continue checking for newer downloads once one is successful</action>
+    </release>
+    <release version="1.0-rc4" date="2004-06-28">
+      <action dev="brett" type="update">Set maven.plugin.user.dir to ${maven.home.local}/plugins by default, move maven.plugin.unpacked.dir to ${maven.home.local}/cache.</action>
+      <action dev="brett" type="update">Read local plugin jars from maven.plugin.user.dir instead of maven.plugin.unpacked.dir.</action>
+      <action dev="brett" type="update">Use commons-httpclient for http downloads from the repository.</action>
+      <action dev="brett" type="add" issue="MAVEN-1332" due-to="george wang">Support NTLM authentication on a remote repository.</action>
+      <action dev="evenisse" type="fix" issue="MAVEN-1320" due-to="Miguel Griffa">Sort all installed plugins.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1273" due-to="Andreas Peschka">Fix HTTP BASIC authentication for remote repos.</action>
+      <action dev="dion" type="fix" issue="MAVEN-1298">Repository element was broken for non-cvs connections</action>
+    </release>
+    <release version="1.0-rc3" date="2004-05-13">
+      <action dev="brett" type="add" issue="MAVEN-1255">Introduce a backwards compatibility option
+        <code>maven.property.inheritance</code>, which disables the functionality when set to false.
+      </action>
+      <action dev="brett" type="fix" issue="MAVEN-37">Parent project properties are now correctly loaded from extended project.xml files. This was implemented previously, but the properties were not being passed through to the final goal attainment context.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1275" due-to="Henning Schmiedehausen">Evaluate context variables before inserting them into the ant properties</action>
+      <action dev="brett" type="fix" issue="MAVEN-1223" due-to="joseph benavidez">Have system entities with relative paths in maven.xml and plugin scripts resolve relative to the correct location.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1265">Setup dependency path for non-classpath dependencies</action>
+      <action dev="brett" type="fix" issue="MAVEN-956">Fix install_repo.bat problems on Windows 98</action>
+      <action dev="brett" type="update" issue="MAVEN-1129" due-to="John Casey">Add a Base64 implementation to replace the sun.* internal version.</action>
+      <action dev="brett" type="update" issue="MAVEN-1129">Remove tools.jar from startup classpath so it will run on non-Sun JVMs such as Kaffe.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1219">Allow plugin installation and uninstallation from the plugin manager and the cache so that it can be done on the fly.</action>
+      <action dev="brett" type="update">Move maven jelly tags to maven-jelly-tags subproject</action>
+      <action dev="brett" type="update">Show extended information with --info: list of installed plugins (including versions), and ~/build.properties</action>
+      <action dev="brett" type="add">Show help on how to submit a bug report if Maven dies with an unexpected exception</action>
+      <action dev="evenisse" type="fix" issue="MAVEN-1226">Snapshot is now downloaded only if the remote version is more recent than local version.</action>
+      <action dev="brett" type="add">Add maven.remote.group to defaults.properties</action>
+      <action dev="brett" type="add">Add sort attribute to reactor tag.</action>
+      <action dev="brett" type="add" due-to="John Casey">Add collectOnly and collectionVar attributes to reactor tag.</action>
+      <action dev="brett" type="add">Improve maven -g output, and add -u and -P switches for additional usage help.</action>
+      <action dev="brett" type="fix" issue="MPAPPSERVER-6">Fix fatal exception running goals defined inside j:import'ed scripts.</action>
+      <action dev="brett" type="fix">Correctly report certain types of fatal exceptions inside of silently ignoring them.</action>
+      <action dev="brett" type="fix" issue="MAVEN-1227">use correct new lines in maven -g output</action>
+      <action dev="brett" type="fix" due-to="Shinsuke SUGAYA" issue="MAVEN-1050">Apply patch to use system encoding for project so that xdoc transformation of POM works on non-ISO8859-1 systems.</action>
+      <action dev="brett" type="fix" due-to="David Zeleznik" issue="MAVEN-558">Improve error handling of HttpUtils</action>
+    </release>
+    <release version="1.0RC2" date="2004-03-22">
+      <action dev="brett" type="fix">More than I can remember. Redesigned plugin manager internals to fix the memory leak in the reactor.</action>
+    </release>
+    <release version="1.0RC1" date="2003-09-30">
+      <action dev="dion" type="fix">Move maven.docs.* and maven.gen.docs to defaults.properties instead of xdoc plugin</action>
+      <action dev="jvanzyl" type="add">Added the new POM marshaller and unmarshaller based on the xpp3 xmlpull parser. This eliminates betwixt and friends from the POM reading and writing. The POM is used so often and rarely changes so the optimizations that are possible with are worth the effort of creating the xpp3 tools. This also allows fine grained control over the marshalling and unmarshalling processes. Betwixt doesn't handle Maps very well and we had to resort to some Digester chicanery to get properties to work correctly. Also using xpp3 allows us to eliminate a big set of dependencies including Xerces as xpp3 comes with a SAX Driver so we can also elimate pretty much all JAXP and XML parser nonsense.</action>
+      <action dev="vmassol" type="fix">Fixed dependency for ejb so that ejbs file have a jar extension. Fixes bug
+        <a href="http://jira.codehaus.org/secure/ViewIssue.jspa?key=MAVEN-196">MAVEN-196</a>.
+      </action>
+      <action dev="vmassol" type="add">Added support for filtering resources both for runtime and test resources. To use it, define a
+        <code>&lt;filtering&gt;true&lt;/filtering&gt;</code>tag inside any
+        <code>&lt;resource/&gt;</code>tag and add Ant filters by defining a pregoal on
+        <code>java:jar-resources</code>or
+        <code>test:test-resources</code>in your project's
+        <code>maven.xml</code>.
+      </action>
+      <action dev="vmassol" type="add">Lots of additions, bug fixes and updates but we were not counting at that time!</action>
+    </release>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/development/branches.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/development/branches.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/development/branches.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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://www.red-bean.com/cvsbook/">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' TODO 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://www.red-bean.com/cvsbook/">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.0.2/xdocs/development/deprecation.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/development/deprecation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/development/deprecation.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,150 @@
+<?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">
+<p>
+<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>
+
+</p>
+
+ </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>
+ 
+ <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>
+ </p>
+ </section>
+
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/development/distributions.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/development/distributions.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/development/distributions.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <title>Distributions</title>
+  </properties>
+
+  <body>
+    <section name="Distributions">
+      <p>
+      
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/development/release-process.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/development/release-process.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/development/release-process.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,107 @@
+<?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:
+  <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? -->
+
+  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.0.2/xdocs/development-process.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/development-process.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/development-process.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/xdocs/faq.fml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/faq.fml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/faq.fml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,492 @@
+<?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.
+ */
+ -->
+
+<faqs title="Frequently Asked Questions">
+
+  <part id="general">
+    <title>General</title>
+   
+    <faq id="what-is-maven">
+      <question>What is Maven?</question>
+      <answer>
+        Please see the <a href="objectives.html">Objectives</a> and
+        <a href="features.html">Features</a> documents.
+      </answer>
+    </faq>
+    
+    <faq id="where-get-help">
+      <question>Where do I get help on Maven?</question>
+      <answer>
+        <p>
+          This FAQ answers some frequent questions already, please read the
+          <a href="start/">Getting Started</a> for a quick start guide.
+        </p>
+        <p>
+          The <a href="reference/">Reference</a> section contain a comprehensive
+          user guide and documentation about the various plugins that exist for
+          maven.
+        </p>
+        <p>
+          If these resources 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, you'll probably find
+          a solution in the mailling list archive. Most of the maven developers 
+          are subscribed to the Maven User List.
+        </p>
+        <p>
+          Maven developers meet via IRC: <a href="irc://irc.codehaus.org#maven">irc.codehaus.org:6667</a>,
+          channel <tt>#maven</tt>
+          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.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="maven-definition">
+      <question>What does Maven mean?</question>
+      <answer>A maven (yi.=meyvn) is an experienced or knowledgeable person, such as an expert or freak.</answer>
+    </faq>
+  </part>
+  
+  <part id="using">
+    <title>Using Maven</title>
+
+    <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="reference/plugins/jar/index.html">jar plugin</a>. You can find a list of
+          plugins and there documentation <a href="reference/plugins/index.html">here</a>.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="using-entities">
+      <question>What's the problem with entities in project.xml?</question>
+      <answer>
+        <p>
+          As of Maven 1.1, external entities will not be supported by default in
+          project.xml, and their use is discouraged in Maven 1.0.x as well.
+        </p>
+        <p>
+          There are several reasons for this, but the main reason is that
+          the content of project.xml 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 pom 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. There is unfortunately no other better
+          solutions in the current version of Maven other than copying the
+          dependencies. See <a href="#transitive-dependencies">transitive
+          dependencies</a> for more information.
+        </p>
+        <p>
+          Note: special character entities will always be supported and should
+          not have any current issues.
+        </p>
+      </answer>
+    </faq>
+    
+    <faq id="using-xdoclet">
+      <question>How do I use Maven with xdoclet?</question>
+      <answer>
+        The xdoclet plugin is provided by the xdoclet developers. All questions
+        about it should be directed to the xdoclet mailing lists.
+      </answer>
+    </faq>
+
+    <faq id="speeding-maven">
+      <question>Maven takes a long time to load. Is there anyway to speed things ?</question>
+      <answer>
+        You can use the
+        <a href="reference/plugins/console/index.html">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.
+      </answer>
+    </faq>
+
+    <faq id="ibiblio-repository">
+      <question>Why is the Maven repository on Ibiblio and not at Apache?</question>
+      <answer>
+        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>.
+      </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>
+        Read <a href="repository-upload.html">Uploading to Ibiblio Instructions</a>.
+      </answer>
+    </faq>
+
+    <faq id="ibiblio-mirrors">
+      <question>Are there any mirrors for the Maven repository at ibiblio?</question>
+      <answer>
+        Yes, there are at least the following:
+        <ul>
+          <li>http://www.ibiblio.org/maven/</li>
+          <li>http://planetmirror.com/pub/maven/</li>
+          <li>http://mirrors.sunsite.dk/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="sharing-plugins">
+      <question>How do I share my Maven plugin with others?</question>
+      <answer>
+        Read <a href="reference/developers/sharing-plugins.html">Sharing Your Plugins</a>.
+      </answer>
+    </faq>
+
+    <faq id="ignoring-broken-tests">
+      <question>How do I make my build complete even with broken tests?</question>
+      <answer>
+        See the <a href="./reference/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>
+      </answer>
+    </faq>
+
+    <faq id="find-junit-messages">
+      <question>Where does the output from my JUnit tests go?</question>
+      <answer>
+        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>.
+      </answer>
+    </faq>
+
+    <faq id="multiple-source-directories">
+      <question>How do I provide multiple source directories in my project.xml?</question>
+      <answer>
+        <p>You can't. However, if you really need it, you can use a snippet in maven.xml:</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="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://nagoya.apache.org/eyebrowse/ReadMsg?listName=users@maven.apache.org&amp;msgId=812534">this 
+          thread</a>.
+        </p>
+      </answer>
+    </faq>
+
+    <faq id="DownloadPlugin">
+      <question>How do I download a new plugin?</question>
+      <answer>
+        <source>maven -DartifactId=artifactID -DgroupId=GROUPID -Dversion=VERSION plugin:download</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>
+          Documentation on how to write plugins is available
+          <a href="reference/developers/developer-guide.html#Plugins">here</a>.
+        </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="transitive-dependencies">
+      <question>Do I need to specify all the dependencies in the POM?</question>
+      <answer>
+        The short answer is YES. Maven 2 will have a transitive dependency discovery mechanism
+        that will avoid this.
+      </answer>
+    </faq>
+  </part>
+
+  <part id="building">
+    <title>Building Maven</title>
+
+    <faq id="how-to-build">
+      <question>How do I build Maven?</question>
+      <answer>
+        Please see the
+        <a href="./start/bootstrap.html">Bootstrapping</a>
+        document.
+      </answer>
+    </faq>
+
+    <faq id="build-firewall">
+      <question>How do I build Maven from behind a firewall?</question>
+      <answer>
+        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
+        <i>maven.proxy.host</i> and
+        <i>maven.proxy.port</i> properties.
+        See the
+        <a href="./reference/user-guide.html#Using Proxies">User Guide</a> for more details.
+      </answer>
+    </faq>
+    
+  </part>
+
+  <part id="jelly">
+    <title>Jelly Usage</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="/reference/maven-jelly-tags/tags.html#maven:get">maven:get</a> and 
+        <a href="/reference/maven-jelly-tags/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>
+  </part>
+    
+  <part id="troubleshooting">
+    <title>Troubleshooting Maven</title>
+    
+    <faq id="unit-test-14">
+      <question>Why do the unit tests fail under Java 1.4?</question>
+      <answer>
+        It is possible that the XML parser included with Ant is
+        interfering with the XML parser included in Java 1.4. Please set
+        the <code>${maven.junit.fork}</code>
+        <a href="reference/plugins/test/properties.html">property</a> to
+        <code>yes</code>.
+      </answer>
+    </faq>
+    
+    <faq id="changelog-no-local-copy">
+      <question>Why does change log ask me to check out the source code?</question>
+      <answer>
+        When you run the cvs change log report in maven, you may see an
+        error occasionally, such as:
+        <p>
+          <code>cvs [log aborted]: there is no version here; do 'cvs checkout' first
+            <br/> ChangeLog found: 5 entries
+          </code>
+        </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.
+      </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="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:
+        </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="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.
+          <a href="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-20030211.141339.jar">This</a>
+          is the version of Jelly that is distributed with Maven 1.0-rc2.
+          If you align your versions of Jelly you should be able to generate
+          your site. We hope to alleviate these problems with real ClassLoader
+          isolation using Classworlds.
+        </p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="recent-changes">
+    <title>Recent Changes (Migrating from older versions of Maven)</title>
+
+    <faq id="property-inheritance">
+      <question>Why are strange property values appearing from other parts of my project?</question>
+      <answer>
+        <p>Early in RC3, the bug that caused project.properties file inheritance to fail was fixed. This means
+        that if you extend another project.xml file, you also inherit the project.properties and build.properties
+        files from the same directory.</p>
+        <p>While this was a highly demanded fix, some builds may have come to depend on it not working (including
+        the Maven build itself!). This is usually due to having a master build project that also serves as a base
+        project extended by a set of subprojects, and wanting the properties to apply to the master, but not to the
+        subprojects.</p>
+        <p>We recommend that you separate these concerns by having both a master build project and a parent project
+        for extension (see the maven-plugins CVS tree for an example).</p>
+        <p>However, should you need to maintain your old structure, and you are encountering these problems, you can
+        add the following property to stop parents from being inherited:</p>
+        <source>maven.property.inheritance=false</source>
+      </answer>
+    </faq>
+
+    <faq id="classloader-property">
+      <question>Why shouldn't I use the dependency classloader override property?</question>
+      <answer>
+        <p>
+          Because it isn't needed. <code>root.maven</code> is equivalent to the project classloader.
+          While <code>root</code> is the Ant classloader, you should not load tasks into it 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 maven.xml 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="where-is-maven-log">
+      <question>What happened to maven.log?</question>
+      <answer>
+        <p>
+          It has been removed from <code>log4j.properties</code>. It was always created in the directory Maven was run
+          from, and only repeated what was on the console in most cases, which was quite annoying. You can now get all
+          the debugging information you need and more by using the -X flag to maven.
+        </p>
+        <p>
+          Of course, 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>
+  </part>
+</faqs>
+   

Added: branches/maven1/upstream/1.0.2/xdocs/features.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/features.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/features.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <title>Features</title>
+  </properties>
+
+  <body>
+    <section name="Features">
+      <p>
+      <ul>
+        <li>
+          The project object model (POM) is the basis of how Maven works.
+          Development and management of your project is controlled from
+          the the project model. Currently you can store your project
+          object model in an XML file, but we are also working on RDBMS
+          storage using <a href="http://jakarta.apache.org/ojb/">
+          ObjectBridge</a>. Here's what a Maven POM
+          looks like in <a href="reference/project-descriptor.html">XML</a> form.
+        </li>
+
+        <li>
+          A single set of methods are used to build any number of projects
+          that you are managing. No more keeping track of countless build
+          systems. As improvements are made to the Maven build system
+          all Maven users benefit!
+        </li>
+
+        <li>
+          Integration with Gump. For those who are not familiar with Gump it
+          is a tool used at Jakarta 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.
+        </li>
+
+        <li>
+          Site publication based on the POM. Once the POM is accurate
+          your developers can easily publish the project's content which
+          includes custom documentation plus Maven's extensive documentation
+          set based on your project's sources. Mainly Maven provides the
+          following:
+          <ul>
+            <li>Change log document created directly from repository information.</li>
+            <li>Cross referenced sources</li>
+            <li>Source metrics</li>
+            <li>Mailing lists</li>
+            <li>Developer list</li>
+            <li>Dependency list</li>
+            <li>Unit test reports including coverage</li>
+            <li>Article Collection</li>
+            <li>Software Development References</li>
+            <li>Software Development Process Documentation</li>
+          </ul>
+          and more reports using the different plugins.
+        </li>
+
+        <li>
+          Distribution publication based on the POM. Once the POM is
+          setup accurately you can easily publish distributions safely
+          knowing that the distributions being made match exactly what
+          has been tagged in your repository.
+        </li>
+
+        <li>
+          Maven encourages the use of a central repository of JARs. 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.
+        </li>
+
+        <li>
+          Directory layout guidelines. Maven comes with documentation 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.
+        </li>
+
+      </ul>
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/getting-started.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/getting-started.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/getting-started.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,112 @@
+<?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>Getting Started with Maven</title>
+    <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="Getting Started with Maven">
+      <p>
+        This document (as well as the others in this section) provide
+        an introduction to Maven and how to use it within a project.
+        For those that have already skimmed the documentation on this
+        site, you may be asking yourself, what *exactly* does it mean to
+        use Maven?  That question will have different answers over time
+        as Maven <a href="objectives.html">evolves</a>, but these documents
+        attempt to illustrate (using the Turbine projects as an example)
+        how one might install, integrate and leverage the power of Maven
+        in a project.
+      </p>
+
+      <p>
+        To avoid overwhelming you (user, developer, or contributor) with
+        unnecessary information, this document attempts to provide
+        references to various documents depending upon your Maven
+        interests.  It is meant to provide you with a starting point
+        that can be effectively used to get to the information you need
+        without going through all of the documentation on the site,
+        which might be a little overwhelming.
+      </p>
+
+      <subsection name="Overview of the Getting Started Documentation">
+        <table>
+          <tr><th>Document</th><th>Description</th></tr>
+          <tr><td><a href="start/download.html">Download</a></td>
+            <td>
+              Before you can start using Maven in any form, you'll have
+              to download the Maven distribution to your system (unless
+              you plan on building Maven from source).  This document
+              provides links to the various distributions available.
+            </td>
+          </tr>
+          <tr><td><a href="start/install.html">Install</a></td>
+            <td>
+              After you have downloaded a distribution, you'll need to
+              install this on your system before you can start using
+              Maven (unless you plan on building Maven from source).
+              This document provides step-by-step instructions on the
+              installation process.
+            </td>
+          </tr>
+          <tr><td><a href="start/integrate.html">Integrate</a></td>
+            <td>
+              If you are interested in integrating Maven with your
+              project, this document will provide such information.  The
+              document details the process of creating a Maven project
+              descriptor for your project.  This document provides
+              example build files and project descriptors.
+            </td>
+          </tr>
+          <tr><td><a href="start/use.html">Use</a></td>
+            <td>
+              For those of you that have been referred to this document
+              because you are trying to build a Maven-enabled project
+              (i.e. one of the Turbine projects), this document will
+              provide you with all of the necessary information required
+              to build any Maven-enabled project.
+            </td>
+          </tr>
+          <tr><td><a href="start/bootstrap.html">Build</a></td>
+            <td>
+              For the adventurous (its actually quite easy), you can
+              build Maven from source instead of downloading and
+              installing via an installer.  As a result of building
+              Maven directly, it will also be installed on your system.
+              This document provides you with step by step instructions.
+            </td>
+          </tr>
+          <tr><td><a href="start/anakia.html">Anakia Users</a></td>
+            <td>
+              If you currently use Anakia to generate documentation, you
+              can easily give your site a face-lift with Maven!  Maven
+              can generate an entire site from your Anakia documentation
+              for you!  This is a great opportunity to start integrating
+              Maven into your project.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+ </body>
+</document>

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


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

Added: branches/maven1/upstream/1.0.2/xdocs/images/apache-maven.png
===================================================================
(Binary files differ)


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

Added: branches/maven1/upstream/1.0.2/xdocs/images/asf_logo_wide_clear.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/images/asf_logo_wide_clear.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/images/jakarta-logo-blue.gif
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/images/jakarta-logo-blue.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/images/jakarta-logo-blue.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/images/jakarta-logo-blue.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/images/maven.gif
===================================================================
(Binary files differ)


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

Added: branches/maven1/upstream/1.0.2/xdocs/images/maven.jpg
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/images/maven.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/images/maven.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/images/maven.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>Maven</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+
+  <section name="Maven">
+    <subsection name="Get Maven">
+      <p>Maven 1.0.2: <a href="start/download.html">Download</a> |
+        <a href="start/install.html">Installation Instructions</a> |
+        <a href="start/release-notes-1.0.2.html">Release Notes</a>
+      </p>
+    </subsection>
+
+    <subsection name="About Maven">
+    <p>
+      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, source
+      cross-references and a countless number of reports are all controlled by 
+      your POM. Look here to see the
+      full list of Maven's <a href="features.html">features</a>.
+    </p>
+    <p>
+      For more information on getting started with Maven, see the
+      <a href="./start/index.html">Getting Started</a> guide.
+    </p>
+    <p>
+      Maven has many <a href="objectives.html">objectives</a>, but in a 
+      nutshell Maven aims to make the developer's life easier by providing a 
+      well defined <a href="reference/project-descriptor.html">project</a> 
+      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.
+    </p>
+  </subsection>
+  </section>
+
+  <section name="The Big Picture">
+    <p>
+      The intent of Maven is to make intra-project development highly manageable
+      in the hopes of providing more time for cross-project development. You
+      might call it cross-project pollination or the sharing of project
+      development knowledge, this is what Maven attempts to encourage.
+   </p>
+  </section>
+
+</body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/misc/articles.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/misc/articles.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/misc/articles.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,121 @@
+<?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="jason at zenplex.com">Jason van Zyl</author>
+    <title>Articles</title>
+  </properties>
+
+  <body>
+    <section name="Maven in the press">
+      <ul>
+        <li>
+          <a href="http://www.devx.com/java/Article/17204">
+          Apache Maven Simplifies the Java Build Process?Even More Than Ant</a>
+        </li>
+        <li>
+          <a href="http://www.pivolis.com/pdf/J2EE_projects_Maven_V1.1.pdf">
+            Building J2EE applications with Maven (Slides from TheServerSide 
+            Symposium)
+          </a>. 
+        </li>
+        <li>
+          <a href="http://www-106.ibm.com/developerworks/java/library/j-maven/">
+            Project management: Maven makes it easy
+          </a>
+        </li>
+        <li>
+          <a href="http://www.javaworld.com/javaworld/jw-10-2002/jw-1011-maven.html">
+            Maven ties together tools for better code management
+          </a>
+        </li>
+        <li>
+          <a href="http://radio.weblogs.com/0116794/2003/01/03.html">
+            Weblog: Morgan Delagrange
+          </a>
+        </li>
+        <li>
+          <a href="http://www.javausergroup.at/events/maven.pdf">
+            The Stairway to Maven by Siegfried G?SCHL
+          </a>
+        </li>
+        <li>
+          <a href="http://www.onjava.com/pub/a/onjava/2003/10/22/maven.html">
+            Developing with Maven by Rob Herbst
+          </a>
+        </li>
+        <li>
+          <a href="http://www.jdocentral.com/JDO_Articles_20031117.html">
+            JDO Meets Maven by Andy Jefferson
+          </a>
+        </li>
+        <li>
+          <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>
+        </li>
+        <li>
+          <a href="http://wiki.astrogrid.org/bin/view/Astrogrid/MavenFAQ">
+            Some Maven FAQs on AstroGrid
+          </a>
+        </li>
+        <li>
+          <a href="http://wiki.astrogrid.org/bin/view/Astrogrid/UsefulMavenNotes">
+            Some Useful Maven Notes on AstroGrid
+          </a>
+        </li>
+        <li>
+          <a href="http://hotwork.sourceforge.net/hotwork/manual/maven/index.html">
+            An excellent tutorial for Maven, J2EE projects, and MevenIDE. (in portuguese).
+          </a>
+        </li>
+        <li>
+          <a href="http://www.onjava.com/pub/a/onjava/2004/03/17/maven.html">
+            Extending Maven Through Plugins by Eric Pugh
+          </a>
+        </li>
+        <li>
+          <a href="http://www.theserverside.com/articles/article.tss?l=MavenMagic">
+            TheServerSide.com - "Maven Magic" - excellent tutorial on Maven and J2EE projects.
+          </a>
+        </li> 
+      </ul>
+    </section>
+    <section name="Articles">
+      <ul>
+        <li>
+          <a href="http://www.stqemagazine.com/featured.asp?id=20">
+          Learning to Love Unit Testing</a>
+        </li>
+        <li>
+          <a href="http://www.martinfowler.com/articles/continuousIntegration.html">
+          Continuous Integration
+          </a>
+        </li>
+        <li>
+          <a href="http://www-106.ibm.com/developerworks/webservices/library/co-single.html">
+            Use your singletons wisely
+          </a>
+        </li>
+      </ul>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/misc/glossary.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/misc/glossary.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/misc/glossary.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,111 @@
+<?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="jason at zenplex.com">Jason van Zyl</author>
+    <author email="Stéphane Mor">Stéphane Mor</author>
+    <title>Glossary</title>
+  </properties>
+
+  <body>
+    <section name="Glossary">
+      <p>
+        This document describes some of the most common terms encountered while
+        using Maven. Those terms, that have an explicit meaning for Maven
+        developpers, can sometimes be confusing for newcomers.
+      </p>
+      <table>
+        <tr><th>Term</th><th>Description</th></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.
+          </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.
+          </td>
+        </tr>
+        <tr>
+          <td>Plugin</td>
+          <td>
+            Maven is organized in plugins. Every piece of functionality in
+            Maven is provided by a plugin. Plugins are Jelly scripts which are
+            given the POM to perform their task. Examples of plugins are: jar,
+            eclipse, war. You usually call a plugin with its name, such as
+            <code>maven jar</code>. Plugins can be added, removed, edited at
+            runtime.
+          </td>
+        </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".
+          </td>
+        </tr>
+        <tr>
+          <td>Project Object Model (POM)</td>
+          <td>
+            The Project Object Model, almost always referred as the POM, is the
+            document that Maven needs to work with your project. Its name is
+            "project.xml" and is located in the root directory of your project.
+            <p>
+              To learn how to build the POM for your project, please read
+              <a href="reference/project-descriptor.html">this document</a>.
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>Repository</td>
+          <td>
+            A repository is an structured storage of project artifacts. Those
+            artifacts are organized under the following structure:
+            <code>$MAVEN_REPO/project id/artifact
+            type/project-version.extension</code>.
+            <p>
+              For instance, a Maven JAR artifact will be stored in a repository
+              under <code>/foo/maven/jars/maven-1.0_beta-8.jar</code>.
+            </p>
+            <p>
+              There are different repositories that Maven uses. The "remote
+              repository" is the global repository (or one of its mirrors) used
+              to download missing artifacts. The "central repository" is the one
+              used for a site-wide installation (for developpers of a company
+              for instance). The "local repository" is the one that you will
+              have on your computer. The local repository is filled with
+              dependencies coming from either the central repository or the
+              remote one.
+            </p>
+          </td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/misc/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/misc/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/misc/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,41 @@
+<?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>Miscellaneous</title>
+    <author email="dion at apache.org">dIon Gillard</author>
+  </properties>
+
+  <body>
+
+    <section name="Miscellaneous">
+      <p>
+        These are various informational documents about Maven, including
+        <ul>
+          <li><a href="articles.html">Articles about Maven</a></li>
+          <li><a href="glossary.html">A glossary of terms used in this documentation</a></li>
+          <li><a href="powered.html">Projects powered by Maven</a></li>
+        </ul>
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/misc/powered.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/misc/powered.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/misc/powered.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,461 @@
+<?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>
+  </properties>
+
+  <body>
+    <section name="Powered By Maven">
+      <p>
+        This page contains some of the many projects successfully using
+        Maven.  We would be very interested if you would drop us a note
+        if you are using Maven with your project and would like to be
+        added to this list.
+      </p>
+      <subsection name="Projects Using Maven">
+      <table>
+        <tr><th>Project</th><th>Overview</th></tr>
+        <tr>
+          <td><a href="http://arara.sourceforge.net/">Arara Organizer</a></td>
+          <td>
+            An organizer application.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/bcel/">BCEL</a></td>
+          <td>
+            Java Byte Code Engineering Library.
+          </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://jakarta.apache.org/commons/betwixt/">Betwixt</a></td>
+          <td>
+            An XML introspection mechanism for mapping beans to XML in a
+            flexible way.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/cli/">CLI</a></td>
+          <td>
+            A simple and easy to use API for working with the command line
+            arguments and options.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/dbcp/">Commons DBCP</a></td>
+          <td>
+            Commons Database Connection Pooling.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/sandbox/fileupload/">Commons File Upload</a></td>
+          <td>
+            File upload component that uses the Java Activation Framework.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/sandbox/net/">Commons Net</a></td>
+          <td>
+            Commons client network components.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/pool/">Commons Pool</a></td>
+          <td>
+            Commons Pooling.
+          </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://projects.walding.com/dataforge/">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/">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://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://www.softcon-itec.de/maven/exudo/">Exudo</a></td>
+          <td>
+            A JUnit extension for automated testing of web
+            applications. It uses an intelligent record/playback
+            approach to testing that filters test relevant content
+            from presentation detail.  Exudo also has a JDBC testing
+            framework and an easy to use XML based test runner.
+          </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://jakarta.apache.org/turbine/fulcrum/">Fulcrum</a></td>
+          <td>
+            A services framework that was decoupled from Turbine.
+          </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://jaad.sourceforge.net">JAAD</a></td>
+          <td>
+            JAVA API for TIBCO/ActiveDatabase.
+          </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://jakarta.apache.org/commons/jelly/">Jelly</a></td>
+          <td>
+            An XML based scripting and processing engine.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/jetspeed/">Jetspeed</a></td>
+          <td>
+            Portal Framework.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jetspeed-japan.sourceforge.jp/">Jetspeed (Japanese)</a></td>
+          <td>
+            Japanese support for Jetspeed.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/jexl/">Jexl</a></td>
+          <td>
+            Jexl is an implementation of the JSTL Expression Language with extensions.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jpox.sf.net">jpox</a></td>
+          <td>
+            JPOX is a Java Data Objects (JDO) API implementation.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/sandbox/jrcs/">JRCS</a></td>
+          <td>
+            JRCS is a library for parsing and manipulation of RCS archive
+            files like the ones produced by the RCS (Revision Control
+            System) itself and by CVS (Concurrent Version System).
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jsmime.sf.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.sf.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://jakarta.apache.org/commons/jxpath/">JXPath</a></td>
+          <td>
+            A simple interpreter of an expression language called XPath.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/commons/latka/">Latka</a></td>
+          <td>
+            Latka is a functional (end to end) testing tool.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://maven.apache.org/">Maven</a></td>
+          <td>
+            The future of all projects!
+          </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://jakarta.apache.org/commons/sandbox/messenger/">Messenger</a></td>
+          <td>
+            A JMS (Java Message Service) framework which makes it very easy to
+            use JMS in Web Service and Web Application environments.
+          </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 millionen 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://projects.walding.com/montage/">Montage</a></td>
+          <td>
+            A Java Servlet Web Photoalbum with rich web-startable client (and standard web interface).
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://mule.sourceforge.net/index.html">Mule</a></td>
+          <td>
+             Mule is a simple yet robust and highly scalable broker
+             and services framework. It is designed as a light-weight,
+             event-driven component technology that handles
+             communication with disparate systems transparently
+             providing a simple component interface.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/ojb/">ObjectBridge</a></td>
+          <td>
+            Persistence Layer.
+          </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.sf.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.sf.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.sf.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://www.softcon-itec.de/maven/sctree/">ScTree</a></td>
+          <td>
+            An explorer-like tree control that can be embedded in
+            every HTML page. It receives its content from a simple XML
+            data source and transforms it into a functional HTML
+            control.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://www.softcon-itec.de/maven/scwebconf/">ScWebconf</a></td>
+          <td>
+            A Configuration Managment Application for complex products
+            and services. It uses a pluggable rule engine that allows
+            for a more natural expression of business rules with
+            regards to business objects.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/turbine/stratum/">Stratum</a></td>
+          <td>
+            A collection of reusable components from the Turbine projects.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://tambora.zenplex.org/">Tambora</a></td>
+          <td>
+            B2B application for the printing and publishing industry.
+          </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://jakarta.apache.org/turbine/turbine-2/">Turbine 2</a></td>
+          <td>
+            Version 2 of the Turbine model-view-controller framework.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://jakarta.apache.org/turbine/turbine-3/">Turbine 3</a></td>
+          <td>
+            Version 3 of the Turbine model-view-controller framework.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://www.ajsoft.net/Products/WebShop">WebShop</a></td>
+          <td>
+            A J2EE implementation of an internet shop
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://www.ajsoft.net/Products/WebUtils">WebUtils</a></td>
+          <td>
+            A web portal toolkit.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="http://xml.apache.org/xmlrpc/">XMLRPC</a></td>
+          <td>
+            Java XMLRPC implementation.
+          </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>
+      </table>
+    </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/navigation-pdf.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/navigation-pdf.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/navigation-pdf.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,87 @@
+<?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="Maven">
+    <title>Maven</title>
+    <body>
+        <menu name="Overview">
+            <item name="Objectives" href="/objectives.html"/>
+            <item name="Features" href="/features.html"/>
+            <item name="News and Status" href="/status.html"/>
+            <item name="Changes" href="/changes-report.html"/>            
+            <item name="Mailing Lists" href="/mail-lists.html"/>
+            <item name="Source" href="/cvs-usage.html"/>
+            <item name="Dependencies" href="/dependencies.html"/>
+        </menu>
+        <menu name="Getting Started" href="/start/index.html">
+            <item name="Download" href="/start/download.html"/>
+            <item name="Install" href="/start/install.html"/>
+            <item name="Integrate" href="/start/integrate.html"/>
+            <item name="Use" href="/start/use.html"/>
+            <item name="Release Notes" href="/start/release-notes-1.0.html"/>
+            <item name="Build" href="/start/bootstrap.html"/>
+            <item name="Anakia Users" href="/start/anakia.html"/>
+        </menu>
+        <menu name="Reference" href="/reference/index.html">
+            <item name="Project Descriptor" href="/reference/project-descriptor.html"/>
+            <item name="User Guide" href="/reference/user-guide.html"/>
+            <item name="FAQ" href="/faq.html"/>
+            <item name="Project Layout" href="/reference/dirlayout.html">
+                <item name="Site Navigation" href="/site.html"/>
+            </item>
+            <item name="Ant Guide" href="/ant-guide/index.html">
+                <item name="Design" href="/ant-guide/design.html"/>
+                <item name="Terminology" href="/ant-guide/terminology.html"/>
+                <item name="Best Product for Job" href="/ant-guide/where.html"/>
+                <item name="Practical" href="/ant-guide/practical.html">
+                    <item name="Maven Speed" href="/ant-guide/qna/speed.html"/>
+                    <item name="Dependencies" href="/ant-guide/qna/hooks.html"/>
+                    <item name="Ant Targets" href="/ant-guide/qna/antfarming.html"/>
+                    <item name="Project Help" href="/ant-guide/qna/help.html"/>
+                    <item name="Properties" href="/ant-guide/qna/properties.html"/>
+                </item>
+            </item>
+            <item name="Developers" href="/reference/developers/index.html">
+                <item name="Developer's Guide" href="/reference/developers/developer-guide.html"/>
+                <item name="Releasing Plugins" href="/reference/developers/releasing-plugins.html"/>
+                <item name="Sharing Plugins"     href="/reference/developers/sharing-plugins.html"/>
+                <item name="IDE Configuration" href="/reference/developers/ide/index.html">
+                    <item name="Eclipse" href="/reference/developers/ide/eclipse/index.html"/>
+                </item>
+                <item name="Tasks List" href="/task-list.html"/>
+            </item>
+        </menu>
+        <menu name="Misc" href="/misc/index.html">
+            <item name="Articles" href="/misc/articles.html"/>
+            <item name="Glossary" href="/misc/glossary.html"/>
+            <item name="Powered By" href="/misc/powered.html"/>
+            <item name="Tasks" href="/misc/tasks.html"/>
+        </menu>
+        <menu name="External Links">
+            <item name="Maven Wiki" href="http://wiki.codehaus.org/maven/"/>
+            <item name="Chinese site" href="http://maven.huangdong.com"/>
+            <item name="Apache" href="/apache/index.html" collapse="true">
+                <item name="Committer FAQ" href="http://www.apache.org/dev/committers.html"/>
+                <item name="Developer Resources" href="http://www.apache.org/dev/"/>
+                <item name="Web stats" href="http://www.apache.org/~vgritsenko/stats/projects/maven.html"/>
+                <item name="Apache Wiki" href="http://nagoya.apache.org/wiki/apachewiki.cgi"/>
+            </item>
+        </menu>
+    </body>
+</project>

Added: branches/maven1/upstream/1.0.2/xdocs/navigation.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/navigation.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/navigation.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,97 @@
+<?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="Maven">
+
+  <title>Maven</title>
+
+  <body>
+    <links>
+      <item name="Jelly"             href="http://jakarta.apache.org/commons/jelly/index.html"/>
+      <item name="Plugins"           href="/reference/plugins/index.html"/>
+      <item name="PDF Documentation" href="/maven.pdf"   img="/images/pdf.gif"/>
+    </links>
+
+   <menu name="Overview">
+      <item name="Objectives"              href="/objectives.html"/>
+      <item name="Features"                href="/features.html"/>
+      <item name="Download"                href="/start/download.html"/>
+      <item name="News and Status"         href="/status.html"/>
+      <item name="Repository upload"       href="/repository-upload.html"/>
+      <item name="Getting Started"         href="/start/index.html" collapse="true">
+        <item name="Download"              href="/start/download.html"/>
+        <item name="Install"               href="/start/install.html"/>
+        <item name="Integrate"             href="/start/integrate.html"/>
+        <item name="Use"                   href="/start/use.html"/>
+        <item name="Release Notes"         href="/start/release-notes-1.0.html"/>
+        <item name="Build"                 href="/start/bootstrap.html"/>
+        <item name="Anakia Users"          href="/start/anakia.html"/>
+      </item>
+      <item name="Reference"               href="/reference/index.html" collapse="true">
+        <item name="Project Descriptor"    href="/reference/project-descriptor.html"/>
+        <item name="User Guide"            href="/reference/user-guide.html"/>
+        <item name="Plugins"               href="/reference/plugins/index.html"/>
+        <item name="FAQ"                   href="/faq.html"/>
+        <item name="Maven Jelly Tags"      href="/reference/maven-jelly-tags/index.html"/>
+        <item name="Project Layout"        href="/reference/dirlayout.html" collapse="true">
+          <item name="Site Navigation"     href="/site.html"/>
+        </item>
+        <item name="Ant Guide"             href="/ant-guide/index.html" collapse="true">
+          <item name="Design"              href="/ant-guide/design.html"/>
+          <item name="Terminology"         href="/ant-guide/terminology.html"/>
+          <item name="Best Product for Job" href="/ant-guide/where.html"/>
+          <item name="Practical"           href="/ant-guide/practical.html" collapse="false">
+            <item name="Maven Speed"       href="/ant-guide/qna/speed.html"/>
+            <item name="Dependencies"      href="/ant-guide/qna/hooks.html"/>
+            <item name="Ant Targets"       href="/ant-guide/qna/antfarming.html"/>
+            <item name="Project Help"      href="/ant-guide/qna/help.html"/>
+            <item name="Properties"        href="/ant-guide/qna/properties.html"/>
+          </item>
+        </item>
+        <item name="Developers"            href="/reference/developers/index.html" collapse="true">
+          <item name="Developer's Guide"   href="/reference/developers/developer-guide.html"/>
+          <item name="Releasing Plugins"   href="/reference/developers/releasing-plugins.html"/>
+          <item name="Sharing Plugins"     href="/reference/developers/sharing-plugins.html"/>
+          <item name="IDE Configuration"   href="/reference/developers/ide/index.html">
+            <item name="Eclipse"           href="/reference/developers/ide/eclipse/index.html"/>
+          </item>
+        </item>
+        <item name="Maven Wiki"       href="http://wiki.codehaus.org/maven/"/>
+        <item name="Chinese site"     href="http://maven.huangdong.com"/>
+      </item>
+      <item name="Misc"             href="/misc/index.html" collapse="true">
+        <item name="Articles"       href="/misc/articles.html"/>
+        <item name="Glossary"       href="/misc/glossary.html"/>
+        <item name="Powered By"     href="/misc/powered.html"/>
+        <item name="Tasks"          href="/misc/tasks.html"/>
+      </item>
+      <item name="Apache"           href="/apache/index.html" collapse="true">
+        <item name="Committer FAQ"  href="http://www.apache.org/dev/committers.html"/>
+        <item name="Developer Resources" href="http://www.apache.org/dev/"/>
+        <item name="Web stats"      href="http://www.apache.org/~vgritsenko/stats/projects/maven.html"/>
+        <item name="Apache Wiki"    href="http://nagoya.apache.org/wiki/apachewiki.cgi"/>
+      </item>
+    </menu>
+
+    <menu name="" type="footer">
+      <item name="ApacheCon!" href="http://ApacheCon.Com/2004/US/" img="http://ApacheCon.Com/2004/US/logos/logo_only.gif" />
+    </menu>
+
+  </body>
+</project>

Added: branches/maven1/upstream/1.0.2/xdocs/objectives.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/objectives.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/objectives.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,210 @@
+<?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>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+    <title>Maven's Goals</title>
+  </properties>
+
+  <body>
+    <section name="Maven's Goals">
+      <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:
+        <ul>
+          <li>Making the build process easy</li>
+          <li>Providing a uniform build system</li>
+          <li>Providing quality project information</li>
+          <li>Providing clear development process guidelines</li>
+          <li>Providing guidelines for thorough testing practices</li>
+          <li>Providing coherent visualization of project information</li>
+          <li>Allowing transparent migration to new features</li>
+        </ul>
+      </p>
+
+      <subsection name="Making the build process easy">
+        <p>
+          While using Maven doesn't eliminate the need to know about the
+          underlying mechanisms, in our case Jelly and Werkz, Maven does provide a
+          lot of shielding from the harrowing details that may thwart
+          new users. Maven has an easy installation <a
+          href="start/index.html">process</a>, that we strive to make
+          comfortable for novices and experts alike, that when complete
+          allows for very easy building while providing a great deal of
+          power.
+        </p>
+      </subsection>
+
+      <subsection name="Providing a uniform build system">
+        <p>
+          Maven allows a project to build using its project object model (POM) and
+          a single set of Ant build files that are shared by all projects using
+          Maven thus 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 a full gamut of useful project information that is in
+          part taken from your POM and in part generated from your project's
+          sources. Maven currently provides the following information about
+          your project:
+        </p>
+
+        <p>
+          <ul>
+            <li>Change log document created directly from repository information.</li>
+            <li>Cross referenced sources</li>
+            <li>Source metrics</li>
+            <li>Mailing lists</li>
+            <li>Developer list</li>
+            <li>Dependency list</li>
+            <li>Unit test reports including coverage</li>
+          </ul>
+        </p>
+
+        <p>
+          As Maven improves the information set provided will improve, all of
+          which will be transparent to users of Maven.
+        </p>
+
+      </subsection>
+
+      <subsection name="Providing clear development process guidelines">
+        <p>
+          As part of using Maven you have access to the development process
+          guidelines that have been gathered by the collective of projects
+          that use Maven for development. This is an area that needs development
+          and general improvement, but as more projects use Maven more ideas
+          on general develop process will collect and all those ideas will
+          be propagated to all Maven users.
+        </p>
+      </subsection>
+
+      <subsection name="Providing guidelines for thorough testing practices">
+        <p>  
+          Maven provides an easy way to start unit testing right from
+          your project's inception and Maven can enforce rules so that testing is
+          made to be an integral part of your project's development lifecycle. Maven also provides
+          a general pattern for integration unit tests and we are currently integrating
+          <a href="http://quilt.sourceforge.net">Quilt</a> for coverage testing.
+        </p>
+        <p>
+          Specification, execution, and reporting of your projects unit tests are part of
+          the normal build cycle using Maven.  The <a href="http://www.junit.org">Junit</a> 
+          framework and corresponding support in Ant provide the unit testing harness.  
+          Current unit testing best practices were used as guidelines:
+          <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>
+        <p>
+          In-container unit testing of web based applications is provided by the 
+          <a href="http://jakarta.apache.org/cactus/">Cactus</a> testing framework.  Maven 
+          provides a testing harness for these <i>integration unit tests</i> in the same fashion
+          as regular unit tests.  Preliminary support for in-container testing includes Tomcat 4.x 
+          based containers.
+        </p>  
+      </subsection>
+
+      <subsection name="Providing coherent visualization of project information">
+        <p>
+          In order to aid in that comprehension, it will be necessary
+          not only to produce metrics for the source base in question
+          but to provide a terse graphical representation of the state
+          of development. The following is an excerpt from the beginning
+          of Edward R. Tufte's book <i>The Visual Display of
+          Quantitative Information</i>:
+        </p>
+
+        <p>
+          Excellence in statistical graphics consists of complex ideas
+          communicated with clarity, precision, and efficiency.
+          Graphical displays should:
+        </p>
+
+        <ul>
+          <li>
+            show the data
+          </li>
+
+          <li>
+            induce the viewer to think about the substance rather than
+            about methodology, graphic design, the technology of graphic
+            production, or something else
+          </li>
+
+          <li>
+            avoid distorting what the data have to say
+          </li>
+
+          <li>
+            present many numbers in a small space
+          </li>
+
+          <li>
+            make large data sets coherent
+          </li>
+
+          <li>
+            encourage the eye to compare different pieces of data
+          </li>
+
+          <li>
+            reveal the data at several levels of detail, from a broad
+            overview to the fine structure
+          </li>
+
+          <li>
+            serve a reasonably clear purpose: description, exploration,
+            tabulation, or decoration
+          </li>
+
+          <li>
+            be closely integrated with the statistical and verbal
+            descriptions of a data set.
+          </li>
+        </ul>
+      </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 proper. As everything is controlled by a single set of build
+          files this simply involves updating those build files and any
+          accompanying data structures that are part of the Maven installation.
+          As a user, you simply have to update Maven and you have access to
+          all new features. We are also working on an easy way to propagate
+          changes in the POM so error prone manual editing may be avoided.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/project/initial-proposal.txt
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/project/initial-proposal.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/project/initial-proposal.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/xdocs/project/maven-resolution.txt
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/project/maven-resolution.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/project/maven-resolution.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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.0.2/xdocs/quotes.txt
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/quotes.txt	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/quotes.txt	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,18 @@
+ant is our bitch slave.
+Jelly: fascinating but evil.
+dom4j is hurting me again. --James Taylor
+Satisfaction is not guaranteed. --19th Rule of Acquisition
+Sell the sizzle, not the steak. --153rd Rule of Acquisition
+maven.jar was there until a second ago when I rm'd it. --eric
+holy crap that file is big! --Jason van Zyl
+I knew nothing so tasty could come from sadness. 
+Gump sucks. --Zoomie The Cat
+I've got a wocket in my pocket. --Dr. Suess
+Jelly: The glue that holds your fruit together. --Jelly Project Slogan
+...and so, then I removed the sausage, and we all had a good laugh... --bob
+..it'd be like .... bloop!  jelly! --Steve Lewis
+Don't twiddle with my navigation --Peter Lynch
+i'm one big typo today -- jvz
+It's always about fish.
+If you can't fix a bug, at least put it somewhere else. --bob
+FORWARD 10, RIGHT TURN, FORWARD 10 --kurt

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/developer-guide.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/developers/developer-guide.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/developers/developer-guide.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,349 @@
+<?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>Developer Guide</title>
+    <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="Developer Guide">
+      <p>
+        Welcome.  If you are reading this page, you should be a
+        developer interested in contributing to Maven and/or writing
+        plugins for Maven.  If you are simply a developer <b>using</b>
+        Maven for your own project, you are looking for the 
+        <a href="../user-guide.html">User Guide</a>.  With that said, this
+        document contains various snippets of information that every
+        Maven developer should know.
+      </p>
+    </section>
+    <section name="Plugins">
+      <p>
+        Adding functionality to Maven is done through the Maven plugin
+        mechanism.  Maven comes shipped with numerous plugins.  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 will (in the future) describe how to write a plugin;
+        however, in the meantime it contains snippets of information not
+        necessarily assembled in any paricular order, but of importance
+        for anyone writing a plugin.
+      </p>
+      
+      <subsection name="How to create your first plugin">
+        <ol>
+          <li>
+            Create a directory for the plugin
+            <p>
+              Create a local directory for the plugin source code:
+            </p>
+            <source>~/myprojects/maven-plugins/hello</source>
+            
+            <p>In this directory create the following directory structure:</p>
+            <source>
+./src/java 
+./src/plugin-resources 
+./xdocs/ 
+            </source>
+          </li>
+          
+          <li>
+            Create the project.xml file
+            <p>
+              You might use this as a template for you project.xml:
+            </p>
+            <source>
+&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; 
+ 
+&lt;project&gt; 
+    &lt;pomVersion&gt;3&lt;/pomVersion&gt; 
+    &lt;id&gt;maven-hello-plugin&lt;/id&gt; 
+    &lt;name&gt;Maven hello world plugin&lt;/name&gt; 
+    &lt;currentVersion&gt;1.0.0&lt;/currentVersion&gt; 
+    &lt;organization&gt; 
+        &lt;name&gt;My org name&lt;/name&gt; 
+    &lt;/organization&gt; 
+    &lt;inceptionYear&gt;2003&lt;/inceptionYear&gt; 
+    &lt;shortDescription&gt;Short description of the plugin&lt;/shortDescription&gt; 
+    &lt;developers&gt; 
+        &lt;developer&gt; 
+            &lt;name&gt;Trygve Laugstøl&lt;/name&gt; 
+            &lt;id&gt;trygvis&lt;/id&gt; 
+            &lt;email&gt;trygvela at ifi.uio.no&lt;/email&gt; 
+            &lt;organization&gt;My organization&lt;/organization&gt; 
+            &lt;roles&gt; 
+                &lt;role&gt;Developer&lt;/role&gt; 
+            &lt;/roles&gt; 
+        &lt;/developer&gt; 
+    &lt;/developers&gt; 
+ 
+    &lt;dependencies&gt; 
+&lt;!-- 
+        &lt;dependency&gt; 
+            &lt;id&gt;commons-logging&lt;/id&gt; 
+            &lt;version&gt;1.0.3&lt;/version&gt; 
+        &lt;/dependency&gt; 
+--&gt; 
+    &lt;/dependencies&gt; 
+ 
+    &lt;build&gt; 
+        &lt;!-- Useful if your plugin uses some beans --&gt; 
+        &lt;sourceDirectory&gt;src/java/main&lt;/sourceDirectory&gt; 
+        &lt;unitTestSourceDirectory&gt;src/java/test&lt;/unitTestSourceDirectory&gt; 
+ 
+        &lt;unitTest&gt; 
+            &lt;includes&gt; 
+                &lt;include&gt;**/*Test.java&lt;/include&gt; 
+            &lt;/includes&gt; 
+        &lt;/unitTest&gt; 
+ 
+        &lt;resources&gt; 
+            &lt;resource&gt; 
+                &lt;directory&gt;${basedir}/src/plugin-resources&lt;/directory&gt; 
+                &lt;targetPath&gt;plugin-resources&lt;/targetPath&gt; 
+            &lt;/resource&gt; 
+            &lt;resource&gt; 
+                &lt;directory&gt;${basedir}&lt;/directory&gt; 
+                &lt;includes&gt; 
+                    &lt;include&gt;plugin.jelly&lt;/include&gt; 
+                    &lt;include&gt;plugin.properties&lt;/include&gt; 
+                    &lt;include&gt;project.properties&lt;/include&gt; 
+                    &lt;include&gt;project.xml&lt;/include&gt; 
+                &lt;/includes&gt; 
+            &lt;/resource&gt; 
+        &lt;/resources&gt; 
+    &lt;/build&gt; 
+&lt;/project&gt;  
+            </source>
+          </li>
+          
+          <li>
+            Create the plugin.jelly file
+            <p>
+            This file is the main file in the plugin. It contains the goals that make up the plugin.
+            </p>
+            <source>
+&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;  
+ 
+&lt;project&gt; 
+    &lt;goal name="hello"&gt; 
+        &lt;echo&gt;Hello Maven Plug-in!&lt;/echo&gt; 
+    &lt;/goal&gt; 
+&lt;/project&gt; 
+            </source>
+          </li>
+          
+          <li>
+            Other useful files
+            <p>There are a couple of other useful files that you might want to know of:</p>
+            <dl>
+              <dt>project.properties</dt>
+              <dd>the same as always, it's for customizing the build process of the plugin itself.</dd>
+              <dt>plugin.properties</dt>
+              <dd>
+                This is simply the default values of the properties that the plugin exposes for
+                the user to customize
+              </dd>
+            </dl>
+          </li>
+          
+          <li>
+            Install the plugin
+            <p>
+              While developing a plugin you probably don't wont the plugin to be accessable for everyone 
+              using the same maven installation as you, so you should copy the built plugin to your local plugins
+              directory.
+            </p>
+            <p>
+              When you have a good version you can do <source>maven plugin:install</source> to install it to 
+              <code>MAVEN_HOME</code>.
+            </p>
+          </li>
+          
+          <li>
+            Invoke the plugin
+            <p>Start maven using</p>
+            <source>maven hello</source>
+            <p>And there's your first plug-in!</p>
+          </li>
+        </ol>
+      </subsection>
+
+      <subsection name="Sharing Your Plugin">
+        <p>Please see <a href="sharing-plugins.html">Sharing Your Plugin</a> for guidelines on how to share your Maven
+          plugins with the community.</p>
+      </subsection>
+      
+      <subsection name="Reporting Protocol">
+        <p>
+          If you are writing a plugin which generates output that you
+          want to be included on Maven generated sites, then you need to
+          adhere to a specific protocol.  This protocol ensures that
+          your output will be automatically included on a Maven
+          generated site if a user has selected to run the report
+          associated with your plugin.  Assuming this is true, a link
+          will be created in the "Project Reports" section of the
+          navigation bar that points to the output generated by your
+          plugin.  In addition, an entry will be included in the
+          document that provides an overview of all Maven generated
+          reports (this is the page that a user sees when they click on
+          the "Project Reports" section of the navigation bar).
+        </p>
+        <p>
+          The protocol consists of three requirements, all of which
+          require the specification of a goal in your
+          <code>plugin.jelly</code> file.  The first goal should be
+          called <code>maven-xyz-plugin:register</code>, where
+          <code>xyz</code> is the name of your plugin.  This goal should
+          contain one or more <code>doc:registerReport</code>
+          tags.  The following is an example is taken from the changelog
+          plugin included with Maven:
+        </p>
+        <source><![CDATA[
+  <goal name="maven-changelog-plugin:register">
+    <doc:registerReport 
+      name="Change Log" 
+      link="changelog-report"
+      description="Report on the source control changelog."/>
+  </goal>
+        ]]></source>
+        <p>
+          This goal is responsible for "registering" the report that is
+          generated by your plugin with the xdoc plugin (the plugin that
+          generates the docs).  Note, you <b>must</b> include the
+          following in your xmlns declarations in order to use the
+          <code>doc:registerReport</code> tag:
+          <code>xmlns:doc="doc"</code>.  The
+          <code>doc:registerReport</code> tag has four required
+          attributes:
+        </p>
+        <table>
+          <tr><th>Attribute</th><th>Value</th></tr>
+          <tr>
+            <td>name</td>
+            <td>
+              The is the name of your report.  It is the name that will
+              be used in the navigation bar as well as the
+              auto-generated <code>maven-reports.xml</code> overview
+              document.  The name should be unique to prevent name
+              collisions with other plugins.
+            </td>
+          </tr>
+          <tr>
+            <td>pluginName</td>
+            <td>
+              The is the name of the plugin that is registering the report.
+              The goal <code>${pluginName}:report</code> will be run to 
+              generate the report.
+            </td>
+          </tr>
+          <tr>
+            <td>link</td>
+            <td>
+              This is a relative link to the output of your plugin but
+              does <b>not</b> contain an extension.  The link is
+              relative from the root of the generated site.  For
+              example, if you specify <code>changelog-report</code> then
+              your generated output should be located in the root of
+              your <code>target/docs</code> directory and called
+              <code>changelog-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>
+        </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}">
+      <doc:registerReport 
+        name="JavaDocs" 
+        link="apidocs/index"
+        description="JavaDoc API documentation."/>
+      <doc:registerReport 
+        name="JavaDoc Report" 
+        link="javadoc"
+        description="Report on the generation of JavaDoc."/>
+    </j:if>
+  </goal>
+        ]]></source>
+        <p>
+          The above example registers two reports with the xdoc plugin.
+          A keen observer will 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 second part of the plugin protocol is the specification of 
+          a deregistration goal called <code>maven-xyz-plugin:report</code>.
+          This goal is optional, but should be included to allow users to
+          add / remove the report from their site.  
+        </p>
+        <source><![CDATA[
+  <goal name="maven-javadoc-plugin:deregister">
+      <doc:deregisterReport name="JavaDocs"/>
+  </goal>
+        ]]></source>
+        <p>
+          The third part of the plugin protocol is the specification of
+          a goal called <code>maven-xyz-plugin:report</code>, where
+          <code>xyz</code> is the name of your plugin.  This goal must
+          generate the output for your plugin.  For example, if you were
+          writing a plugin to generated javadoc (which you wouldn't
+          because it already exists), you would create a goal called
+          <code>maven-javadoc-plugin:report</code> and it would contain
+          the logic necessary to produce the resulting JavaDocs.
+        </p>
+        <p>
+          If you adhere to the following protocol, users will be able to
+          select which reports they want to be included in their
+          Maven-generated site by specifying a <code>reports</code>
+          section in their POM.  For example, to include the javadoc and
+          changelog reports in a site, the POM would include the
+          following:
+        </p>
+        <source><![CDATA[
+  <reports>
+    <report>maven-changelog-plugin</report>
+    <report>maven-javadoc-plugin</report>
+  </reports>
+        ]]></source>
+      </subsection>
+      
+      
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse1.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse2.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse3.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse4.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse4.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse5.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse5.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse6.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse6.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse7.png
===================================================================
(Binary files differ)


Property changes on: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/eclipse7.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/eclipse/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>Eclipse Configuration</title>
+    <author email="bwalding at apache.org">Ben Walding</author>
+  </properties>
+
+  <body>
+  	
+  	<section name="Java | Code Formatter">
+	  	<style type="text/css">
+	  		img.screenshot {
+	  			padding: 10px;
+	  		}
+	  	</style>
+	  	
+  		<subsection name="New Lines">
+	  		<img class="screenshot" src="eclipse1.png"/>
+  		</subsection>
+
+  		<subsection name="Line Splitting">
+	  		<img class="screenshot" src="eclipse2.png"/>
+  		</subsection>
+  	</section>
+    
+    <section name="Team | File Content">
+    	<p> 
+    		This ensures that *.jsl and *.jelly files are checked into
+    	    CVS as ASCII.
+    	</p>
+  		<img class="screenshot" src="eclipse3.png"/>
+  	</section>
+  	
+    <section name="Workbench | Editors | Text Editor">
+  		<img class="screenshot" src="eclipse4.png"/>
+    </section>
+    
+    <section name="Java | Classpath Variables">
+    	<p>
+    		This lets the relative dependencies generated by 
+    		<code>maven eclipse</code> be found by Eclipse.
+    	</p>
+    	<p>
+    		<code>MAVEN_REPO</code> should be set to the location of
+    		your local maven repository (maven.repo.local)
+    	</p>
+  		<img class="screenshot" src="eclipse5.png"/>
+    </section>
+    
+    <section name="Java | Editor">
+  		<subsection name="Appearance">
+	  		<img class="screenshot" src="eclipse6.png"/>
+  		</subsection>
+  		<subsection name="Typing">
+  			<p>Insert spaces for tabs</p>
+	  		<img class="screenshot" src="eclipse7.png"/>
+  		</subsection>
+    </section>
+    
+
+
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/developers/ide/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,40 @@
+<?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>IDE Configuration Documentation</title>
+    <author email="bwalding at apache.org">Ben Walding</author>
+  </properties>
+
+  <body>
+    <section name="IDE Configuration Documentation">
+      <p>
+        This document provides an overview of how to configure various IDEs
+        appropriately for Maven development.
+      </p>
+      
+      <ul>
+      	<li><a href="eclipse/index.html">Eclipse 2.1</a></li>
+      </ul>
+
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/developers/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/developers/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,35 @@
+<?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>Developer's Reference Documentation</title>
+    <author email="dion at apache.org">dIon Gillard</author>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <p>
+        These documents contain information relevant to people developing Maven itself,
+        not for people wanting to use Maven for their development build tool.
+      </p>
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/releasing-plugins.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/developers/releasing-plugins.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/developers/releasing-plugins.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,151 @@
+<?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>
+  </properties>
+  <body>
+  <section name="Changing a Plugin">
+    <p>
+      This page describes what Maven contributors or developers need to do when
+      modifying a Maven component or plugin in Maven CVS:
+    </p>
+    <ul>
+      <li>
+        Update <strong>xdocs/changes.xml</strong>
+        (create it if it does not exist) and describe the change, see 
+        <a href="http://maven.apache.org/reference/plugins/changes/">the changes plugin</a>
+        or the format of the file.
+      </li>
+      <li>
+        Update the other documentation files in <strong>xdocs/</strong>, reflecting your change.
+        For plugins, consider especially the <strong>xdocs/goals.xml</strong> and
+        <strong>xdocs/properties.xml</strong> files. If the plugin has no xdocs, please generate skeletons using 
+        <code>maven plugin:generate-docs</code>
+      </li>
+      <li>
+        Ensure that the version in project.xml is a SNAPSHOT, e.g. 
+        <strong>&lt;currentVersion&gt;1.1-SNAPSHOT&lt;/currentVersion&gt;</strong>,
+        and &lt;b&gt;not&lt;/b&gt; <strong>&lt;currentVersion&gt;1.1&lt;/currentVersion&gt;</strong>.
+        Unless you are in the process of creating a release of course.
+      </li>
+      <li>
+        Make sure the <code>&lt;version&gt;</code> section of project.xml is 
+        up to date. Create one if it is missing.
+      </li>
+    </ul>
+  </section>
+  <section name="Releasing Maven plugins">
+    <p>
+      Prerequesites: 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.username</code> - your apache username</li>
+      <li><code>maven.repo.apache.privatekey</code> - the filename of your SSH private key</li>
+      <li><code>maven.repo.apache.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>
+    <p>Release process</p>
+    <ul>
+      <li>
+        <p>Run <code>maven scm:prepare-release</code> and enter the appropriate tag 
+          (<code>MAVEN_[PROJECTNAME]_[MAJOR]_[MINOR]</code>) and version. This will update the
+          <code>currentVersion</code>, <code>versions</code> entries, and <code>xdocs/changes.xml</code> file
+          with the new version and release date. It will also commit your <code>project.xml</code> and
+          <code>xdocs/changes.xml</code> files, then tag the resulting source tree.<br/>
+          <b>Note:</b> This command will fail before doing any processing if there are modified files in your
+          source tree other than <code>project.xml</code> and <code>xdocs/changes.xml</code>
+        </p>
+      </li>
+      <li><p>Produce a clean build of the plugin using <code>maven 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,site:deploy</code>.
+      </p></li>
+      <li><p>
+        Check for the new version at
+        <a href="http://www.apache.org/dist/java-repository/maven/plugins/">http://www.apache.org/dist/java-repository/maven/plugins/</a></p>
+      </li>
+      <li>
+        <p>
+          Go the <a href="http://jira.codehaus.org/secure/project/ViewProjects.jspa">JIRA administration page</a>
+          for the Maven plugin 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 issue creators/plugin 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="Some related FAQs">
+    <ul>
+      <li>
+        <p> Q: When would I do a release?</p>
+        <p> A: 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> Q: What is the convention for versioning? </p>
+        <p> A: 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.
+          eg. <code>1.0.1</code> - use less whitespace in output HTML.
+        </p>
+      </li>
+      <li>
+        <p> Q: Who decides when a plugin can be released? </p>
+        <p> A: THe lead developer of a plugin has the responsibility for making sure releases happen,
+          but must first hold a vote on the Maven PMC 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>
+      <li>
+        <p> Q: Why would I want to given all the pain it will take?</p>
+        <p> A: Several possible answers... :-) Pick yours.  </p>
+        <ol>
+          <li><p> Because, making a release is honorific and you'll be thanked for it! </p></li>
+          <li><p> Because you have no choice. It is a rule in Maven land that we want to support 
+            our existing user base. This is something that we may not have done  properly in the
+            past and we need to tackle this issue now.</p></li>
+          <li><p> Because this is a rule all committers on Maven have agreed on, so you have
+            no choice :-) </p></li>
+        </ol>
+      </li>
+    </ul>
+  </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/reference/developers/sharing-plugins.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/developers/sharing-plugins.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/developers/sharing-plugins.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,192 @@
+<?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>
+    <author email="timpub at pobox.com">Tim Shadel</author>
+    <title>Sharing your plugin</title>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <p>
+        You've just created a killer Maven plugin.  Now what?!
+      </p>
+    </section>
+  
+    <section name="Plugin Maintenance">
+      <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 to as 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://www.cvshome.org/">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://sf.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>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>Read <a href="releasing-plugins.html">Releasing Plugins</a>, concentrating on the announcement portion.</li>
+             <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
+                 <a href="#Step_4_So_now_that_they_found_my_plugin_how_do_users_install_it_">plugin installation instructions</a>.</li>
+             <li>Combine the advice of the two parts to make your own effective 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.  The best way to get your link on this page is to get the Maven source, and submit a
+           patch to the list file itself.  Here are the steps in a bit more detail.</p>
+        <ul>
+          <li>Get the <code>maven-plugins</code> source as described <a href="http://maven.apache.org/reference/plugins/cvs-usage.html">here</a></li>
+          <li>Open the file <code>MAVEN_PLUGINS_SOURCE/xdocs/index.xml</code></li>
+          <li>If your plugin host is not listed, add the following, so your site's name falls <strong>in alphabetical order</strong>
+            with the rest of the site list (except for the Maven site itself).
+            <source><![CDATA[
+<subsection name="Plugins on the [plugin host site name] site">
+  <table>
+    <tr>
+      <td><a href="http://www.example.com/plugin">Example plugin</a></td>
+      <td>Plugin for Example Documentation</td>
+    </tr>
+  </table>
+</subsection>
+            ]]></source>
+          </li>
+          <li>If your plugin host is already listed, add the table row (<code>&lt;tr&gt;</code>) portion above to your
+            host's section.  Order your plugins appropriately within your host section.</li>
+          <li>Now follow the <a href="http://wiki.codehaus.org/maven/SubmittingPatches">guidelines for creating a Maven patch</a>,
+            and submit your patch to <a href="http://jira.codehaus.org">JIRA</a>.  Use the project <code>maven</code>
+            (<a href="http://jira.codehaus.org/secure/BrowseProject.jspa?id=10030">here</a>) and the <code>documentation</code> component.
+            Place a note in your JIRA issue telling the developer that your patch is against the <code>maven-plugins</code> documentation.</li>
+          <li>Once your patch is applied, and the Maven site is redeployed, you'll have a link to your plugin's home page from the Maven site.</li>
+        </ul>
+      </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=[plugin-name] -DgroupId=[plugin-group] -Dversion=[plugin-version]</source>
+        <p>For example:</p>
+        <source>maven plugin:download -DartifactId=maven-statcvs-plugin -DgroupId=statcvs -Dversion=2.4</source>
+      
+      </subsection>
+
+      <section name="Related Links">
+        <subsection name="Official Maven Documentation">
+          <p>Documentation maintained by Maven committers.</p>
+          <ul>
+            <li><a href="developer-guide.html">Developer Guide</a>: Start here.  This
+              provides the most clear and comprehensive start to writing Maven plugins.</li>
+            <li><a href="releasing-plugins.html">Releasing Plugins</a>:
+              Maven documentaion for contributors modifying a Maven plugin  Look for ways to have your own project follow
+              similar standards.</li>
+            <li><a href="http://maven.apache.org/reference/plugins/index.html">Plugins</a>: Lists sites that host Maven plugins.</li>
+            <li><a href="../../repository-upload.html">Repository Upload Instructions</a>: How to request your
+              resources be uploaded to ibilio.org.  A must read.  Watch it for updates, and carefully follow the most recent
+              instructions to give your resource the best chance of quick processing.</li>
+            <li><a href="../../faq.html">FAQ</a>: Read it. Use it. Love it. Live it.</li>
+          </ul>
+        </subsection>
+        <subsection name="Maven Wiki">
+          <p>These links include collected documentation about Maven, contributed from a variety of sources.</p>
+          <ul>
+            <li><a href="http://wiki.codehaus.org/maven/HowToCreateYourFirstPlugIn">A first</a> and
+              <a href="http://wiki.codehaus.org/maven/HowToCreateYourFirstPlugIn2">second</a> part of a tutorial for making
+              a minimal Maven plugin.</li>
+            <li><a href="http://wiki.codehaus.org/maven/PluginCreation">PluginCreation</a>: A more conprehensive contributed
+              tutorial for creating your own plugin.</li>
+            <li><a href="http://wiki.codehaus.org/maven/PluginModificationGuidelines">PluginModificationGuidelines</a> and
+              <a href="http://wiki.codehaus.org/maven/ReleasingPlugins">ReleasingPlugins</a>:
+              Contributed discussion of what Maven contributors or developers do when modifying a Maven plugin in Maven CVS.
+              Many things are duplicates of official docs now.  Look for ways to have your own project follow similar standards.</li>
+            <li><a href="http://wiki.codehaus.org/maven/PluginOwners">PluginOwners</a>: Beginnings of a list linking plugins
+              and principal maintainers</li>
+          </ul>
+        </subsection>
+        <subsection name="Mailing List Threads">
+          <p>Discussion that occured on the Maven mailing lists.</p>
+          <ul>
+            <li><a href="http://www.mail-archive.com/dev@maven.apache.org/msg10903.html">StatCvs Maintainership</a>: A discussion,
+              initiated by the StatCvs group, about the benefits of moving maintainership of the StatCvs plugin from the Maven
+              team to the StatCvs team</li>
+            <li><a href="http://www.mail-archive.com/users@maven.apache.org/msg09117.html">StatCvs Plugin Announcement</a>:
+              Example of how to properly announce releases of your plugin.</li>
+          </ul>
+        </subsection>
+      </section>
+    </section>
+
+  </body>
+</document>


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

Added: branches/maven1/upstream/1.0.2/xdocs/reference/dirlayout.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/dirlayout.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/dirlayout.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,383 @@
+<?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>
+    <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>
+    <title>Maven Directory Layout</title>
+  </properties>
+
+  <body>
+
+    <section name="Rationale">
+      <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. Common Maven procedures strengthen the
+        Maven brand.
+      </p>
+      <p>
+        The directory structure proposed here is based on best-practices
+        as suggested by Jakarta committers. We recognize that the cost
+        of changing an existing directory structure can be high. As
+        such, this proposal is not binding.  However, integrating Maven
+        into a project that does not follow the recommendations in this
+        proposal will require additional integration work.
+      </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
+        must these settings can be overridden via properties as
+        documented in the <a
+        href="../start/integrate.html#Properties">Integration</a> document.
+      </p>
+    </section>
+    <section name="Common Directory Layout">
+      <table>
+        <tr>
+          <th>Directory or file name</th>
+          <th>Content</th>
+          <th>Comment</th>
+        </tr>
+        <tr>
+          <td>LICENSE.txt</td>
+          <td>The license for the project.</td>
+          <td>
+            This file contains the license that applies to the project.
+            Each source file should included this header.  By default,
+            if a source file does not include this file, it will be
+            noted in the Checkstyle report that is generated.  
+          </td>
+        </tr>
+        <tr>
+          <td>src/</td>
+          <td>Source code.</td>
+          <td>
+            The code may be placed into separate source code directories
+            by language, as in src/java/ and src/php/ for source code in
+            the Java and PHP languages respectively.  The separation into 
+            directories according to function (src/share, src/core, src/web)
+             is currently not supported by Maven. It is highly recommended that
+            sub-directories be used under src/.
+          </td>
+        </tr>
+        <tr>
+          <td>src/test</td>
+          <td>Unit test source code.</td>
+          <td>
+            This directory typically contains all of the unit testing
+            code.  JUnit is the framework used by Maven for unit testing
+            so classes in these files should use the JUnit framework.
+          </td>
+        </tr>
+        <tr>
+          <td>src/announcements</td>
+          <td>Contains a record of announcements.</td>
+          <td>
+            This directory is used to maintain a record of announcements sent
+            out by the project.  It contains announcement property files as
+            well as the announcements themselves.  Please refer to the <a
+            href="build-file.html#maven:announce">Build File</a>
+            documentation for more information on announcements.
+          </td>
+        </tr>
+        <tr>
+          <td>xdocs/</td>
+          <td>Documentation files in XML format.</td>
+          <td>
+            Maven projects use Jelly/JSL to transform documentation
+            files in XML into HTML. Project documentation should be
+            placed in this directory.  Maven converts all XML files in
+            this directory using JSL.  Non-XML files (and directories)
+            are copied without modificiation to permit the inclusion of
+            "other" types of documentation (including images).  The
+            generated HTML files automatically inherit the Maven
+            look-and-feel by default.  Documentation on the xdoc format
+            is <a
+              href="http://jakarta.apache.org/site/jakarta-site2.html">available</a>.
+          </td>
+        </tr>
+        <tr>
+          <td>xdocs/navigation.xml</td>
+          <td>Navigation links for site.</td>
+          <td>
+            Maven projects use Jelly stylesheets to transform documentation
+            files in XML into HTML (XHTML for the most part). This file 
+			includes the navigation links that are added to each xdoc transformed 
+			in the <code>xdocs</code> directory.  Documentation on the
+            <code>xdocs/project.xml</code> format is <a
+              href="http://jakarta.apache.org/site/jakarta-site2.html">available</a>.  
+            For backwards compatibility, this file may also be located
+            in the <code>xdocs/stylesheets</code> directory.
+			<p/>
+			See <a href="../site.html">site creation documentation</a> for more information 
+			including details of the enhancements Maven has made to the xdoc format.
+			
+          </td>
+        </tr>
+        <tr>
+          <td>project.properties</td>
+          <td>A file defining project properties.</td>
+          <td>
+            <p>
+              This file can be used to override Maven default properties 
+              for the core and properties for the various plugins.
+            </p>
+
+            <p>
+              It can also be used to define any Maven properties used by a
+              project.  The properties defined in this file should be
+              applicable to most users of your project, as opposed to
+              custom properties for a specific build/user which should be
+              defined in <code>${project.home}/build.properties</code>.  
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>build.properties</td>
+          <td>A file defining project properties for a specific build.</td>
+          <td>
+            <p>
+              This file can be used to override Maven default properties 
+              for the core, plugins or any project default properties 
+              (defined in <code>${project.home}/project.properties</code>).  
+            </p>
+            <p>
+             The properties defined in
+            this file should not be checked into CVS because they are
+            specific to a build, as opposed to project-wide properties
+            defined in <code>${project.home}/project.properties</code>.  
+            </p>
+          </td>
+        </tr>
+      </table>
+    </section>
+    <section name="Maven-Generated Layout">
+      <table>
+        <tr>
+          <th>Directory name</th>
+          <th>Content</th>
+          <th>Comment</th>
+        </tr>
+        <tr>
+          <td>target/</td>
+          <td>Contains compiled classes and JARs.</td>
+          <td>
+            The contents of the target/ directory should be enough to
+            use the project.  This directory contains the final JARs
+            that are generated.
+          </td>
+        </tr>
+        <tr>
+          <td>target/classes</td>
+          <td>Contains compiled classes and JARs.</td>
+          <td>
+            The target/classes directory contains all compiled classes.
+            This directory is used when packaging the final JAR for a
+            project.
+          </td>
+        </tr>
+        <tr>
+          <td>target/test-classes</td>
+          <td>Contains compiled unit test classes.</td>
+          <td>
+            The target/test-classes directory contains all compiled unit 
+            test classes.  This directory is used when executing the unit
+            tests.
+          </td>
+        </tr>
+        <tr>
+          <td>target/generated-docs</td>
+          <td>Contains Maven generated xdocs.</td>
+          <td>
+            The target/generated-docs directory contains all of the
+            Maven-generated xdocs.  All content generated by Maven is
+            first converted to xdoc format, so the same stylesheet used
+            to transform the rest of the site, can be used on generated
+            content.  The contents of this directory are transformed and
+            stored in the docs/ directory.
+          </td>
+        </tr>
+        <tr>
+          <td>target/test-reports</td>
+          <td>Contains the individual unit test results.</td>
+          <td>
+            The test-reports/ directory contains individual unit test
+            reports in both XML and plain text formats.  The reports in
+            this directory is used when Maven creates the final unit
+            test report.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs</td>
+          <td>Documentation files intended for the website publication.</td>
+          <td>
+            The docs/ directory contains only generated documentation
+            that is intended to be published as the project's website.
+            This directory includes the Velocity/DVSL generated HTML
+            files, JavaDocs, cross-referenced sources, and various
+            generated reports.  Generally, all documentation is stored
+            in the xdocs/ directory and then "transformed" into this
+            directory.  The specific documents that Maven generates are
+            described below.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/index.html</td>
+          <td>Starting point for browsing the documentation.</td>
+          <td>
+            Browsing the documentation locally should yield the same
+            results as browsing the documentation on the project's home
+            page.  If a project does not provide an index.xml in the
+            xdocs/ directory, Maven will automatically generate a simple
+            front page based on the <a
+              href="project-descriptor.html#project">description</a>
+            element in the project descriptor.  
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/apidocs</td>
+          <td>API documentation.</td>
+          <td>
+            Maven automatically generates JavaDocs for projects using
+            the JavaDoc utility.  Placing the API documentation under
+            docs/apidocs/ makes it slightly easier for other
+            documentation files under docs/ to reference API
+            documentation and vice versa.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/xref</td>
+          <td>Cross-referenced source code.</td>
+          <td>
+            Maven automatically generates cross-referenced source code
+            that enables easy browsing of an entire source tree.
+            Placing the cross-referenced sources under docs/xref/ makes
+            it slightly easier for other documentation files under docs/
+            to reference cross-referenced sources and vice versa.  
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/xref-test</td>
+          <td>Cross-referenced test source code.</td>
+          <td>
+            Maven automatically generates cross-referenced test 
+            source code that enables an easy way to show developers
+            how to use your software properly.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/mail-lists.html</td>
+          <td>Mailing list documentation.</td>
+          <td>
+            Maven automatically generates a list of mailing lists based
+            on the information provided in the <a
+              href="project-descriptor.html#mailingLists">project
+              descriptor</a>.  
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/team-list.html</td>
+          <td>The list of project team members.</td>
+          <td>
+            Maven automatically generates a list of project team members based
+            on the information provided in the <a
+              href="project-descriptor.html#developers">project
+              descriptor</a>.  
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/dependencies.html</td>
+          <td>The list of dependencies.</td>
+          <td>
+            Maven automatically generates a list of dependencies based
+            on the information provided in the <a
+              href="project-descriptor.html#dependencies">project
+              descriptor</a>.  
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/changelog.html</td>
+          <td>The CVS change log.</td>
+          <td>
+            Maven automatically generates a change log from CVS log
+            messages.  This log is currently limited to the past 30 days
+            (but will be configurable in the future).
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/file-activity-report.html</td>
+          <td>The File Activity Report.</td>
+          <td>
+            Maven automatically generates a log from your SCM listing
+            file changes in the last 30 days.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/developer-activity-report.html</td>
+          <td>The Developer Activity Report.</td>
+          <td>
+            Maven automatically generates a log from your SCM listing
+            changes per developer in the last 30 days.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/jdepend-report.html</td>
+          <td>Metric report.</td>
+          <td>
+            Maven automatically generates a report on various <a
+              href="metrics.html">source code metrics</a>.  This report
+            can provide further insight into a project.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/junit-report.html</td>
+          <td>Unit test report.</td>
+          <td>
+            Maven automatically generates a report on the results of
+            unit testing.  This report provides a confidence level for
+            users of your project.
+          </td>
+        </tr>
+        <tr>
+          <td>target/docs/checkstyle-report.html</td>
+          <td>Checkstyle report.</td>
+          <td>
+            Maven automatically generates a report on the results of
+            Checkstyle.  This report provides assurance that the coding
+            conventions for your project are being followed.
+          </td>
+        </tr> 
+      </table>
+    </section>
+    <section name="Points to keep in mind">
+      <p>
+        It is recommended to include a <code>.cvsignore</code> file in
+        top-level directory under CVS control in order to avoid the
+        distracting "?" message output during CVS update.
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,92 @@
+<?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 Documentation</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+    <section name="Reference Documentation">
+      <p>
+        This document provides an overview of the various documents
+        available in the reference section of the Maven documentation.
+        The documents presented here are references, if you are looking
+        for more verbose usage material, please refer to the <a
+        href="../start/index.html">Getting Started</a> section.
+      </p>
+
+      <subsection name="Overview of the Reference Documentation">
+        <table>
+          <tr><th>Document</th><th>Description</th></tr>
+          <tr><td><a href="project-descriptor.html">Project Descriptor</a></td>
+            <td>
+              The document describing what a Project Descriptor should look
+              like.
+            </td>
+          </tr>
+          <tr><td><a href="user-guide.html">User Guide</a></td>
+            <td>
+              The Maven User Guide is intended to help users get acquainted with Maven
+              by providing thorough descriptions and examples.
+            </td>
+          </tr>
+          <tr><td><a href="plugins/index.html">Plugin Documentation</a></td>
+            <td>
+              Maven makes extensive use of plugins to provide functionality.
+              This is a listing of the plugins with links to their documentation.
+            </td>
+          </tr>
+          <tr>
+            <td><a href="/faq.html">FAQ</a></td>
+            <td>The answers to your frequently asked questions, including where to get more information.</td>
+          </tr>
+          <tr>
+            <td><a href="http://wiki.codehaus.org/maven/">Maven Wiki</a></td>
+            <td>
+              The Maven Wiki contains up to the minute information about the development of Maven,
+              and helpful information for users.
+            </td>
+          </tr>
+          <tr><td><a href="dirlayout.html">Project Layout</a></td>
+            <td>
+              The document describing the recommended way of laying out
+              a project's directory structure.
+            </td>
+          </tr>
+          <tr>
+            <td><a href="/ant-guide/index.html">Ant Guide</a></td>
+            <td>
+              The Ant Guide is intended to help Ant users migrate to Maven, and to
+              answer common practical questions.
+            </td>
+          </tr>
+          <tr><td><a href="developers/index.html">Developer Documentation</a></td>
+            <td>
+              The Maven Developer Guide is intended to help developers get
+              acquainted with Maven's internals.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/metrics.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/metrics.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/metrics.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="sbailliez at apache.org">Stephane Bailliez</author>
+    <title>Metrics</title>
+  </properties>
+
+  <body>
+
+    <section name="Metrics">
+
+      <p>
+        This document tries to collect information required to compute
+        some metrics that are of interest in a design.
+      </p>
+      <p>
+        Most of it has been blatantly copied from the <a
+        href="http://www.webgain.com">WebGain</a> QA manual and from
+        Robert C. Martin article : <a
+        href="http://www.objectmentor.com/resources/articles/oodmetrc.pdf">Object
+        Oriented Design Quality Metric - An Analysis</a>.  See also
+        McCabe publication <a
+        href="http://www.mccabe.com/nist/nist_pub.php">Structured
+        Testing: A Testing Methodology Using the Cyclomatic Complexity
+        Metric</a>
+      </p>
+      <p>
+        <a href="#Cyclomatic Complexity - V(G)">V(G)</a> |
+        <a href="#Lines of Code - LOC">LOC</a> |
+        <a href="#Depth of Inheritance Hierarchy - DIT">DIT</a> |
+        <a href="#Number of Attributes - NOA">NOA</a> |
+        <a href="#Number of Remote Methods - NRM">NRM</a> |
+        <a href="#Number of Local Methods - NLM">NLM</a> |
+        <a href="#Weighted Methods per Class - WMC">WMC</a> |
+        <a href="#Response For Class - RFC">RFC</a> |
+        <a href="#Data Abstraction Coupling - DAC">DAC</a> |
+        <a href="#Fan Out - FANOUT">FANOUT</a> |
+        <a href="#Coupling Between Objects - CBO">CBO</a> |
+        <a href="#Lack of Cohesion Of Methods - LCOM">LCOM</a> |
+        <a href="#Number Of Classes - NOC">NOC</a>
+        <a href="#Abstractness - A">A</a>
+        <a href="#Afferent Couplings - Ca">Ca</a>
+        <a href="#Efferent Couplings - Ce">Ce</a>
+        <a href="#Instability - I">I</a>
+        <a href="#Normalized distance from the main sequence - Dn">Dn</a>
+      </p>
+      <subsection name="Cyclomatic Complexity - V(G)">
+        <p>
+          This metric was introduced in the 1970s to measure the amount
+          of control flow complexity or branching complexity in a module
+          such as a subroutine. It gives the number of paths that may be
+          taken through the code, and was initially developed to give
+          some measure of the cost of producing a test case for the
+          module by executing each path.
+        </p>
+        <p>
+          Methods with a high cyclomatic complexity tend to be more
+          difficult to understand and maintain. In general the more
+          complex the methods of an application, the more difficult it
+          will be to test it, and this will adversely affect its
+          reliability.
+        </p>
+        <p>
+          V(G) is a measure of the control flow complexity of a method
+          or constructor.  It counts the number of branches in the body
+          of the method, defined as:
+          <ul>
+            <li>while statements;</li>
+            <li>if statements;</li>
+            <li>for statements.</li>
+            <li>What about ternary operators and and/or ?</li>
+          </ul>
+          This metric should be be able to computed in two different ways:
+          <ul>
+            <li>
+              MCC (considering case): each function has a base
+              complexity of 1, each if/do/while adds 1 and each switch
+              adds (n-1) where n is the number of branches in the switch
+              statement.
+            </li>
+            <li>
+              MCN (not considering case):  each function has a base
+              complexity of 1, each if/do/while adds 1 and each switch
+              adds 2.
+            </li>
+          </ul>
+          A number of 10 is usually admitted as a maximum value in
+          normal conditions.
+        </p>
+      </subsection>
+      <subsection name="Lines of Code - LOC">
+        <p>
+          This is perhaps the simplest of all the metrics to define and
+          compute.  Counting lines has a long history as a software
+          metric dating from before the rise of structured programming,
+          and it is still in widespread use today.  The size of a method
+          affects the ease with which it can be understood, its
+          re-usability and its maintainability. There are a variety of
+          ways that the size can be calculated. These include counting
+          all the lines of code, the number of statements, the blank
+          lines of code, the lines of commentary, and the lines
+          consisting only of syntax such as block delimiters.
+        </p>
+        <p>
+          This metric can also be used for sizing other constructs as
+          well, for example, the overall size of a Java class or package
+          can be measured by counting the number of source lines it
+          consists of.
+        </p>
+        <p>
+          LOC can be used to determine the size of a compilation unit (source file),
+          class or interface, method, constructor, or field.  It should be able to be
+          configured to ignore:
+          <ul>
+            <li>blank lines;</li>
+            <li>lines consisting only of comments;</li>
+            <li>lines consisting only of JavaDoc</li>
+            <li>lines consisting only of a header portion (regexp ?)</li>
+            <li>lines consisting only of opening and closing braces.</li>
+          </ul>
+          A number of 1000 is usually admitted as a maximum in a class/file.
+        </p>
+      </subsection>
+      <subsection name="Depth of Inheritance Hierarchy - DIT">
+        <p>
+          This metric calculates how far down the inheritance hierarchy
+          a class is declared. In Java all classes have java.lang.Object
+          as their ultimate superclass, which is defined to have a depth
+          of 1. So a class that immediately extends java.lang.Object has
+          a metric value of 2; any of its subclasses will have a value
+          of 3, and so on.
+        </p>
+        <p>
+          A class that is deep within the tree inherits more methods and
+          state variables, thereby increasing its complexity and making
+          it difficult to predict its behavior. It can be harder to
+          understand a system with many inheritance layers.
+        </p>
+        <p>
+          DIT is defined for classes and interfaces:
+          <ul>
+            <li>all interface types have a depth of 1;</li>
+            <li>the class java.lang.Object has a depth of 1;</li>
+            <li>all other classes have a depth of 1 + the depth of their super class.</li>
+          </ul>
+        </p>
+      </subsection>
+      <subsection name="Number of Attributes - NOA">
+        <p>
+          The number of distinct state variables in a class serves as
+          one measure of its complexity. The more state a class
+          represents the more difficult it is to maintain invariants for
+          it. It also hinders comprehensibility and reuse.
+        </p>
+        <p>
+          In Java, state can be exposed to subclasses through protected
+          fields, which entails that the subclass also be aware of and
+          maintain any invariants. This interference with the class's
+          data encapsulation can be a source of defects and hidden
+          dependencies between the state variables.
+        </p>
+        <p>
+          NOA is defined for classes and interfaces.  It counts the
+          number of fields declared in the class or interface.
+        </p>
+      </subsection>
+      <subsection name="Number of Remote Methods - NRM">
+        <p>
+          NRM is defined for classes.  A remote method call is defined
+          as an invocation of a method that is not declared in any of:
+          <ul>
+            <li>the class itself;</li>
+            <li>a class or interface that the class extends or implements;</li>
+            <li>a class or method that extends the class.</li>
+          </ul>
+          The value is the count of all the remote method calls in all
+          of the methods and constructors of the class.
+        </p>
+      </subsection>
+      <subsection name="Number of Local Methods - NLM">
+        <p>
+          NLM is defined for classes and interfaces.  A local method is
+          defined as a method that is declared in the class or
+          interface. NLM can be configured to include the local methods
+          of all of the class's superclasses.  Methods with public,
+          protected, package and private visibility can be independently
+          counted by setting configuration parameters.
+        </p>
+      </subsection>
+      <subsection name="Weighted Methods per Class - WMC">
+        <p>
+          If the number of methods in a class can be determined during
+          the design and modeling phase of a project, it can be used as
+          a predictor of how much time and effort is needed to develop,
+          debug and maintain it. This metric can be further refined by
+          incorporating a weighting for the complexity of each method.
+          The usual weighting is given by the cyclomatic complexity of
+          the method.
+        </p>
+        <p>
+          The subclasses of a class inherit all of its public and
+          protected methods, and possibly its package methods as well,
+          so the number of methods a class has directly impacts the
+          complexity of its subclasses. Classes with large numbers of
+          methods are often specific to a particular application,
+          reducing the ability to reuse them.
+        </p>
+        <p>
+          The definition of WMC is based upon NLM, and it provides the
+          same configuration parameters for counting inherited methods
+          and of varying visibility. The main difference is that NLM
+          always counts each method as 1, whereas WMC will weight each
+          method. There are two weighting schemes:
+          <ul>
+            <li>V(G) the cyclomatic complexity of the method is used as its weight.
+              Methods from class files are given a V(G) of 1.</li>
+            <li>the arity, or the number of parameters of the method are used to
+              determine the weight.</li>
+          </ul>
+        </p>
+      </subsection>
+      <subsection name="Response For Class - RFC">
+        <p>
+          The response set of a class is the set of all methods that can
+          be invoked as a result of a message sent to an object of the
+          class. This includes methods in the class's inheritance
+          hierarchy and methods that can be invoked on other objects.
+          The Response For Class metric is defined to be size of the
+          response set for the class. A class which provides a larger
+          response set is considered to be more complex than one with a
+          smaller response set.
+        </p>
+        <p>
+          One reason for this is that if a method call on a class can
+          result in a large number of different method calls on the
+          target and other classes, then it can be harder to test the
+          behavior of the class and debug problems. It will typically
+          require a deeper understanding of the potential interactions
+          that objects of the class can have with the rest of the
+          system.
+        </p>
+        <p>
+          RFC is defined as the sum of NLM and NRM for the class.  The
+          local methods include all of the public, protected, package
+          and private methods, but not methods declared only in a
+          superclass.
+        </p>
+      </subsection>
+      <subsection name="Data Abstraction Coupling - DAC">
+        <p>
+          DAC is defined for classes and interfaces.  It counts the
+          number of reference types that are used in the field
+          declarations of the class or interface.  The component types
+          of arrays are also counted.  Any field with a type that is
+          either a supertype or a subtype of the class is not counted.
+        </p>
+      </subsection>
+      <subsection name="Fan Out - FANOUT">
+        <p>
+          FANOUT is defined for classes and interfaces, constructors and
+          methods. It counts the number of reference types that are used
+          in:
+          <ul>
+            <li>field declarations;</li>
+            <li>formal parameters and return types;</li>
+            <li>throws declarations;</li>
+            <li>local variables.</li>
+          </ul>
+          The component types of arrays are also counted. Any type that
+          is either a supertype or a subtype of the class is not
+          counted.
+        </p>
+      </subsection>
+      <subsection name="Coupling Between Objects - CBO">
+        <p>
+          When one object or class uses another object or class they are
+          said to be coupled. One major source of coupling is that
+          between a superclass and a subclass. A coupling is also
+          introduced when a method or field in another class is
+          accessed, or when an object of another class is passed into or
+          out of a method invocation. Coupling Between Objects is a
+          measure of the non-inheritance coupling between two objects.
+        </p>
+        <p>
+          A high value of coupling reduces the modularity of the class
+          and makes reuse more difficult. The more independent a class
+          is the more likely it is that it will be possible to reuse it
+          in another part of the system. When a class is coupled to
+          another class it becomes sensitive to changes in that class,
+          thereby making maintenance for difficult. In addition, a class
+          that is overly dependent on other classes can be difficult to
+          understand and test in isolation.
+        </p>
+        <p>
+          CBO is defined for classes and interfaces, constructors and
+          methods. It counts the number of reference types that are used
+          in:
+          <ul>
+            <li>field declarations</li>
+            <li>formal parameters and return types</li>
+            <li>throws declarations</li>
+            <li>local variables</li>
+          </ul>
+          It also counts:
+          <ul>
+            <li>types from which field and method selections are made</li>
+          </ul>
+          The component types of arrays are also counted. Any type that
+          is either a supertype or a subtype of the class is not
+          counted.
+        </p>
+      </subsection>
+      <subsection name="Lack of Cohesion Of Methods - LCOM">
+        <p>
+          The cohesion of a class is the degree to which its methods are
+          related to each other. It is determined by examining the
+          pattern of state variable accesses within the set of methods.
+          If all the methods access the same state variables then they
+          have high cohesion; if they access disjoint sets of variables
+          then the cohesion is low. An extreme example of low cohesion
+          would be if none of the methods accessed any of the state
+          variables.
+        </p>
+        <p>
+          If a class exhibits low method cohesion it indicates that the
+          design of the class has probably been partitioned incorrectly,
+          and could benefit by being split into more classes with
+          individually higher cohesion. On the other hand, a high value
+          of cohesion (a low lack of cohesion) implies that the class is
+          well designed. A cohesive class will tend to provide a high
+          degree of encapsulation, whereas a lack of cohesion decreases
+          encapsulation and increases complexity.
+        </p>
+        <p>
+          Another form of cohesion that is useful for Java programs is
+          cohesion between nested and enclosing classes. A nested class
+          that has very low cohesion with its enclosing class would
+          probably better designed as a peer class rather than a nested
+          class.
+        </p>
+        <p>
+          LCOM is defined for classes. Operationally, LCOM takes each
+          pair of methods in the class and determines the set of fields
+          they each access. If they have disjoint sets of field accesses
+          increase the count P by one. If they share at least one field
+          access then increase Q by one. After considering each pair of
+          methods, LCOM = (P > Q) ? (P - Q) : 0
+        </p>
+        <p>
+          Indirect access to fields via local methods can be considered
+          by setting a metric configuration parameter.
+        </p>
+      </subsection>
+      <subsection name="Number Of Classes - NOC">
+        <p>
+          The overall size of the system can be estimated by calculating
+          the number of classes it contains. A large system with more
+          classes is more complex than a smaller one because the number
+          of potential interactions between objects is higher. This
+          reduces the comprehensibility of the system which in turn
+          makes it harder to test, debug and maintain.
+        </p>
+        <p>
+          If the number of classes in the system can be projected during
+          the initial design phase of the project it can serve as a base
+          for estimating the total effort and cost of developing,
+          debugging and maintaining the system.
+        </p>
+        <p>
+          The NOC metric can also usefully be applied at the package and
+          class level as well as the total system.
+        </p>
+        <p>
+          NOCL is defined for class and interfaces. It counts the number
+          of classes or interfaces that are declared. This is usually 1,
+          but nested class declarations will increase this number.
+        </p>
+      </subsection>
+      <subsection name="Abstractness - A">
+        <p>
+          A = abstract classes % total number of classes
+        </p>
+        <p>
+          This metric range is [0,1]. 0 means concrete and 1 means
+          completely abstract.
+        </p>
+      </subsection>
+      <subsection name="Afferent Couplings - Ca">
+        <p>
+          Number of classes outside a category that depend upon classes
+          within this category.
+        </p>
+      </subsection>
+      <subsection name="Efferent Couplings - Ce">
+        <p>
+          Number of classes inside this category that depend upon
+          classes outside this category
+        </p>
+      </subsection>
+      <subsection name="Instability - I">
+        <p>
+          I = Ce / (Ca + Ce): this metrics has the range [0,1], 0
+          indicates a maximally stable category, 1 indicates a maximally
+          instable category.
+        </p>
+      </subsection>
+      <subsection name="Normalized distance from the main sequence - Dn">
+        <p>
+          Dn = | A + I - 1) | The perpendicular distance of a category
+          from the main sequence.  This metrics ranges from [0,1]. Any
+          category that is not near zero can be reexamined and
+          restructured in order to define ones that are more reusable
+          and less sensitive to changes.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/project-descriptor.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/project-descriptor.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/project-descriptor.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,1185 @@
+<?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>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <author email="dion at apache.org">dIon Gillard</author>
+    <title>Maven Project Descriptors</title>
+  </properties>
+
+  <body>
+    <section name="Maven Project Descriptors">
+      <p>
+        Maven utilizes an XML project descriptor to generate an object
+        model for a project.  This object model can then be manipulated
+        using an interface to the Maven.
+        In the future, other interfaces may be provided such as a CLI or
+        JMX.  This document describes the valid XML elements and
+        attributes that constitute a Maven project descriptor.
+      </p>
+      <p>
+        For reference, the XML schema used to validate the project
+        descriptor is available at <a
+        href="http://maven.apache.org/xsd/maven-project-3.0.0.xsd">http://maven.apache.org/xsd/maven-project-3.0.0.xsd</a>.
+        In addition, a sample project descriptor is
+        presented in the <a href="../start/integrate.html">Integration</a>
+        document. For those wondering, yes, Maven's build system is built 
+        by Maven (we believe in eating our own dog food :)
+      </p>
+    </section>
+
+    <section name="Descriptor with links">
+      <source>
+<a href="#project" class="required">&lt;project&gt;</a>
+    <a href="#extend" class="optional">&lt;extend/&gt;</a>
+    <a href="#pomVersion">&lt;pomVersion/&gt;</a>
+    <a href="#id">&lt;id/&gt;</a>
+    <a href="#name" title="short name for the project">&lt;name/&gt;</a>
+    <a href="#groupId">&lt;groupId/&gt;</a>
+    <a href="#currentVersion">&lt;currentVersion/&gt;</a>
+    <a href="#organization">&lt;organization&gt;</a>
+        <a href="#organization_name">&lt;name/&gt;</a>
+        <a href="#organization_url">&lt;url/&gt;</a>
+        <a href="#organization_logo">&lt;logo/&gt;</a>
+    <a href="#organization">&lt;/organization&gt;</a>
+    <a href="#inceptionYear">&lt;inceptionYear/&gt;</a>
+    <a href="#package">&lt;package/&gt;</a>
+    <a href="#logo">&lt;logo/&gt;</a>
+    <a href="#gumpRepositoryId">&lt;gumpRepositoryId/&gt;</a>
+    <a href="#description">&lt;description/&gt;</a>
+    <a href="#shortDescription">&lt;shortDescription/&gt;</a>
+    <a href="#url">&lt;url/&gt;</a>
+    <a href="#issueTrackingUrl">&lt;issueTrackingUrl/&gt;</a>
+    <a href="#siteAddress">&lt;siteAddress/&gt;</a>
+    <a href="#siteDirectory">&lt;siteDirectory/&gt;</a>
+    <a href="#distributionSite">&lt;distributionSite/&gt;</a>
+    <a href="#distributionDirectory">&lt;distributionDirectory/&gt;</a>
+    <a href="#repository">&lt;repository&gt;</a>
+        <a href="#repository_connection">&lt;connection/&gt;</a>
+        <a href="#repository_developerConnection">&lt;developerConnection/&gt;</a>
+        <a href="#repository_url">&lt;url/&gt;</a>
+    <a href="#repository">&lt;/repository&gt;</a>
+    <a href="#versions">&lt;versions&gt;</a>
+        <a href="#version">&lt;version&gt;</a>
+            <a href="#version_id">&lt;id/&gt;</a>
+            <a href="#version_name">&lt;name/&gt;</a>
+            <a href="#version_tag">&lt;tag/&gt;</a>
+        <a href="#version">&lt;/version&gt;</a>
+    <a href="#versions">&lt;/versions&gt;</a>
+    <a href="#branches">&lt;branches&gt;</a>
+        <a href="#branch">&lt;branch&gt;</a>
+            <a href="#branch_tag">&lt;tag/&gt;</a>
+        <a href="#branch">&lt;/branch&gt;</a>
+    <a href="#branches">&lt;/branches&gt;</a>
+    <a href="#mailingLists">&lt;mailingLists&gt;</a>
+        <a href="#mailingList">&lt;mailingList&gt;</a>
+            <a href="#mailingList_name">&lt;name/&gt;</a>
+            <a href="#mailingList_subscribe">&lt;subscribe/&gt;</a>
+            <a href="#mailingList_unsubscribe">&lt;unsubscribe/&gt;</a>
+            <a href="#mailingList_archive">&lt;archive/&gt;</a>
+        <a href="#mailingList">&lt;/mailingList&gt;</a>
+    <a href="#mailingLists">&lt;/mailingLists&gt;</a>
+    <a href="#developers">&lt;developers&gt;</a>
+        <a href="#developer">&lt;developer&gt;</a>
+            <a href="#developer_name">&lt;name/&gt;</a>
+            <a href="#developer_id">&lt;id/&gt;</a>
+            <a href="#developer_email">&lt;email/&gt;</a>
+            <a href="#developer_organization">&lt;organization/&gt;</a>
+            <a href="#developer_roles">&lt;roles&gt;</a>
+                <a href="#developer_roles">&lt;role/&gt;</a>
+            <a href="#developer_roles">&lt;/roles&gt;</a>
+            <a href="#developer_url">&lt;url/&gt;</a>
+            <a href="#developer_timezone">&lt;timezone/&gt;</a>
+        <a href="#developer">&lt;/developer&gt;</a>
+    <a href="#developers">&lt;/developers&gt;</a>
+    <a href="#contributors">&lt;contributors&gt;</a>
+        <a href="#contributor">&lt;contributor&gt;</a>
+            <a href="#contributor_name">&lt;name/&gt;</a>
+            <a href="#contributor_email">&lt;email/&gt;</a>
+            <a href="#contributor_organization">&lt;organization/&gt;</a>
+            <a href="#contributor_roles">&lt;roles&gt;</a>
+                <a href="#contributor_roles">&lt;role/&gt;</a>
+            <a href="#contributor_roles">&lt;/roles&gt;</a>
+            <a href="#contributor_url">&lt;url/&gt;</a>
+            <a href="#contributor_timezone">&lt;timezone/&gt;</a>
+        <a href="#contributor">&lt;/contributor&gt;</a>
+    <a href="#contributors">&lt;/contributors&gt;</a>
+    <a href="#licenses">&lt;licenses&gt;</a>
+        <a href="#license">&lt;license&gt;</a>
+            <a href="#license_name">&lt;name/&gt;</a>
+            <a href="#license_url">&lt;url/&gt;</a>
+            <a href="#license_distribution">&lt;distribution/&gt;</a>
+        <a href="#license">&lt;/license&gt;</a>
+    <a href="#licenses">&lt;/licenses&gt;</a>
+    <a href="#dependencies">&lt;dependencies&gt;</a>
+        <a href="#dependency">&lt;dependency&gt;</a>
+            <a href="#dependency_id">&lt;id/&gt;</a>
+            <a href="#dependency_groupId">&lt;groupId/&gt;</a>
+            <a href="#dependency_artifactId">&lt;artifactId/&gt;</a>
+            <a href="#dependency_version">&lt;version/&gt;</a>
+            <a href="#dependency_jar">&lt;jar/&gt;</a>
+            <a href="#dependency_type">&lt;type/&gt;</a>
+            <a href="#dependency_url">&lt;url/&gt;</a>
+            <a href="#dependency_properties">&lt;properties&gt;</a>
+            <a href="#dependency_properties">&lt;/properties&gt;</a>
+        <a href="#dependency">&lt;/dependency&gt;</a>
+    <a href="#dependencies">&lt;/dependencies&gt;</a>
+    <a href="#build">&lt;build&gt;</a>
+        <a href="#build_nagEmailAddress">&lt;nagEmailAddress/&gt;</a>
+        <a href="#sourceDirectory">&lt;sourceDirectory/&gt;</a>
+        <a href="#sourceModifications">&lt;sourceModifications&gt;</a>
+            <a href="#sourceModification">&lt;sourceModification&gt;</a>
+                <a href="#sourceModification_className">&lt;className/&gt;</a>
+                <a href="#sourceModification_includes">&lt;includes&gt;</a>
+                    <a href="#sourceModification_includes">&lt;include/&gt;</a>
+                <a href="#sourceModification_includes">&lt;/includes&gt;</a>
+                <a href="#sourceModification_excludes">&lt;excludes&gt;</a>
+                    <a href="#sourceModification_excludes">&lt;exclude/&gt;</a>
+                <a href="#sourceModification_excludes">&lt;/excludes&gt;</a>
+            <a href="#sourceModification">&lt;/sourceModification&gt;</a>
+        <a href="#sourceModifications">&lt;/sourceModifications&gt;</a>
+        <a href="#build_unitTestSourceDirectory">&lt;unitTestSourceDirectory/&gt;</a>
+        <a href="#build_integrationUnitTestSourceDirectory">&lt;integrationUnitTestSourceDirectory/&gt;</a>
+        <a href="#build_aspectSourceDirectory">&lt;aspectSourceDirectory/&gt;</a>
+        <a href="#unitTest">&lt;unitTest&gt;</a>
+            <a href="#unitTest_includes">&lt;includes&gt;</a>
+                <a href="#unitTest_includes">&lt;include/&gt;</a>
+            <a href="#unitTest_includes">&lt;/includes&gt;</a>
+            <a href="#unitTest_excludes">&lt;excludes&gt;</a>
+                <a href="#unitTest_excludes">&lt;exclude/&gt;</a>
+            <a href="#unitTest_excludes">&lt;/excludes&gt;</a>
+            <a href="#unitTest_resources">&lt;resources&gt;</a>
+                <a href="#resource">&lt;resource&gt;</a>
+                    <a href="#resource_directory">&lt;directory/&gt;</a>
+                    <a href="#resource_targetPath">&lt;targetPath/&gt;</a>
+                    <a href="#resource_includes">&lt;includes&gt;</a>
+                        <a href="#resource_includes">&lt;include/&gt;</a>
+                    <a href="#resource_includes">&lt;/includes&gt;</a>
+                    <a href="#resource_excludes">&lt;excludes&gt;</a>
+                        <a href="#resource_excludes">&lt;exclude/&gt;</a>
+                    <a href="#resource_excludes">&lt;/excludes&gt;</a>
+                <a href="#resource">&lt;/resource&gt;</a>
+            <a href="#unitTest_resources">&lt;/resources&gt;</a>
+        <a href="#unitTest">&lt;/unitTest&gt;</a>
+        <a href="#resources">&lt;resources&gt;</a>
+            <a href="#resource">&lt;resource&gt;</a>
+                <a href="#resource_directory">&lt;directory/&gt;</a>
+                <a href="#resource_targetPath">&lt;targetPath/&gt;</a>
+                <a href="#resource_includes">&lt;includes&gt;</a>
+                    <a href="#resource_includes">&lt;include/&gt;</a>
+                <a href="#resource_includes">&lt;/includes&gt;</a>
+                <a href="#resource_excludes">&lt;excludes&gt;</a>
+                    <a href="#resource_excludes">&lt;exclude/&gt;</a>
+                <a href="#resource_excludes">&lt;/excludes&gt;</a>
+            <a href="#resource">&lt;/resource&gt;</a>
+        <a href="#resources">&lt;/resources&gt;</a>
+    <a href="#build">&lt;/build&gt;</a>
+    <a href="#reports">&lt;reports&gt;</a>
+        <a href="#report">&lt;report&gt;</a>
+    <a href="#reports">&lt;/reports&gt;</a>
+    <a href="#properties">&lt;properties/&gt;</a>
+<a href="#project">&lt;/project&gt;</a>
+      </source>
+    </section>
+    
+    <section 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>Element</th><th>Description</th></tr>
+        <tr>
+          <td><a name="extend">extend</a></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.
+            <source><![CDATA[<extend>${basedir}/../project.xml</extend>]]></source>
+          </td>
+        </tr>
+        <tr>
+          <td><a name="pomVersion">pomVersion</a></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><a name="id">id</a></td>
+          <td>
+            The short name of the project.  This value is used when
+            naming <a href="plugins/java/index.html">jars</a> and <a
+            href="plugins/dist/index.html">distribution files</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="name">name</a></td>
+          <td>
+            The full name of the project.  This value is used when
+            generating <a href="plugins/javadoc/index.html">JavaDoc</a>
+            titles.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="groupId">groupId</a></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="user-guide.html#Naming Conventions">user guide</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="currentVersion">currentVersion</a></td>
+          <td>
+            The current version of the project.  This value is used when
+            naming <a href="plugins/java/index.html">jars</a> and <a
+            href="plugins/dist/index.html">distribution files</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#organization">organization</a></td>
+          <td>
+            The organization to which the project belongs.  This element
+            describes various attributes of the organization.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="inceptionYear">inceptionYear</a></td>
+          <td>
+            The year of the project's inception specified with 4 digits.
+            This value is used when generating <a
+            href="plugins/javadoc/index.html">JavaDoc</a> copyright
+            notices.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="package">package</a></td>
+          <td>
+            The Java package name of the project.  This value is used
+            when generating <a
+            href="plugins/javadoc/index.html">JavaDoc</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="logo">logo</a></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><a name="gumpRepositoryId">gumpRepositoryId</a></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><a name="description">description</a></td>
+          <td>
+            Optional. A detailed description of the project. 
+            This description is used as the default to generate the
+            <a href="plugins/site/index.html">front page</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><a name="shortDescription">shortDescription</a></td>
+          <td>
+            A short description of the project.  The short description
+            should be limited to a single line.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="url">url</a></td>
+          <td>
+            The URL to the project's homepage.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="issueTrackingUrl">issueTrackingUrl</a></td>
+          <td>
+            Optional. The URL to the project's issue tracking system.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="siteAddress">siteAddress</a></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="plugins/site/index.html">deployed</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="siteDirectory">siteDirectory</a></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="plugins/site/index.html">deployed</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="distributionSite">distributionSite</a></td>
+          <td>
+            Optional. The server server where the final
+            distributions will be published.  This is used when the
+            distributions are
+            <a href="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><a name="distributionDirectory">distributionDirectory</a></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="plugins/dist/index.html">deployed</a>.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#repository">repository</a></td>
+          <td>
+            Information relating to the source configuration
+            management system used by this project.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#versions">versions</a></td>
+          <td>
+            Optional. Contains information on previous versions of the
+            project. This information is used when invoking the <a
+            href="plugins/dist/index.html"><code>maven:dist</code></a>
+            target.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#branches">branches</a></td>
+          <td>
+            Optional. Contains information on branches of the
+            project. This information is used when invoking the <a
+            href="plugins/dist/index.html"><code>maven:dist</code></a>
+            target.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#mailingLists">mailingLists</a></td>
+          <td>
+            Contains information about a project's mailing lists.  This
+            is used to generate the <a href="plugins/site/index.html">front
+            page</a> of the site's web site.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#developers">developers</a></td>
+          <td>
+            Describes the committers to a project.  This is used to
+            generate the <a href="plugins/site/index.html">Project Team</a>
+            page of the project's web site.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#contributors">contributors</a></td>
+          <td>
+            Describes the contributors to a project.  This is used to generate
+            the <a href="plugins/site/index.html">Project Team</a> page of
+            the project's web site.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#licenses">licenses</a></td>
+          <td>
+            Describes the licenses for this project.  This is used to generate
+            the <a href="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.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#dependencies">dependencies</a></td>
+          <td>
+            Describes the dependencies to a project.  This is used to
+            when building a project.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#build">build</a></td>
+          <td>
+            Describes the build environment of a project.  This is used
+            when invoking the build system.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#reports">reports</a></td>
+          <td>
+            Describes the reports that should be included as part of the
+            Maven-generated site.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="properties">properties</a></td>
+          <td>
+            Project properties that will be used by various plugins
+          </td>
+        </tr>
+      </table>
+    </section>
+    <section name="organization">
+      <p>
+        This element describes various attributes of the organziation to
+        which the project belongs.  These attributes are utilized when
+        documentation is created (for copyright notices and links).
+      </p>
+      <table>
+        <tr><th>Element</th><th>Description</th></tr>
+        <tr>
+          <td><a name="organization_name">name</a></td>
+          <td>
+            The full name of the organization.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="organization_url">url</a></td>
+          <td>
+            The URL to the organization's home page.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="organization_logo">logo</a></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>
+    </section>
+    <section name="repository">
+      <table>
+        <tr><th>Element</th><th>Description</th></tr>
+        <tr>
+          <td><a name="repository_connection">connection</a></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="plugins/dist/index.html">building versions</a>
+            from specific ID.
+            </p>
+            <p>The format of this element is as follows:
+              <pre>scm:&lt;provider&gt;:&lt;provider-parameters&gt;</pre>
+            </p>
+            <p>For cvs, the format for pserver repositories should be:
+              <source><pre>scm:cvs:pserver:user at host:/cvs/root:module-name</pre></source>
+            </p>
+            <p>
+              For local networked repositories (eg. pserver to local machine)
+              <source><pre>scm:cvs:lserver:user at host:/cvs/root:module-name</pre></source>
+            </p>
+            <p>
+              For ssh access:
+              <source><pre>scm:cvs:ext:user at host:/cvs/root:module-name</pre></source>
+              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>
+            <p>
+              Some cvs clients support other protocols, such as ntserver and extssh.
+              Here's an example using CVS NT and ntserver:
+              <source>scm|cvs|ntserver|user at server|e:\cvs|Deployment</source>
+              Note the use of the vertical bar as delimiter as the repository has a 
+              colon (<code>:</code>) in it.
+            </p>
+            <p>
+              For local file system repositories
+              <source><pre>scm:cvs:local:ignored:/cvs/root:module-name</pre></source>
+            </p>
+            <p>
+              For StarTeam access: 
+              <source><pre>scm:starteam:username:password at host:port/project/view/folder</pre></source>
+              All of this information can be had from either the StarTeam Universal 
+              Client (Tools->Server Administration->Server Properties) or from the 
+              administrator. 
+            </p>
+            <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:
+              <pre>scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:module-name</pre>
+            </p>
+            <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><a name="repository_developerConnection">developerConnection</a></td>
+          <td>
+            Optional. Just like connection, but for developers, i.e. this scm connection
+            will not be read only.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="repository_url">url</a></td>
+          <td>
+            Optional. The URL to the project's browsable CVS repository
+          </td>
+        </tr>
+      </table>
+    </section>
+    <section name="versions">
+        <p>This element describes each of the previous versions of the
+        project. Each version is described by a <code>version</code>
+        element
+        </p>
+        <subsection name="version">
+            <table>
+                <tr><th>Element</th><th>Description</th></tr>
+                <tr>
+                    <td><a name="version_id">id</a></td>
+                    <td>
+                      A unique identifier for a version.  This ID is
+                      used to specify the version that <a
+                      href="plugins/dist/index.html"><code>maven:dist</code></a>
+                      builds.
+                    </td>
+                </tr>
+                <tr>
+                    <td><a name="version_name">name</a></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><a name="version_tag">tag</a></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>
+            </table>
+        </subsection>
+    </section>
+    <section name="branches">
+        <p>This element describes each of the branches of the
+        project. Each branch is described by a <code>tag</code>
+        element
+        </p>
+        <subsection name="branch">
+            <table>
+                <tr><th>Element</th><th>Description</th></tr>
+                <tr>
+                    <td><a name="branch_tag">tag</a></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>
+    </section>
+    <section name="mailingLists">
+      <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>
+      <subsection name="mailingList">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="mailingList_name">name</a></td>
+            <td>The name of the mailing list.</td>
+          </tr>
+          <tr>
+            <td><a name="mailingList_subscribe">subscribe</a></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><a name="mailingList_unsubscribe">unsubscribe</a></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>archive</td>
+            <td>The link to a URL that can browse the archive.</td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="developers">
+      <p>
+        This element describes all of the developers associated with a
+        project.  Each developer is described by a
+        <code>developer</code> element, which is then described by
+        additional elements (described below).  The auto-generated site
+        documentation references this information.
+      </p>
+      <subsection name="developer">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="developer_name">name</a></td>
+            <td>The full name of the developer.</td>
+          </tr>
+          <tr>
+            <td><a name="developer_id">id</a></td>
+            <td>The username of the developer.</td>
+          </tr>
+          <tr>
+            <td><a name="developer_email">email</a></td>
+            <td>The email address of the developer.</td>
+          </tr>
+          <tr>
+            <td><a name="developer_organization">organization</a></td>
+            <td>The organization to which the developer belongs.</td>
+          </tr>
+          <tr>
+            <td><a name="developer_roles">roles</a></td>
+            <td>
+              The roles the developer plays in the project.  Each role is
+              describe by a <code>role</code> element, the body of which is a
+              role name.
+            </td>
+          </tr>
+          <tr>
+            <td><a name="developer_url">url</a></td>
+            <td>The URL for the homepage of the developer</td>
+          </tr>
+          <tr>
+            <td><a name="developer_timezone">timezone</a></td>
+            <td>
+              The timezone the developer is in. This is a number in the range
+              -14 to 14.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="contributors">
+      <p>
+        This element describes all of the contributors associated with a
+        project who are not developers.  Each contributor is described by a
+        <code>contributor</code> element, which is then describe by additional
+        elements (described below).  The auto-generated site documentation
+        references this information.
+      </p>
+      <subsection name="contributor">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="contributor_name">name</a></td>
+            <td>The full name of the contributor.</td>
+          </tr>
+          <tr>
+            <td><a name="contributor_email">email</a></td>
+            <td>The email address of the contributor.</td>
+          </tr>
+          <tr>
+            <td><a name="contributor_organization">organization</a></td>
+            <td>The organization to which the contributor belongs.</td>
+          </tr>
+          <tr>
+            <td><a name="contributor_roles">roles</a></td>
+            <td>
+              The roles the contributor plays in the project.  Each role is
+              describe by a <code>role</code> element, the body of which is a
+              role name.
+            </td>
+          </tr>
+          <tr>
+            <td><a name="contributor_url">url</a></td>
+            <td>The URL for the homepage of the contributor</td>
+          </tr>
+          <tr>
+            <td><a name="contributor_timezone">timezone</a></td>
+            <td>
+              The timezone the contributor is in. This is a number in the range
+              -14 to 14.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+
+    </section>
+    <section name="licenses">
+      <p>
+        This element describes all of the licenses for this project.  Each license is described by a
+        <code>license</code> element, which is then describe 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.
+      </p>
+      <subsection name="license">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="license_name">name</a></td>
+            <td>The full legal name of the license.</td>
+          </tr>
+          <tr>
+            <td><a name="license_url">url</a></td>
+            <td>The official url for the license text.</td>
+          </tr>
+          <tr>
+            <td><a name="license_distribution">distribution</a></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>
+        </table>
+      </subsection>
+
+    </section>
+    <section name="dependencies">
+      <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="user-guide.html#Remote Repository Layout">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>
+      <source>
+${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}
+      </source>
+      <p>
+        Where
+        <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>
+      </p>
+      <subsection name="dependency">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="dependency_id">id</a></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><a name="dependency_groupId">groupId</a></td>
+            <td>
+              The project group that produced the dependency, e.g. <code>jboss</code>.
+            </td>
+          </tr>
+          <tr>
+            <td><a name="dependency_artifactId">artifactId</a></td>
+            <td>
+              The unique id for an artifact produced by the project group, e.g.
+              <code>jboss-boot</code>
+            </td>
+          </tr>
+          <tr>
+            <td><a name="dependency_version">version</a></td>
+            <td>The version of the dependency., e.g. <code>3.2.1</code></td>
+          </tr>
+          <tr>
+            <td><a name="dependency_jar">jar</a></td>
+            <td>
+              The name of jar file if it doesn't respect 
+              <code>&lt;artifactId&gt;-&lt;version&gt;.jar pattern.</code></td>
+          </tr>
+          <tr>
+            <td><a name="dependency_type">type</a></td>
+            <td>
+              The type of dependency. This defaults to <code>jar</code>.
+              <p>
+                Other known and recognised dependency types are: 
+                <code>ejb</code> and <code>plugin</code>.
+              </p>
+            </td>
+          </tr>
+          <tr>
+            <td><a name="dependency_url">url</a></td>
+            <td>
+              The url of the dependency's homepage.
+              <p>
+                This url will be provided to the user if the jar file cannot be downloaded
+                from the central repository.
+              </p>
+            </td>
+          </tr>
+          <tr>
+            <td><a name="dependency_properties">properties</a></td>
+            <td>
+              Properties about the dependency. Various plugins allow you to 
+              <code>mark</code> dependencies with properties. For example the 
+              <a href="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>
+    <section name="build">
+      <p>
+        This element describes all of the build properties associated
+        with a project.  There are several elements that describe a
+        project's build environment.  Each one is described below:
+      </p>
+      <table>
+        <tr><th>Element</th><th>Description</th></tr>
+        <tr>
+          <td><a name="build_nagEmailAddress">nagEmailAddress</a></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="plugins/gump/">gump plugin</a>
+            target.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="sourceDirectory">sourceDirectory</a></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><a href="#sourceModifications">sourceModifications</a></td>
+          <td>
+            This element specifies how source code will be excluded or included
+            depending on the presence of a given class. e.g.
+          </td>
+        </tr>
+        <tr>
+          <td><a name="build_unitTestSourceDirectory">unitTestSourceDirectory</a></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><a name="build_integrationUnitTestSourceDirectory">integrationUnitTestSourceDirectory</a></td>
+          <td>
+            This element is deprecated and should no longer be used.
+            Initially it was used by the first Cactus plugin. Now
+            the location of the Cactus test sources is defined
+            through a plugin property. See the
+            <a href="http://maven.apache.org/reference/plugins/cactus/properties.html">Cactus 
+            plugin properties page</a>.            
+          </td>
+        </tr>
+        <tr>
+          <td><a name="build_aspectSourceDirectory">aspectSourceDirectory</a></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="plugins/aspectj/goals.html">Aspectj goals</a> document).
+            The path given is relative to the project descriptor.
+          </td>
+        </tr>
+        <tr>
+          <td><a href="#unitTest">unitTest</a></td>
+          <td>This element specifies unit tests associated with the project.</td>
+        </tr>
+        <tr>
+          <td><a href="#resources">resources</a></td>
+          <td>Describe the resources associated with the project</td>
+        </tr>
+      </table>
+      <subsection name="sourceModifications">
+        <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>
+        
+        <p><a name="sourceModification">sourceModification elements</a></p>
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="sourceModification_className">className</a></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><a name="sourceModification_includes"><a href="#includes">includes</a></a></td>
+            <td>Describe the files to be included if the class was not found</td>
+          </tr>
+          <tr>
+            <td><a name="sourceModification_excludes"><a href="#excludes">excludes</a></a></td>
+            <td>Describe the files to be excluded if the class was not found</td>
+          </tr>
+        </table>
+        <p>
+          <strong>Note</strong>: not all plugins support the sourceModifications element.
+        </p>
+        <p>
+          An example below always excludes the classes beginning with <code>EJS</code>
+          and <code>_</code>.
+        </p>
+        <source><![CDATA[
+    <sourceModifications>
+      <sourceModification>
+        <className>fakeClass</className>
+        <excludes>
+          <exclude>**/EJS*.java</exclude>
+          <exclude>**/_*.java</exclude>
+        </excludes>
+      </sourceModification>
+    </sourceModifications>
+]]></source>
+
+      </subsection>
+      <subsection name="unitTest">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="unitTest_includes"><a href="#includes">includes</a></a></td>
+            <td>Describe the includes unit tests</td>
+          </tr>
+          <tr>
+            <td><a name="unitTest_excludes"><a href="#excludes">excludes</a></a></td>
+            <td>Describe the excludes unit tests</td>
+          </tr>
+          <tr>
+            <td><a name="unitTest_resources"><a href="#resources">resources</a></a></td>
+            <td>Describe the resources associated with unit tests</td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="resources">
+        <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>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a href="#resource">resource</a></td>
+            <td>Each resource must be defined in a <tt>resource</tt> element.</td>
+          </tr>
+        </table>
+        <p>
+          Here's an example <code>resources</code> block
+        </p>
+        <source><![CDATA[
+    <!-- J A R  R E S O U R C E S -->
+    <!-- Resources that are packaged up inside the JAR file -->
+    <resources>
+      <resource>
+        <directory>${basedir}/src/resources/misc</directory>
+        <includes>
+          <include>*.xsd</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>${basedir}/src/resources/logging</directory>
+        <includes>
+          <include>log4j.properties</include>
+        </includes>
+      </resource>
+    </resources>
+]]></source>
+      </subsection>
+      
+      <subsection name="resource">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="resource_directory">directory</a></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><a name="resource_targetPath">targetPath</a></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><a name="resource_includes"><a href="#includes">includes</a></a></td>
+            <td>Describe the includes files to the project</td>
+          </tr>
+          <tr>
+            <td><a name="resource_excludes"><a href="#excludes">excludes</a></a></td>
+            <td>Describe the excludes files to the project</td>
+          </tr>
+          <tr>
+            <td><a name="resource_filtering">filtering</a></td>
+            <td>Boolean. Describe if resources are filtered or not.</td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="includes">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="include">include</a></td>
+            <td>
+              This element specifies an 
+              <a href="http://ant.apache.org/manual/CoreTypes/patternset.html">Ant pattern</a>
+              of files to include in a list.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="excludes">
+        <table>
+          <tr><th>Element</th><th>Description</th></tr>
+          <tr>
+            <td><a name="exclude">exclude</a></td>
+            <td>
+              This element specifies an 
+              <a href="http://ant.apache.org/manual/CoreTypes/patternset.html">Ant pattern</a>
+              of files to exclude from a list.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="reports">
+      <p>
+        This element includes the specification of reports to be
+        included in a Maven-generated site.  These reports will be run
+        when a user executes <code>maven site</code>.  All of the
+        reports will be included in the navigation bar for browsing in
+        the order they are specified.
+      </p>
+      <table>
+        <tr><th>Element</th><th>Description</th></tr>
+        <tr>
+          <td><a name="report">report</a></td>
+          <td>
+            The name of the report that should be run when the site is
+            generated.  There is an established naming convention that
+            is to be used when specifying reports.  If you want the
+            report that is generated by a plugin called
+            <code>xyz</code>, then you would specify the following for
+            the value of this element: <code>maven-xyz-plugin</code>.
+          </td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/reference/user-guide.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/reference/user-guide.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/reference/user-guide.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,1817 @@
+<?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>User Guide</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+    <section name="User Guide">
+      <p>
+        <ol>
+          <li><a href="#About this Guide">About this Guide</a></li>
+          <li><a href="#Introduction">Introduction</a></li>
+          <li><a href="#The Project Object Model">Project Object Model</a></li>
+          <li><a href="#POM Processing">POM Processing</a></li>
+            <ol>
+              <li><a href="#POM Interpolation">POM Interpolation</a></li>
+              <li><a href="#POM Inheritance">POM Inheritance</a></li>
+            </ol>
+          <li><a href="#Using Plugin-ins">Using Plug-ins</a></li>
+          <li><a href="#maven.xml">The maven.xml file</a>
+            <ol>
+              <li><a href="#Sample maven.xml">Sample maven.xml</a></li>
+              <li><a href="#The project element">The project element</a></li>
+              <li><a href="#Goals">Goals</a></li>
+              <li><a href="#Jelly coding">Jelly coding</a></li>
+            </ol>
+          </li>
+          <li><a href="#Maven Setup">Maven Setup</a>
+            <ol>
+              <li><a href="#Properties Processing">Properties Processing</a></li>
+              <li><a href="#Plug-in Properties">Plug-in Properties</a></li>
+              <li><a href="#Behavioural Properties">Behavioural Properties</a></li>
+              <li><a href="#Using Proxies">Using Proxies</a></li>
+              <li><a href="#Using Multiple Remote Repositories">Using Multiple Remote Repositories</a></li>
+            </ol>
+          </li>
+          <li><a href="#Project Setup">Setup</a>
+            <ol>
+              <li><a href="#Starting a New Project">Starting a New Project</a></li>
+            </ol>
+          </li>
+          <li><a href="#Building">Building</a>
+            <ol>
+              <li><a href="#Build Lifecyle">Build Lifecycle</a></li>
+              <li><a href="#Storing JARs in CVS">Storing JARs in CVS</a></li>
+              <li><a href="#Overriding Stated Dependencies">Overriding Stated Dependencies</a></li>
+              <li><a href="#Using SNAPSHOT Dependencies">Using SNAPSHOT Dependencies</a></li>
+              <li><a href="#Multi Project Builds and the Reactor">Multi Project Builds and the Reactor</a></li>
+              <li><a href="#Building Offline">Building Offline</a></li>
+              <li><a href="#Summary of CLI Options">Summary of CLI Options</a></li>
+            </ol>
+          </li>
+          <li><a href="#Testing">Testing</a>
+            <br/>
+            <ol>
+              <li><a href="#Test Resources">Test Resources</a></li>
+              <li><a href="#Running a Single Test">Running a Single Test</a></li>
+            </ol>
+          </li>
+          <li><a href="#Packaging">Packaging</a>
+            <br/>
+            <ol>
+              <li><a href="#JAR Resources">JAR Resources</a></li>
+            </ol>
+          </li>
+          <li><a href="#Deploying">Deploying</a>
+            <br/>
+            <ol>
+              <li><a href="#Resolving SNAPSHOT Dependencies">Resolving SNAPSHOT Dependencies</a></li>
+              <li><a href="#Copying Dependency JARs">Copying Dependency JARs</a></li>
+            </ol>
+          </li>
+          <li><a href="#Naming Conventions">Naming Conventions</a></li>
+          <li><a href="#Remote Repository Layout">Remote Repository Layout</a></li>
+          <li><a href="#Local Repository Layout">Local Repository Layout</a></li>
+          <li><a href="#Site Generation">Site Generation</a></li>
+            <ol>
+              <li><a href="#Colors">Colors</a></li>
+              <li><a href="#Stylesheets">Stylesheets</a></li>
+              <li><a href="#Reports">Reports</a></li>
+            </ol>
+        </ol>
+      </p>
+    </section>
+
+    <section name="About this Guide">
+      <p>
+        The Maven User Guide is intended to help developers get acquainted with Maven
+        by providing thorough descriptions and examples. If you have any
+        suggestions or comments please feel free to post them to the
+        <a href="mailto:users at maven.apache.org">Maven users' list</a>.
+      </p>
+      <p>
+        Thanks for choosing Maven!
+      </p>
+    </section>
+
+    <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-work work of Java developers easier and generally
+        help with the comprehension of any Java-based project.
+      </p>
+
+    </section>
+
+    <section name="The Project Object Model">
+      <p>
+        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,
+        source cross-references and anything else that may be provided by a
+        Maven plug-in are all controlled by your POM.
+      </p>
+      <p>
+        For a complete reference of the project file, see <a href="project-descriptor.html">the
+        project descriptor</a>.
+      </p>
+    </section>
+
+    <section name="POM Processing">
+      <p>
+        This document outlines how the POM is processing during Maven
+        execution. Some simple forms of POM inheritance are shown, and the
+        interpolation mechanism is demonstrated.
+      </p>
+
+      <subsection name="POM Interpolation">
+        <p>
+          The POM, in its familiar project.xml form, is now processed as a Jelly
+          script. In the majority of cases users won't care that the project.xml
+          is really a Jelly script under the covers but it does allow the use
+          interpolated values if you wish. I would rather not see logic start
+          cropping up in project.xml files but the flexibility is there now that
+          the project.xml file is a stealth Jelly script :-) Below is an example
+          of what you can do:
+        </p>
+
+        <source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project>
+
+  <pomVersion>3</pomVersion>
+  <groupId>maven</groupId>
+  <artifactId>maven</artifactId>
+  <name>Maven</name>
+  <currentVersion>1.0-b5-dev</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.${pom.artifactId}</package>
+  <logo>/images/${pom.artifactId}.jpg</logo>
+
+  <description>Maven is a project that was created in ${pom.inceptionYear}.</description>
+  <shortDescription>${pom.name} is a Java Project Management Tool</shortDescription>
+
+</project>]]>
+        </source>
+
+      </subsection>
+
+      <subsection name="POM Inheritance">
+        <p>
+          There is now a simple form of inheritance available for use when using
+          the POM in its familiar project.xml form. Below is an example of what
+          you can do:
+        </p>
+
+<source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+  <project>
+    <extend>project.xml</extend>
+    
+    <groupId>super-extendo</groupId>
+    <artifactId>super-extendo</artifactId>
+    <name>Super Extendo</name>
+
+    <build>
+      <unitTest>
+        <includes>
+          <include>**/*Test*.java</include>
+        </includes>
+        <excludes>
+          <exclude>**/TestAll.java</exclude>
+          <exclude>**/*Abstract*.java</exclude>
+        </excludes>
+      </unitTest>
+    </build>
+  </project>
+]]></source>
+
+        <p>
+          Currently the resolution of the parent is fairly dumb and there hasn't been any
+          testing beyond a single level of extension. But even this level
+          of extension coupled with interpolation can potentially buy you a lot.
+          The motivation for this was an attempt at simplifying building for the
+          commons.
+        </p>
+
+        <p>
+          You could define something like this for the master template:
+        </p>
+
+        <source><![CDATA[
+<project>
+  <pomVersion>3</pomVersion>
+  <groupId>commons</groupId>
+  <artifactId>commons-master</artifactId>
+  <name>Commons Master Maven POM</name>
+
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://www.apache.org</url>
+  </organization>
+
+  <gumpRepositoryId>jakarta</gumpRepositoryId>
+
+  <url>http://jakarta.apache.org/commons/${pom.artifactId}.html</url>
+  <issueTrackingUrl>http://nagoya.apache.org/</issueTrackingUrl>
+  <siteAddress>jakarta.apache.org</siteAddress>
+  <siteDirectory>/www/jakarta.apache.org/commons/${pom.artifactId}/</siteDirectory>
+  <distributionDirectory>
+    /www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId}/
+  </distributionDirectory>
+
+  <repository>
+    <connection>
+      scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:jakarta-commons/${pom.artifactId}
+    </connection>
+    <url>http://cvs.apache.org/viewcvs/jakarta-commons/${pom.artifactId}/</url>
+  </repository>
+  ...
+</project>
+ ]]></source>
+
+        <p>
+          And for a child you could have something like this:
+        </p>
+
+<source><![CDATA[
+<project>
+  <groupId>commons-betwixt</groupId>
+  <artifactId>commons-betwixt</artifactId>
+  <name>Betwixt</name>
+  ...
+</project>
+]]></source>
+
+        <p>
+          And what you will get is the child's ${pom.artifactId} value substituted into
+          the parent template. So for projects like the commons where you have
+          many builds that are basically set up the same way you can use a master
+          template and leave very little in the child's project.xml file.
+        </p>
+        <p>
+          This should also make it easier to deal with a single project producing
+          multiple JAR artifacts. I plan to test the inheritance out in the
+          commons now as the project.xml won't interfere with the standard Ant
+          builds.
+        </p>
+        <p>
+          If you're wondering what the DVSL reports will look like using this
+          mechanism then you're on the ball! I have changed the DVSL reporting to
+          work on the POM itself i.e. the DVSL transformation is performed on a
+          Java object. This was necessary in order for reports to come out
+          correctly when interpolation and inheritance are involved. You can't use
+          the child template listed above and expect it to work. We need to use
+          the fully resolved POM. As far as I can tell this is working. The
+          process I'm using is probably not the most efficient but it can be
+          improved and we'll probably break even because the POM is processed only
+          once now (that's the theory anyway, I might missed a few bits) and can
+          be used everywhere, or at least that's what I tried to do in this pass.
+        </p>
+        <p>
+          If you don't use inheritance or interpolation then everything should
+          work as per usual. The maven site itself is looking ok and the last few
+          sites deployed have used what I'm going to commit later tonight.
+        </p>
+      </subsection>
+    </section>
+
+    <section name="Using Plug-ins">
+      <p>
+        Maven is in essence a small core that works with a satellite of
+        plug-ins. All functionality provided by Maven is done so in the form
+        of plug-ins.
+      </p>
+    </section>
+
+    <section name="maven.xml">
+      <p>
+        The file <code>maven.xml</code> in your project is a 'special' file
+        that Maven looks for during processing.
+      </p>
+      <p>
+        This file is the place that you can add extra processing to the Maven
+        build, or attach your own code before or after a Maven 'goal', such as
+        <code>jar</code> or <code>test</code> is executed.
+      </p>
+      <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 maven.xml.
+      </p>
+      <p>
+        The <code>goal</code> functionality Maven uses is provided by the
+        <code>werkz</code> tag library that is built into werkz. For more information, see this 
+        <a href="http://wiki.codehaus.org/maven/WerkzTagDocumentation">wiki page</a>.
+      </p>
+      <subsection name="Sample maven.xml">
+        <p>
+          <strong>Note</strong> the sample file below is expected to fail, as
+          Maven doesn't define a 'compile' goal by default.
+        </p>
+        <p>
+          Here's the sample maven.xml
+        </p>
+<source><![CDATA[
+<project
+  default="nightly-build"
+  xmlns:j="jelly:core"
+  xmlns:u="jelly:util">
+
+  <goal name="nightly-build">
+    <!-- Any ant task, or jelly tags can go here thanks to jeez -->
+    <j:set var="goals" value="compile,test" />
+    <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>
+          You'll notice that there are a few items here and we'll explain
+          them in order of appearance.
+        </p>
+      </subsection>
+      <subsection name="The project element">
+        <p>
+          The project element, &lt;project&gt;, is the root element for
+          any <code>maven.xml</code> file.
+        </p>
+        <p>
+          The project element specifies a <code>default</code> attribute,
+          default="nightly-build", that tells Maven to attain the
+          <code>nightly-build</code> goal if the user simply executes
+          <code>maven</code> with no arguments
+        </p>
+        <p>
+          The default attribute is followed by several XML namespace declarations,
+          e.g.
+          <ol>
+            <li>
+              <code>xmlns:j="jelly:core"</code>
+              <p>
+                This tells Jelly that all XML elements prefixed with <code>j:</code>
+                are part of the predefined tag library registered with jelly
+                under the identifier <code>core</code>
+              </p>
+            </li>
+            <li>
+              <code>xmlns:u="jelly:util"</code>
+              <p>
+                This tells Jelly that all XML elements prefixed with <code>u:</code>
+                are part of the predefined tag library registered with jelly
+                under the identifier <code>util</code>.
+              </p>
+            </li>
+          </ol>
+        </p>
+        <p>
+          Any Jelly tag library you want to use in your <code>maven.xml</code>
+          <strong>must</strong> be declared in the project element and given
+          a namespace prefix
+        </p>
+        <p>
+          Maven pre-registers the <code>jeez</code> tag library with an empty prefix.
+          This tag library groups the <code>ant</code> and <code>werkz</code> tag
+          libraries into one namespace. This allows Maven scripts to use any werkz
+          or ant tag with no XML namespace, and makes migrating from ant a simple
+          process.
+        </p>
+      </subsection>
+      <subsection name="Goals">
+        <p>
+          A goal is a
+          <a href="http://jakarta.apache.org/commons/jelly/tags.html#jelly:werkz">werkz tag</a>
+          similar in nature to an Ant <code>target</code>; it's a named container for
+          a set of tags to be executed.
+        </p>
+        <p>
+          Since the <code>jeez</code> tag library is pre-registered by maven, a goal
+          may include any valid <code>Ant</code> tag in it's body.
+        </p>
+        <p>
+          To execute a goal defined in your <code>maven.xml</code>, you simply provide
+          the goal name to Maven from the command prompt. To execute the
+          <code>nightly-build</code> defined in our sample, you would use:
+          <source>maven nightly-build</source>
+        </p>
+        <p>
+          Maven plugins prefix the goals they define with the plugin name, so that
+          they wont clash with your goals, e.g. <code>jar:jar</code> is the
+          goal defined by the <code>jar</code> plugin to create a jar file
+          from your project
+        </p>
+      </subsection>
+      <subsection name="Jelly coding">
+        <p>
+          Inside of each goal, there are Jelly tags that you provide
+          to perform functionality. Let's look at the code from our sample
+        </p>
+        <h5>set</h5>
+        <source><![CDATA[<j:set var="goals" value="compile,test" />]]></source>
+        <p>
+          This line is a jelly core tag, as it is using the <code>j:</code>
+          prefix defined in the project element, called <code>set</code>.
+        </p>
+        <p>
+          The <code>set</code> tag sets the jelly variable named by the
+          <code>var</code> attribute to the value given by the <code>value</code>
+          attribute. Unlike Ant properties, Jelly variables can be changed once
+          they have been given a value.
+        </p>
+        <h5>mkdir</h5>
+        <source><![CDATA[<mkdir dir="${maven.build.dir}" />]]></source>
+        <p>
+          This executes the Ant task <code>mkdir</code>, which simply creates a directory.
+          The directory is specified using a variable, <code>${maven.build.dir}</code>
+        </p>
+        <h5>tokenize</h5>
+        <source><![CDATA[<u:tokenize var="goals" delim=",">${goals}</u:tokenize>]]></source>
+        <p>
+          This executes the Jelly <code>tokenize</code> tag. The tag is found in the
+          Jelly predefined <code>util</code> tag library as per the <code>u:</code>
+          prefix defined on the project element.
+        </p>
+        <p>
+          The tokenize tag will tokenize the contents of it's body into a list for
+          later processing.
+            <ul>
+              <li>
+                The <code>var</code> attribute is the variable that will
+                be assigned the new list.
+              </li>
+              <li>
+                The <code>delim</code> attribute is the delimiter used to separate
+                items in the string
+              </li>
+              <li>
+                The body of the <code>tokenize</code> tag in this case is a variable,
+                <code>goals</code>, set a couple of lines previously, which contains
+                compile and test separated by commas
+              </li>
+            </ul>
+        </p>
+        <h5>forEach</h5>
+<source><![CDATA[
+<j:forEach items="${goals}" var="goal" indexVar="goalNumber">
+  Now attaining goal number ${goalNumber}, which is ${goal}
+  <attainGoal name="${goal}" />
+</j:forEach>]]></source>
+        <p>
+          The forEach tag provides a simple loop facility. It executes it's body
+          each time through the loop.
+          <ul>
+            <li>
+              The <code>items</code> attribute is an expression that is evaluated to get the
+              the collection to be iterated through
+            </li>
+            <li>
+              The <code>var</code> attribute specifies the variable to place
+              each item in, as the collection is processed. The variable is available
+              to the <code>forEach</code> body.
+            </li>
+            <li>
+              The <code>indexVar</code> attribute specifies the variable to place
+              a counter of the number of elements (zero-based) processed
+            </li>
+          </ul>
+        </p>
+        <p>
+          The body of the <code>forEach</code> tag outputs some text about the goal
+          and the number being processed and attempts to attain that goal using the
+          <code>attainGoal</code> werkz tag.
+        </p>
+      </subsection>
+    </section>
+
+    <section name="Maven Setup">
+
+      <subsection name="Properties Processing">
+        <p>
+          The properties files in Maven are processed in the following order:
+        </p>
+
+        <p>
+          <ul>
+            <li>${project.home}/project.properties</li>
+            <li>${project.home}/build.properties</li>
+            <li>${user.home}/build.properties</li>
+          </ul>
+        </p>
+
+        <p>
+          Where the last definition wins. So, Maven moves through this sequence
+          of properties files overridding any previously defined properties with
+          newer definitions. In this sequence your <code>${user.home}/build.properties</code>
+          has the final say in the list of properties files processed. We will call the
+          list of properties files that Maven processes the standard properties file set.
+        </p>
+
+        <p>
+          In addition, System properties are processed after the above chain of
+          properties files are processed. So, a property specified on the CLI
+          using the <code>-Dproperty=value</code> convention will override any
+          previous definition of that property.
+        </p>
+
+      </subsection>
+
+      <subsection name="Plug-in Properties">
+        <p>
+          Plug-ins are loaded after the above sequence of properties files
+          are processed but the <code>PluginManager</code> is instructed not
+          to override values that have been previously set. This works in
+          the opposite way of Maven's normal properties processing because
+          the Plug-ins can only be processed after the rest of Maven's internals
+          are initialized but we want it to appear like:
+        </p>
+
+        <p>
+          <ul>
+            <li>Plug-in default properties are processed</li>
+            <li>${project.home}/project.properties are processed</li>
+            <li>${project.home}/build.properties are processed</li>
+            <li>${user.home}/build.properties are processed</li>
+          </ul>
+       </p>
+
+       <p>
+         So even though Plug-ins are processed later in the initialization
+         cycle you can override a plug-in's default properties as you can with
+         any other property. For example, the Checkstyle plug-in defines the
+         following default property:
+       </p>
+
+<source><![CDATA[
+maven.checkstyle.format = sun
+]]></source>
+
+       <p>
+         Which, as you might guess, tells the Checkstyle plug-in to use
+         Sun's coding conventions as the default format. But you can override
+         this value in any of the files in standard properties fileset. So if
+         in your <code>${project.home}/project.properties</code> you place the
+         following value:
+       </p>
+
+<source><![CDATA[
+maven.checkstyle.format = turbine
+]]></source>
+
+       <p>
+         Then the Checkstyle plug-in will use Turbine's coding conventions.
+       </p>
+
+      </subsection>
+
+      <subsection name="Behavioural Properties">
+        <p>
+          The following is a list of properties that change the way Maven works.
+        </p>
+
+        <p>
+          <table>
+            <tr>
+              <th>Property</th>
+              <th>Description</th>
+              <th>Default Value</th>
+            </tr>
+
+            <tr>
+              <td>maven.build.dest</td>
+              <td>
+                The directory where generated classes go.
+              </td>
+              <td>${maven.build.dir}/classes</td>
+            </tr>
+
+            <tr>
+              <td>maven.build.dir</td>
+              <td>
+                The directory where generated output, e.g. class files, documentation,
+                unit test reports etc goes
+                <p>
+                  <strong>CAUTION:</strong>
+                  Changing default maven.build.dir value in your ${user.home}/build.properties
+                  might allow one some control of individual project directory layouts.
+                  However this practice will interfere with the bootstrap of Maven from source
+                  code, as it expects the jar created to be in <code>${basedir}/target/</code>
+                </p>
+              </td>
+              <td>${basedir}/target</td>
+            </tr>
+
+            <tr>
+              <td>maven.build.src</td>
+              <td>
+                The directory where generated source goes.
+              </td>
+              <td>${maven.build.dir}/src</td>
+            </tr>
+
+            <tr>
+              <td>maven.conf.dir</td>
+              <td>
+                The directory that holds configuration files
+              </td>
+              <td>${basedir}/conf</td>
+            </tr>
+
+            <tr>
+              <td>maven.docs.dest</td>
+              <td>
+                The output directory for the generated html from reports.
+              </td>
+              <td>${maven.build.dir}/docs</td>
+            </tr>
+
+            <tr>
+              <td>maven.docs.omitXmlDeclaration</td>
+              <td>
+                Whether generated documentation should have an xml declaration, e.g.
+                <source>&lt;?xml version="1.0"?&gt;</source>
+              </td>
+              <td>false</td>
+            </tr>
+
+            <tr>
+              <td>maven.docs.outputencoding</td>
+              <td>
+                The character encoding for generated documentation
+              </td>
+              <td>ISO-8859-1</td>
+            </tr>
+
+            <tr>
+              <td>maven.docs.src</td>
+              <td>
+                The directory for user supplied documentation.
+              </td>
+              <td>${basedir}/xdocs</td>
+            </tr>
+
+            <tr>
+              <td>maven.gen.docs</td>
+              <td>
+                The directory where generated xdocs that need to be transformed to html
+                are placed.
+              </td>
+              <td>${maven.build.dir}/generated-xdocs</td>
+            </tr>
+
+            <tr>
+              <td>maven.home.local</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>${user.home}/.maven</td>
+            </tr>
+
+            <tr>
+              <td>maven.mode.online</td>
+              <td>
+                Whether you are connected to the internet or not.
+              </td>
+              <td>true</td>
+            </tr>
+
+            <tr>
+              <td>maven.plugin.dir</td>
+              <td>
+                Where maven can find it's plugins
+              </td>
+              <td>${maven.home}/plugins</td>
+            </tr>
+
+            <tr>
+              <td>maven.plugin.user.dir</td>
+              <td>
+                Where maven can find plugins for this user only.
+              </td>
+              <td>${maven.home.local}/plugins</td>
+            </tr>
+
+            <tr>
+              <td>maven.plugin.unpacked.dir</td>
+              <td>
+                Where maven expands installed plugins for processing.
+              </td>
+              <td>${maven.home.local}/cache</td>
+            </tr>
+
+            <tr>
+              <td>maven.repo.central</td>
+              <td>
+                This is the host that Maven will attempt to
+                deploy the distribution to during a
+                dist:deploy.
+              </td>
+              <td>None</td>
+            </tr>
+
+            <tr>
+              <td>maven.repo.central.directory</td>   
+              <td>
+                This is the directory that Maven will copy the
+                distribution to during a dist:deploy.
+              </td>
+              <td>None</td>
+            </tr>
+
+            <tr>
+              <td>maven.repo.local</td>
+              <td>
+                The repository on the local machine maven should use to store
+                downloaded artifacts (jars etc).
+              </td>
+              <td>${maven.home.local}/repository</td>
+            </tr>
+
+            <tr>
+              <td>maven.repo.remote</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">mirrors</a>.
+              </td>
+              <td>http://www.ibiblio.org/maven</td>
+            </tr>
+
+            <tr>
+              <td>maven.repo.remote.enabled</td>
+              <td>
+                Whether or not a remote repository should be used.
+              </td>
+              <td>true</td>
+            </tr>
+
+            <tr>
+              <td>maven.scp.executable</td>
+              <td>
+                The executable to use for secure copies
+              </td>
+              <td>scp</td>
+            </tr>
+
+            <tr>
+              <td>maven.src.dir</td>
+              <td>
+                The base directory for source code.
+              </td>
+              <td>${basedir}/src</td>
+            </tr>
+
+            <tr>
+              <td>maven.ssh.executable</td>
+              <td>
+                The executable to use for executing commands remotely
+              </td>
+              <td>ssh</td>
+            </tr>
+
+          </table>
+        </p>
+
+      </subsection>
+
+      <subsection name="Using Proxies">
+        <p>
+          If you only have access via a proxy then Maven obeys the following
+          properties.
+        </p>
+
+        <table>
+          <tr>
+            <th>Proxy Properties</th>
+            <th>Description</th>
+          </tr>
+          <tr>
+            <td>maven.proxy.host</td>
+            <td>
+              The IP or address of your proxy.
+            </td>
+          </tr>
+          <tr>
+            <td>maven.proxy.port</td>
+            <td>
+              The port number of your proxy.
+            </td>
+          </tr>
+          <tr>
+            <td>maven.proxy.username</td>
+            <td>
+              User name if your proxy requires authentication.
+            </td>
+          </tr>
+          <tr>
+            <td>maven.proxy.password</td>
+            <td>
+              Password if your proxy requires authentication.
+            </td>
+          </tr>
+          <tr>
+            <td>maven.proxy.ntlm.host</td>
+            <td>
+              The host to use if you are using NTLM authentication.
+            </td>
+          </tr>
+          <tr>
+            <td>maven.proxy.ntlm.domain</td>
+            <td>
+              The NT domain to use if you are using NTLM authentication.
+            </td>
+          </tr>
+        </table>
+
+        <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>
+
+<source><![CDATA[
+## ----------------------------------------------------------
+## ${user.home}/build.properties
+## ----------------------------------------------------------
+.
+.
+maven.proxy.host = my.proxyserver.com
+maven.proxy.port = 8080
+maven.proxy.username = username
+maven.proxy.password = password
+.
+.
+]]></source>
+
+      </subsection>
+
+      <subsection name="Using Multiple Remote Repositories">
+        <p>
+          You can specify the use of multiple remote repositories in any of
+          the properties files processed by Maven by using something like
+          the following:
+        </p>
+
+<source><![CDATA[
+maven.repo.remote = http://www.ibiblio.org/maven/,http://www.mycompany.com/maven/
+]]></source>
+
+      </subsection>
+
+    </section>
+
+    <section name="Project Setup">
+        <subsection name="Starting a New Project">
+          <p>
+            If you using Maven for the first time or starting a new project you
+            can use the GenApp plugin to automate the creation of a Maven
+            project tree.
+          </p>
+<source><![CDATA[
+maven -Dpackage=com.mycompany.app genapp
+]]></source>
+
+          <p>
+            When you execute this command you will see something like the
+            following:
+          </p>
+<source><![CDATA[
+ __  __
+|  \/  |__ Jakarta _ ___
+| |\/| / _ \ V / -_) ' \  ~ intelligent projects ~
+|_|  |_\__,_|\_/\___|_||_|   v. 1.0-beta-9
+
+
+    [mkdir] Created dir: <target-directory>/genapp/src/java/com/mycompany/app
+    [copy] Copying 1 file to <target-directory>/genapp/src/java/com/mycompany/app
+    [mkdir] Created dir: <target-directory>/genapp/src/test/com/mycompany/app
+    [copy] Copying 3 files to <target-directory>/genapp/src/test/com/mycompany/app
+    [copy] Copying 2 files to <target-directory>/genapp
+    [copy] Copying 1 file to <target-directory>/genapp/src/conf
+    BUILD SUCCESSFUL
+    Total time:  3 seconds
+]]></source>
+
+          <p>
+            When the command finishes executing you should have a complete
+            project tree that looks something like the following:
+          </p>
+<source><![CDATA[
+.
+|-- project.properties
+|-- project.xml
+`-- src
+    |-- conf
+    |   `-- app.properties
+    |-- java
+    |   `-- com
+    |       `-- mycompany
+    |           `-- app
+    |               `-- App.java
+    `-- test
+        `-- com
+            `-- mycompany
+                `-- app
+                    |-- AbstractTestCase.java
+                    |-- AppTest.java
+                    `-- NaughtyTest.java
+
+]]></source>
+        </subsection>
+
+    </section>
+
+    <section name="Building">
+      <p>
+        Maven works using the notion of a central repository. All artifacts
+        required for building are drawn from the central repository. Currently
+        our central repository is housed
+        <a href="http://www.ibiblio.org/maven">here</a> at
+        <a href="http://www.ibiblio.org">Ibiblio</a>. In a typical Maven project,
+        the JARs required to build a are pulled from the central
+        repository. Maven will only retrieve dependencies which are not
+        satisfied. If you are using Maven to build several projects it is
+        likely that those projects share a few dependencies: Maven will let
+        you share one JAR file between any number of projects that require
+        that JAR to build. No multiple copies of the same JAR on your
+        system!
+      </p>
+
+      <subsection name="Build Lifecycle">
+        <p>
+        </p>
+      </subsection>
+
+      <subsection name="Storing 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 Ant builds. With Maven these standard utilities
+          can be stored in your local repository and shared by any number of builds.
+        </p>
+      </subsection>
+
+
+      <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 the a
+          an easy way for you to select which artifacts you want to use for
+          building. It is highly recommended that you set up your own local
+          repository: but in cases where expediency is a concern, or you are
+          migrating from an Ant build the JAR override feature may come
+          in handy.
+        </p>
+
+        <p>
+          In order to use the JAR override feature, you must set the
+          <code>maven.jar.override</code> property on. 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 artfact 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[
+# ------------------------------------------------------------------------
+# 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
+
+# ------------------------------------------------------------------------
+# Jars set explicity by version.
+# ------------------------------------------------------------------------
+maven.jar.classworlds = 1.0-beta-1
+]]></source>
+      </subsection>
+
+      <subsection name="Using SNAPSHOT Dependencies">
+        <p>
+          In Maven SNAPSHOTs are artifacts aproximate the latest build of a particular
+          project. 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[
+<project>
+  ...
+  <dependencies>
+
+   <dependency>
+     <groupId>commons-jelly</groupId>
+     <artifactId>commons-jelly</artifactId>
+     <version>SNAPSHOT</version>
+   </dependency>
+
+  </dependencies>
+ ...
+</project>
+]]></source>
+
+        <p>
+          This tells Maven that you are always looking to use the latest build of
+          Jelly that is available in the Maven repository. Internally to Maven
+          SNAPSHOT dependencies are always considered failed dependencies. That
+          being the case Maven will always try to retrieve a copy of SNAPSHOT
+          dependency from the Maven repository. If you are working offline Maven
+          will warn you that your SNAPSHOT dependencies may be out of date.
+        </p>
+
+      </subsection>
+
+      <subsection name="Multi Project Builds and the Reactor">
+        <p>
+          With Maven the Reactor is the tool that is used to control multi
+          project builds. The Reactor uses the Werkz package to
+          determine the correct build order from the dependencies stated
+          by each project in their respective POMs. The Reactor was created to
+          encourage the creation, or refactoring, of projects into smaller,
+          discrete, more coherent units. The Reactor is ideal for Component
+          Oriented Programming (COP) where the overall system is comprised
+          of many discrete entities that need to be aggregated to form a whole
+          for deployment.
+        </p>
+
+        <p>
+          The Reactor can execute an arbitrary list of goals for any set of
+          specified projects. So while the Reactor was created for building, it can be
+          used for things like site generation, or any sort of artifact generation.
+        </p>
+
+        <p>
+          Currently the <a href="http://db.apache.org/">db.apache.org</a> site is
+          generated by collecting project information from all its subprojects
+          and injecting the harvested information into a set of
+          <a href="http://jakarta.apache.org/velocity/">Velocity</a> templates
+          which are processed by the <a href="http://jakarta.apache.org/commons/jelly/">Jelly</a>
+          Velocity Tag Library. You can browse the mechanism used
+          <a href="http://cvs.apache.org/viewcvs.cgi/db-site/">here</a>.
+        </p>
+
+        <p>
+          In Plexus, an Avalon-based container, the component manifest which tracks all
+          Plexus components is generated by walking over all of the components, harvesting
+          the information and aggregating it into a single manifest. Again we use Velocity
+          templates and the Jelly Velocity Tag Library. You can browse the mechanism used
+          <a href="http://cvs.werken.com/viewcvs.cgi/plexus-components/?cvsroot=plexus">here</a>.
+        </p>
+
+        <p>
+          Here is an example of how you might use the Reactor Tag to process a
+          set of components where the site is generated
+
+        </p>
+  <source><![CDATA[
+  <goal
+    name="project-site"
+    description="Generate the site for the entire project">
+
+    <!-- Generate the site for each of the components. -->
+
+    <maven:reactor
+      basedir="${basedir}/components"
+      postProcessing="true"
+      includes="*/project.xml"
+      excludes="bad-component/*"
+      goals="site"
+      banner="Generating Site"
+      ignoreFailures="true"/>
+
+    <!--
+     |
+     | At this point because 'postProcessing' was turned on we have all
+     | the processed POMs available to us in the ${reactorProjects} variable.
+     |
+     -->
+
+    <j:forEach var="reactorProject" items="${reactorProjects}">
+
+      ... Do whatever you want with the harvested information ...
+
+    </j:forEach>
+  </goal>
+  ]]></source>
+
+        <p>
+          If you have to generate documentation for N projects with an overall
+          front-end do look at the <a href="http://db.apache.org/">db.apache.org</a>
+          site as the navigation, mailing lists, committer lists and source repository
+          lists are all harvested from sub-projects to produce the overall site. This
+          means that the redundant, error prone process of moving sub-project specific
+          information to the overall site is removed. Sub-projects at db.apache.org
+          take care of their own information and it finds its way to the top-level
+          site automatically.
+        </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>
+          which 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 a <a href="#Properties Processing">property file</a>.
+        </p>
+        <p>
+          In online mode, maven always downloads SNAPSHOT dependencies, see
+          <a href="#Using SNAPSHOT Dependencies">Using SNAPSHOT Dependencies</a>.
+          If the snapshots in your local repository are younger than the ones
+          on the server, you propably don't want that maven overwrites you local
+          snapshot jars.
+          To avoid downloading, set property  
+        </p>
+        <source><![CDATA[
+maven.repo.remote.enabled=false
+        ]]></source>
+        <p>
+          In maven beta 9, this property does not work (but it's fixed in newer releases).
+          Clearing the property <code>maven.repo.remote</code> by setting 
+        </p>
+        <source><![CDATA[
+maven.repo.remote.enabled=
+        ]]></source>
+        <p>
+          via CLI or property file has the same effect.  
+        </p>
+        <p>
+          Using <code>maven.repo.remote.enabled=false</code> and
+          <code>maven.mode.online=true</code> is the combination to use if one needs a working
+          "-link" option for the javadoc plugin plus no download of snapshot/any jars.
+        </p>
+        
+      </subsection>
+
+      <subsection name="Summary of CLI Options">
+        <p>
+          If you are using the commandline (CLI) to build, here is a quick summary of the
+          options available:
+        </p>
+
+<source><![CDATA[
+Options:
+ -D,--define arg   Define a system property
+ -E,--emacs        Produce logging information without adornments
+ -X,--debug        Produce execution debug output
+ -b,--nobanner     Suppress logo banner
+ -d,--dir arg      Set effective working directory
+ -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
+ -v,--version      Display version information
+]]></source>
+
+      </subsection>
+
+    </section>
+
+    <section name="Testing">
+
+      <!-- Change this section into a demonstratino of the resources element in general -->
+
+      <subsection name="Test Resources">
+        <p>
+          It is a fairly common occurrence that you want to include some resources in your
+          test classpath for testing purposes. Maven allows you include any arbitrary set of
+          resources for testing by utilizing the project/build/unitTest/resources element in your POMs.
+        </p>
+
+        <p>
+          The following example demonstrates how to recursively include all files with an 'xml'
+          or 'properties' extension within the ${basedir}/src/test directory:
+        </p>
+
+<source><![CDATA[
+<project>
+  ...
+  <build>
+    ...
+    <unitTest>
+      ...
+      <resources>
+        <resource>
+          <directory>${basedir}/src/test</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </resource>
+      </resources>
+    </unitTest>
+  </build>
+</project>
+]]></source>
+
+        <p>
+          The following example demonstrates how to recursively include all files with an 'xml'
+          or 'properties' extension within the ${basedir}/src/test directory and exclude the
+          naughty.properties file. Note the addition of the project/build/unitTest/resources/excludes
+          element:
+        </p>
+
+<source><![CDATA[
+  <project>
+    ...
+    <build>
+      ...
+      <unitTest>
+        ...
+        <resources>
+          <resource>
+            <directory>${basedir}/src/test</directory>
+            <includes>
+              <include>**/*.xml</include>
+              <include>**/*.properties</include>
+            </includes>
+            <excludes>
+              <exclude>naughty.properties</exclude>
+            </excludes>
+          </resource>
+        </resources>
+      </unitTest>
+    </build>
+  </project>
+]]></source>
+
+      </subsection>
+
+      <subsection name="Running a Single Test">
+        <p>
+          To run a single test use something like the following:
+        </p>
+<source><![CDATA[
+maven -Dtestcase=org.foo.bar.MyTest test:single-test
+]]></source>
+
+      </subsection>
+    </section>
+
+    <section name="Packaging">
+
+      <subsection name="JAR Resources">
+
+        <p>
+
+        </p>
+
+<source><![CDATA[
+<project>
+  ...
+  <build>
+    <resources>
+      <!-- A -->
+      <resource>
+        <directory>${basedir}/src/conf</directory>
+        <includes>
+          <include>*.xml</include>
+          <include>*.properties</include>
+        </includes>
+      </resource>
+      <!-- B -->
+      <resource>
+        <directory>${basedir}/src/messages</directory>
+        <targetPath>org/apache/maven/messages</targetPath>
+        <includes>
+          <include>messages*.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+</project>
+]]></source>
+      </subsection>
+
+    </section>
+
+    <section name="Deploying">
+      <p>
+      </p>
+
+      <subsection name="Resolving SNAPSHOT Dependencies">
+        <p>
+          It is convenient to use SNAPSHOT dependencies while developing but when you
+          deploy you need to resolve all your SNAPSHOT dependencies so that your
+          releases consist of all immutable artifacts. If you release a project with
+          SNAPSHOT dependencies and some of the SNAPSHOTs change after your release
+          you could wind up very quickly with a release that doesn't work.
+        </p>
+
+        <p>
+          When SNAPSHOTs are deployed in Maven a timestamped version for the
+          artifact being deployed is created. So Maven would know that foo-SNAPSHOT.jar
+          actually refers to foo-20030101.010101.jar in the Maven Repository. When it
+          comes time to deploy you can ask Maven to convert your SNAPSHOT versions
+          into timestamped versions using the following command:
+        </p>
+
+<source><![CDATA[
+maven convert-snapshots
+]]></source>
+
+        <p>
+          You will be presented with an interactive console where you can choose which
+          SNAPSHOT dependencies you want to resolve. When this process is complete Maven
+          will write out your POM with your modified dependency entries.
+        </p>
+
+        <p>
+          If you wish Maven just to simply do its best at resolving SNAPSHOT dependencies
+          you can use the following command:
+        </p>
+
+<source><![CDATA[
+maven convert-snapshots-auto
+]]></source>
+
+      </subsection>
+
+      <subsection name="Copying Dependency JARs">
+        <p>
+          The easiest way to copy your project' dependency JARs is to
+          use something like the following sample <code>maven.xml</code> file as a
+          guide:
+        </p>
+
+<source><![CDATA[
+<project
+  xmlns:deploy="deploy">
+
+  <goal name="deploy-my-project">
+    ...
+    <deploy:copy-deps todir="/path"/>
+    ...
+  </goal>
+
+</project>
+]]></source>
+
+        <p>
+          Using the <code>deploy:copy-deps</code> tag you can easily place your
+          project's dependency JARs where you wish. If you wish to exclude
+          certain dependency JARs you can provide a list of dependency ids and
+          each dependency listed will be excluded from the copy:
+        </p>
+
+<source><![CDATA[
+<project
+  xmlns:deploy="deploy">
+
+  <goal name="deploy-my-project">
+    ...
+    <deploy:copy-deps todir="/path" excludes="servletapi,commons-util"/>
+    ...
+  </goal>
+</project>
+]]></source>
+      </subsection>
+
+    </section>
+
+    <section name="Naming Conventions">
+      <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.
+      </p>
+    </section>
+
+    <section name="Rules and Guidelines">
+
+      <subsection name="Projects">
+        <p>
+          A project must have a unique identifier that is comprised of
+          lowercase letters [a-z] where hyphens can be used. The unique id
+          must also start with a lowercase letter [a-z]:
+        </p>
+
+<source><![CDATA[
+<project>
+  <groupId>bar</groupId>
+  <artifactId>foo</artifactId>
+  ...
+</project>
+]]></source>
+
+        <p>
+          All references from one project to another are to be made in terms of the
+          unique group id and artifact id. At the moment the only place in the POM where
+          this is relevant is the declaration of project dependencies which is
+          discussed below.
+        </p>
+
+        <p>
+          A project should have a human readable name that can be used in
+          documentation.
+        </p>
+
+<source><![CDATA[
+<project>
+  <groupId>bar</groupId>
+  <artifactId>foo</artifactId>
+  <name>The Grand Master Foo</name>
+  ...
+</project>
+]]></source>
+
+        <p>
+          A project should have a group identifier. This group identifier
+          is the basis for the name
+        </p>
+
+<source><![CDATA[
+<project>
+  <groupId>bar</groupId>
+  <artifactId>foo</artifactId>
+  <name>The Grand Master Foo</name>
+  ...
+</project>
+]]></source>
+
+        <p>
+          All artifacts published by a project should be based on the
+          project's unique identifier and placed in a directory based
+          on the project's group identifier. So for the above entry, assuming
+          an artifact type of <code>jar</code>, we might have something
+          that looks like the following:
+        </p>
+
+<source><![CDATA[
+repository
+ |
+ +-- bar
+     |-- distribution
+     `-- jar
+         |-- foo-1.0.jar
+         `-- foo-2.0.jar
+]]></source>
+
+      </subsection>
+
+      <subsection name="Dependencies">
+        <p>
+          An example of an ideal, the hopefully typical, dependency declaration looks like the
+          following:
+        </p>
+
+<source><![CDATA[
+<project>
+  <groupId>yourProject</groupId>
+  <artifactId>yourArtifact</artifactId>
+  <name>Your Groovey Machine</name>
+  ...
+
+  <dependencies>
+
+   <dependency>
+     <groupId>bar</groupId>
+     <artifactId>foo</artifactId>
+     <version>1.0</version>
+   </dependency>
+
+ </dependencies>
+
+</project>
+]]></source>
+
+        <p>
+          So, the project <code>bar</code> which depends on version
+          <code>1.0</code> of the artifact with an id of <code>foo</code>
+          which belongs to the group with an id of <code>org.foo.bar</code>.
+          This dependency resolves to a JAR file that is stored in the local repository.
+          The above entry assumes that the published artifact name is based
+          on the artifactId. So for the above dependency entry Maven will
+          assume a JAR name of <code>foo-1.0.jar</code>.
+        </p>
+
+        <p>
+          As user's have noticed, this ideal situation doesn't work in all
+          cases for all projects. There are several situations that have to
+          be accounted for which require modifications of the ideal dependency
+          declaration:
+        </p>
+
+        <p>
+          <ul>
+            <li>
+              The project id is not used as the base name of the published
+              JAR e.g. the Xerces products where xercesImpl is the base name
+              of the published JAR. It neither matches the gump id or the
+              maven id.
+            </li>
+            <li>
+              The published JAR name has no version declaration e.g. many of
+              the commons components do not declare a version as part of
+              published JAR names.
+            </li>
+            <li>
+              The project id is not used as the base name of the published JAR and
+              the published JAR name has no version declaration e.g. the worst
+              case scenerio which is the Java Activation Framework JAR which
+              doesn't even vaguely follow other Sun naming conventions and there is no
+              version declaration in the published JAR name. There isn't
+              even any version information in the manifest.
+            </li>
+          </ul>
+        </p>
+
+        <p>
+          In most cases, any of these limitations can be overcome using the
+          optional &lt;jar&gt; element or the JAR can be renamed. To date many
+          of the Jakarta products have been renamed in the repository as it
+          is likely in the near future that most Jakarta projects will choose
+          to use Maven to build. But there isn't a firm policy about what to
+          do in all cases which needs to be resolved.
+        </p>
+
+      </subsection>
+
+      <subsection name="Projects with multiple artifacts">
+        <p>
+          Maven's dependency mechanism completely supports multiple project
+          artifacts of any given type.
+        </p>
+
+        <p>
+          So here is what the entries look like for the ant 1.4.1 primary JAR and
+          the optional JAR plus a bonus hypothetical:
+        </p>
+
+<source><![CDATA[
+
+<dependencies>
+
+  <!-- A -->
+  <dependency>
+    <groupId>ant</groupId>
+    <artifactId>ant</artifactId>
+    <version>1.4.1</version>
+  </dependency>
+
+  <!-- B -->
+  <dependency>
+    <groupId>ant</groupId>
+    <artifactId>ant-optional</artifactId>
+    <version>1.4.1</version>
+  </dependency>
+
+  <!-- C -->
+  <dependency>
+    <groupId>ant</groupId>
+    <artifactId>poorly-named</artifactId>
+    <version>1.4.1</version>
+  </dependency>
+
+</dependencies>
+]]></source>
+
+        <p>
+          So A), B) and C) are actually pointers to single artifacts in a group.
+          So a single dependency is a reference to a single artifact in a group.
+          Currently the type of an artifact defaults to a JAR if not specified. But a
+          dependency might be a WAR file or a distribution. We tried to provide flexibility while
+          providing a default for the type most used: The case where the artifact is a JAR required
+          for building a project.
+        </p>
+
+      </subsection>
+    </section>
+
+    <section name="Remote Repository Layout">
+      <p>
+        This document outlines the layout of Maven's remote repositories.
+        Currently, the primary repository is house at
+        <a href="http://www.ibiblio.org/maven/">here</a> at Ibiblio, but you
+        may create an use your own remote repositories provided they adhere
+        to the structure outlined in this document.
+      </p>
+
+      <p>
+        Every separate project has its own directory in the repository where
+        artifacts for that project can be stored. Each project has a unique
+        project id and directory where a project stores its artifacts is named
+        after the project id.
+      </p>
+
+      <p>
+        Within a project's directory various types of artifacts may be stored.
+        Currently, the two most common types are JARs and distributions.
+        Below is a little snapshot of what the remote repository looks like:
+      </p>
+
+<source><![CDATA[
+repository
+ |
+ |-- ant
+ |   |-- distribution
+ |   `-- jars
+ |       |-- ant-1.4.1.jar
+ |       `-- ant-optional-1.4.1.jar
+ +-- jsse
+ |-- distribution
+ `-- jars
+     |-- jsse.jar
+     |-- jcert.jar
+     `-- jnet.jar
+]]></source>
+
+    </section>
+
+    <section name="Local Repository Layout">
+      <p>
+        There is a very minimally implemented set of interfaces that allow the
+        structuring of the local repository in an arbitrary fashion. This has
+        barely been fleshed and I am only using one class in the package
+        directly at the moment. I still think the local and remote repositories
+        should be structured the same, but in an attempt to make users happy I
+        started a set of interfaces that will allow someone to layout their
+        local side anyway they like and still interface with the remote repos in
+        a consistent way. Though currently it is still required to have your
+        local repository structured in the same way as the remote repository.
+        I'm hoping that more user feedback will drive the completion of the
+        interfaces or allow them to be dropped all together.
+      </p>
+    </section>
+
+  <section name="Site Generation">
+    <p>
+      Maven can be used to generate an entire web site for your
+      project.  This web site will contain various reports generated
+      by the numerous plugins included in Maven such as javadocs,
+      metrics, unit test results, changelogs, and many more.  The rest
+      of this section talks about the various site customization
+      options available in Maven.
+    </p>
+    <subsection name="Colors">
+      <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.  Of course, the Maven
+        development team understands that users might want to
+        customize their own sites.  The easiest method to alter the
+        appearance of the Maven-generated site is to specify your own
+        color scheme to use.  This is as simple as setting the
+        appropriate properties in your project's
+        <code>project.properties</code> file.  All of the available
+        properties are described in the <a
+          href="plugins/xdoc/properties.html">xdoc plugin</a>.
+      </p>
+    </subsection>
+    <subsection name="Stylesheets">
+      <p>
+        If you feel that colors are simply not enough to distinguish
+        your site, you can specify your own stylesheet that will be
+        used.  To override the Maven-supplied stylesheet, copy your
+        own and override the <code>maven.css</code> stylesheet in your
+        <code>${basedir}/xdocs/stylesheets/</code> directory.  You can
+        also specify your own javadoc stylesheet by setting the
+        <code>maven.javadoc.stylesheet</code> property.
+      </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="project-descriptor.html#reports"><code>reports</code></a> tag
+        in your project descriptor.  As of this writing, if you do not
+        utilize the <code>reports</code> tag, all of the plugin
+        reports will be generated.  This tag enables you to
+        selectively choose which reports to include and exclude as
+        well as the order of the reports.
+      </p>
+      <p>
+        The <code>standard</code> set of reports is currently hard coded into
+        the <code>xdoc</code> plugin. These are
+      </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>
+        <p>If you wish to use the default reports but remove one or add one, the 
+          preferred method is to use a postGoal for xdoc:register-reports
+        </p>  
+        
+        <source><![CDATA[
+<postGoal name="xdoc:register-reports">
+  <attainGoal name="maven-changelog-plugin:deregister"/>  
+  <attainGoal name="maven-myown-plugin:register"/>  
+</postGoal>
+        ]]></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.0.2/xdocs/repository-upload.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/repository-upload.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/repository-upload.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,141 @@
+<?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>
+    <author email="bwalding at apache.org">Ben Walding</author>
+    <author email="jason at maven.org">Jason van Zyl</author>    
+    <title>Uploading to ibiblio</title>
+  </properties>
+
+  <body>
+    <section name="Overview">
+      <p>
+        So you want a  resource uploaded to ibiblio?!
+      </p>
+      
+      <p>
+        To save time for everybody, here is how you go about it.  
+      </p>
+    </section>
+  
+    <section name="Step 1. Create an upload bundle">
+      <p>
+        Use the repository plugin provided with the standard Maven
+        distribution to create an upload bundle:
+      </p>
+      
+      <source>
+        maven create-upload-bundle
+      </source>
+      
+      <p>
+        The bundle will be created in your "target" directory of the form:
+        ${pom.artifactId}-${pom.currentVersion}-bundle.jar
+      </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>
+        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 project.xml should at least contain the following elements:
+      </p>
+      <ul>
+        <li>groupId</li>
+        <li>id</li>
+        <li>name</li>
+        <li>currentVersion</li>
+        <li>dependencies</li>
+      </ul>
+      
+    </section>
+  
+    <section 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>.
+        The first line of the description should be the URL of the upload bundle, then leave a blank line and provide the 
+        following:
+        <ul>
+        <li>an url where the project can be found.</li>
+        <li>if you are one of its developers, an url where your name or email can be found inside the project site.</li>
+        </ul>
+        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>
+        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! DO IT NOW!
+      </source>
+
+    </section>
+    
+    <section 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. 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>
+    </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 directly with site maintainers.
+        <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>
+      </p>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/site.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/site.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/site.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,81 @@
+<?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>Site Navigation</title>
+    <author email="bwalding at apache.org">Ben Walding</author>
+  </properties>
+
+  <body>
+    <section name="Implementation">
+      <p>
+        Create a single navigation.xml 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>
+ 
+      <source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Maven xdoc Plugin">
+
+  <title>Maven xdoc Plugin</title>
+
+  <body>
+    <links>
+      <item name="Maven"  href="http://maven.apache.org/"/>
+    </links>
+    <menu>
+      <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>
+      <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>
+        Now the menus will expand and collapse as you navigate through them.
+      </p>
+    </section>
+    
+    <section name="Caveats">
+     <ol>
+       <li>
+         You must refer to subdirectories as /folder/index.html.  Navigation will get quite confused
+         if you refer to them as /folder/ or just /folder
+       </li>
+       <li>
+         If you have a sub-item with the same url as another item, the site navigation will
+         expand to display all items with that URL (when either is selected).  All instances 
+         of the item will be highlighted.
+       </li>
+      </ol>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/start/anakia.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/anakia.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/anakia.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,85 @@
+<?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>Anakia to Maven</title>
+        <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    </properties>
+    <body>
+      <section name="Anakia to Maven">
+        <p>
+          This document has been specifically created for users of Anakia.
+          If you use Anakia to generate a website for your project, you
+          can easily migrate to Maven and automatically inherit a great
+          look and feel designed by CSS experts.  This is an ideal
+          opportunity for you to start integrating Maven into your
+          project.  Using Maven is not an all or nothing scenario, with
+          very little effort you can use Maven to generate only your site
+          documentation.  As you become more familiar with Maven, you can
+          then slowly start utilizing other features of Maven.
+        </p>
+        <p>
+          The process of creating a Maven-generated site from your Anakia
+          documentation is outlined below:
+        </p>
+        <ul>
+          <li>
+            Install Maven on your system.  Please refer to the 
+            <a href="index.html">Getting Started</a> 
+            documentation for assistance.
+          </li>
+          <li>
+            Create a project descriptor and refer to the <a href="integrate.html">Integration</a> document for
+            assistance.  You'll also be able to change the default colors
+            used by Maven when generating your site by setting the
+            appropriate properties.  If you are only interested in using
+            Maven for the generation of your site (and not compilation),
+            you do not have to complete the &lt;build&gt; element
+            section of the project descriptor.
+          </li>
+          <li>
+            Use Maven to generate your site by invoking the
+            <code>maven site</code> goal.  You can also
+            automatically deploy your site to a web server with
+            <code>maven site:deploy</code>.
+          </li>
+        </ul>
+        <p>
+          If your project does not store its documentation in the
+          <code>xdocs</code> directory located in the base directory of
+          the project, you'll have to define the property
+          <code>${maven.docs.src}</code> in a properties file or via the command
+          line to point to the appropriate location.
+        </p>
+        <p>
+          Prior to writing this document, several random Jakarta projects
+          were selected and their documentation was generated using Maven
+          to demonstrate how easy it is to switch from Anakia to Maven.
+          Give it a try, we promise you'll like it!
+        </p>
+      </section>
+      <section name="Anakia Extensions">
+        <p>
+          See <a href="/site.html">Site Navigation</a> for more information about
+          Maven extensions to Anakia.
+        </p>
+      </section>
+    </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/start/bootstrap.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/bootstrap.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/bootstrap.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,223 @@
+<?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>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+    <title>Building Maven</title>
+  </properties>
+
+  <body>
+    <section name="Building Maven">
+      <p>
+        Building Maven is a little different than your typical Java
+        build because Maven uses itself to build itself!  Thus, in order
+        to successfully build Maven, a bootstrapping process is required
+        to jumpstart the build.  Fortunately, the details of this have
+        been encapsulated in a separate build file called
+        <code>build-bootstrap.xml</code>.  This document details the
+        necessary steps to successfully build Maven from source.  After
+        completing the process, not only will Maven be built, it will
+        also be installed on your system, which will enable you to build
+        any other Maven-enabled project (i.e. all Turbine projects).
+      </p>
+      <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.  Don't forget to install the
+        <code>optional.jar</code> included with Ant.  In addition,
+        you'll also need the <a href="http://www.junit.org/">JUnit</a>
+        unit testing framework installed.  Be sure to install
+        <code>junit.jar</code> in your <code>ANT_HOME/lib</code>
+        directory.  Failure to do so will result in build errors.
+      </p>
+      <p>
+        You also must have the <code>MAVEN_HOME</code> env-var 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>: as the installation of Maven is automatic and part of the 
+        build process, make sure you really want to overwrite the files
+        you may have in that location.
+      </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>
+        All development efforts are now in producing the final 1.0 release. This 
+        means the most active (and stable) branch is MAVEN-1_0-BRANCH (in the maven project) 
+        and HEAD on maven-plugins. 
+      </p>
+      <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>
+        If you are behind a proxy, you must define proxy parameters for
+        building Maven :
+        <a href="../faq.html#build-firewall">FAQS</a>.
+      </p>
+      <subsection name="Bootstrapping Maven">
+        <p>
+          Before you can begin the process, you'll need to download the
+          source from the <code>maven</code> and <code>maven-plugins</code>
+          CVS repository.  If you are not familiar with the CVS
+          repositories, please see the <a
+          href="http://maven.apache.org/cvs-usage.html">documentation</a>.
+        </p>
+        <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:
+        </p>
+        <source><![CDATA[ant -f build-bootstrap.xml]]></source>
+        <p>
+          Thats it! Congratulations!  You have now built Maven with
+          Maven and installed Maven on your system!
+        </p>
+        <p>
+          If you get an OutofMemoryError during bootstrap, try setting an environment
+          variable MAVEN_OPTS to provide more memory, e.g. on Windows
+        </p>
+        <source>set MAVEN_OPTS=-Xmx512m</source>
+        <p>Now you're ready to go</p>
+        <ul>
+          <li>
+            The Maven build system has been installed in
+            <code>MAVEN_HOME</code>.
+          </li>
+          <li>
+            You can now build any Maven-enabled project with ease!
+            Please see the <a href="use.html">Using Maven</a>
+            document for instructions on how to build Maven-enabled
+            projects.
+          </li>
+          <li>
+            You can now integrate Maven into your own projects!  Please
+            see the <a href="integrate.html">Integrate Maven</a>
+            document for instructions on how to do this.
+          </li>
+        </ul>
+      </subsection>
+    </section>
+    
+    <section name="Building the optional plugins">
+      <p>
+        The source for the plugins can be found in the <strong>maven-plugins</strong>
+        cvs repository. See the 
+        <a href="http://maven.apache.org/reference/plugins/cvs-usage.html">documentation</a>
+        for more information on accessing that repository.
+      </p>
+      <p>
+        Once you've downloaded the source, you can easily install all the plugins
+        in a single command. See the 
+        <a href="http://maven.apache.org/reference/plugins/faq.html#building-all">FAQ</a>
+        for more detail on how to install them once downloaded.
+      </p>
+    </section>
+    <section name="Building Maven with Maven">
+      <p>
+        This section explains how to build Maven with an already installed Maven binary.
+        This assumes that you have both the <code>maven</code> and <code>maven-plugins</code>
+        CVS trees checked out, as above.
+      </p>
+      <p>
+        Start by running <code>maven -u</code> in the <code>maven</code> CVS tree's base directory.
+        This will give you a quick overview of the defined goals.
+      </p>
+      <subsection name="Maven goals">
+        <p>
+          <strong>Note:</strong> some of the goals are named in the form of plugins-x.
+          These goals have some common logic: they invoke the reactor on the plugins 
+          directory and use the properties maven.plugins.include and maven.plugins.exclude.
+        </p>
+        <table>
+          <tr>
+            <th>Goal</th>
+            <th>Description</th>
+          </tr>              
+          <tr>
+            <td>maven:jar-install</td>
+            <td>
+              Compile Maven and put a new jar in ${maven.home}/lib.
+              This goal attains the jar:jar goal, and copies then the 
+              jar to the lib in maven home, as well as to the local repository.
+            </td>
+          </tr>
+          <tr>
+            <td>maven:build-install</td>
+            <td>Builds a full, clean maven installation in the target/installer directory.</td>
+          </tr>
+          <tr>
+            <td>maven:installer</td>
+            <td>
+              Builds and creates tar.gz, bzip, zip and exe (if NSIS is installed) which are suitable for 
+              binary installations, similar to the binaries that can be download
+              from the maven site.
+            </td>
+          </tr>
+          <tr>
+            <td>maven:plugins-build</td>
+            <td>
+              Build each Maven plugin into an installable jar. This goal runs the 
+              clean and plugin target on the maven plugins dir. the included and 
+              excluded plugins are contolled by the maven.plugins.include and 
+              maven.plugins.excludes properties respectively.
+            </td>
+          </tr>
+          <tr>
+            <td>maven:plugins-clean</td>
+            <td>
+              Cleans all plugin projects. Runs the clean goal on the included plugins.
+            </td>
+          </tr>
+          <tr>
+            <td>maven:plugins-install</td>
+            <td>
+              Install each Maven plugin. This goal runs the clean and plugin:install goal
+              in each included plugin.
+            </td>
+          </tr>
+          <tr>
+            <td>maven:plugins-test</td>
+            <td>Test each Maven plugin. Runs the plugin:test goal on each included plugin.</td>
+          </tr>
+          <tr>
+            <td>maven:run-touchstone</td>
+            <td>
+              Calls maven with the project file in 
+              ${basedir}/src/test/touchstone-build/project.xml and the clean, jar:jar and 
+              touchstone-tests goals.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/start/download.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/download.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/download.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,56 @@
+<?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 Maven</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+    <section name="Download Maven">
+
+      <p>
+        Maven is currently distributed in several formats for user convenience. For instructions on
+        how to install maven, see the <a href="install.html">Installation Instructions</a>.
+        You can find the install archives, including checksums and PGP signatures <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/">here</a>.
+      </p>
+      
+      <p>
+        The current release is 1.0.2. Below are the links to the latest release in various formats
+      </p>
+      
+      <ul>
+        <li><a href="release-notes-1.0.2.html">Release Notes</a></li>
+        <li><a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.exe">Windows .exe</a></li>
+        <li><a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.tar.bz2">.tar.bz2 file</a></li>
+        <li><a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.tar.gz">.tar.gz file</a></li>
+        <li><a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.zip">.zip file</a></li>
+      </ul>
+      
+<!--
+      <p>
+        Seed repository: <a href="http://www.apache.org/dyn/closer.cgi/maven/binaries/seed-repo-maven-1.0.tar.gz">seed-maven-1.0.tar.gz file</a>
+      </p>
+-->
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/start/index.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/index.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/index.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,112 @@
+<?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>Getting Started with Maven</title>
+    <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="Getting Started with Maven">
+      <p>
+        This document (as well as the others in this section) provide
+        an introduction to Maven and how to use it within a project.
+        For those that have already skimmed the documentation on this
+        site, you may be asking yourself, what *exactly* does it mean to
+        use Maven?  That question will have different answers over time
+        as Maven <a href="../objectives.html">evolves</a>, but these documents
+        attempt to illustrate (using the Turbine projects as an example)
+        how one might install, integrate and leverage the power of Maven
+        in a project.
+      </p>
+
+      <p>
+        To avoid overwhelming you (user, developer, or contributor) with
+        unnecessary information, this document attempts to provide
+        references to various documents depending upon your Maven
+        interests.  It is meant to provide you with a starting point
+        that can be effectively used to get to the information you need
+        without going through all of the documentation on the site,
+        which might be a little overwhelming.
+      </p>
+
+      <subsection name="Overview of the Getting Started Documentation">
+        <table>
+          <tr><th>Document</th><th>Description</th></tr>
+          <tr><td><a href="download.html">Download</a></td>
+            <td>
+              Before you can start using Maven in any form, you'll have
+              to download the Maven distribution to your system (unless
+              you plan on building Maven from source).  This document
+              provides links to the various distributions available.
+            </td>
+          </tr>
+          <tr><td><a href="install.html">Install</a></td>
+            <td>
+              After you have downloaded a distribution, you'll need to
+              install this on your system before you can start using
+              Maven (unless you plan on building Maven from source).
+              This document provides step-by-step instructions on the
+              installation process.
+            </td>
+          </tr>
+          <tr><td><a href="integrate.html">Integrate</a></td>
+            <td>
+              If you are interested in integrating Maven with your
+              project, this document will provide such information.  The
+              document details the process of creating a Maven project
+              descriptor for your project.  This document provides
+              example build files and project descriptors.
+            </td>
+          </tr>
+          <tr><td><a href="use.html">Use</a></td>
+            <td>
+              For those of you that have been referred to this document
+              because you are trying to build a Maven-enabled project
+              (i.e. one of the Turbine projects), this document will
+              provide you with all of the necessary information required
+              to build any Maven-enabled project.
+            </td>
+          </tr>
+          <tr><td><a href="bootstrap.html">Build</a></td>
+            <td>
+              For the adventurous (its actually quite easy), you can
+              build Maven from source instead of downloading and
+              installing via an installer.  As a result of building
+              Maven directly, it will also be installed on your system.
+              This document provides you with step by step instructions.
+            </td>
+          </tr>
+          <tr><td><a href="anakia.html">Anakia Users</a></td>
+            <td>
+              If you currently use Anakia to generate documentation, you
+              can easily give your site a face-lift with Maven!  Maven
+              can generate an entire site from your Anakia documentation
+              for you!  This is a great opportunity to start integrating
+              Maven into your project.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/start/install.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/install.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/install.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,123 @@
+<?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>Installing Maven</title>
+    <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="Installing Maven">
+      <p>
+        You must first <a href="download.html">download</a> Maven
+        (please refer to the documentation). This document will
+        describe how to install Maven using one of two flavours
+        of install archives.
+      </p>
+      
+      <p>
+        The downloaded install archive contains everything required to run
+        Maven on your system. The install archive has 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.
+      </p>
+      
+      <p>
+        Before you begin using Maven you will need to define the
+        <code>MAVEN_HOME</code> environment variable which is the directory where
+        you just unpacked the Maven install archive.  (If you are using the Windows Installer
+        this variable will be set for you). You will also need to add
+        <code>MAVEN_HOME/bin</code> to your path so that you can run
+        the scripts provided with Maven. This works in exactly the
+        same way that Ant works.
+      </p>
+      
+      <p>
+        You will also need to define the <code>JAVA_HOME</code> environment variable. If you are using Mac OS X, Maven
+        will attempt to guess the location of the JDK. This variable should be the directory where a Java Development Kit is installed,
+        i.e. the directory that contains the <code>bin</code>, <code>demo</code>, <code>jre</code> and <code>lib</code> directories
+      </p>
+
+      <p>
+        <b>Note</b>: you can safely skip the following step if you have any problems.
+        If you do skip it, Maven will download the dependencies instead
+        of copying them from the <code>lib</code> directory.
+      </p>
+
+      <p>
+        Next, you should create your local repository by running one of the 
+        following commands:
+        <source><![CDATA[
+          For Unix:
+            $MAVEN_HOME/bin/install_repo.sh $HOME/.maven/repository
+          For Windows:
+            %MAVEN_HOME%\bin\install_repo.bat %HOME%\.maven\repository
+        ]]></source>
+
+        <b>Note:</b> This step is optional, but will save downloading several JARs
+        a second time. If <code>%HOME%</code> is not set on your Windows system, you can use 
+        <code>%HOMEDRIVE%%HOMEPATH%</code>.
+      </p>
+
+      <p>
+        If you have downloaded the seed repository, you should extract it under the repository directory
+        created in the step above (eg <code>$HOME/.maven/repository</code>). This will allow you to run
+        Maven offline and successfully run the jar, site and related goals.
+      </p>
+
+      <p>
+        Next, verify that your <code>MAVEN_HOME</code> environment variable points to
+        the correct location.  In the top-level directory of
+        <code>MAVEN_HOME</code>, you should see the following
+        structure:
+      </p>
+        
+      <source><![CDATA[
+      .
+      |-- bin
+      |-- lib
+      |-- plugins
+
+      ]]></source>
+      
+      <p>
+        If the above directory structure is present you have everything you
+        need build projects with Maven.
+      </p>
+      
+      <p>
+        To confirm that you can start Maven, run
+      </p>
+      <source><![CDATA[maven -v]]></source>
+
+      <p>
+        You should also create a <code>build.properties</code> (see above for how to get your home directory on
+        Windows). Here, you can set your remote repository to the closest
+        <a href="/faq.html#ibiblio-mirrors">ibiblio mirror</a> and customise some other per-user settings.
+        See the <a href="/reference/user-guide.html">User Guide</a> for more information.
+      </p>
+    </section>
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/start/integrate.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/integrate.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/integrate.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,275 @@
+<?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>Integrating Maven</title>
+    <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="Integrating Maven with a Project">
+      <p>
+        Now that you have Maven installed on your system, this section
+        will show you how to integrate it with an existing project.  All
+        of the current Turbine projects have been Maven-enabled, and can
+        be used as references.  They will be used as examples in this
+        section.  There is really only one step to integration
+        Maven with a project: the creation of the project descriptor.
+        You may also create an ancillar <code>maven.xml</code> file which
+        contains project specific goals, preGoals, and postGoals.
+      </p>
+      <subsection name="Creating a Project Descriptor">
+        <p>
+          Everything in Maven gravitates around the definition of a
+          project. The unit of work in Maven is the project, so before
+          you can get started with Maven you need to create your project
+          definition. The easiest way to do this is to create an XML
+          representation of this definition.  In Maven-terms, this is
+          called the project descriptor.
+        </p>
+        <p>
+          You'll need to create a project descriptor to use Maven with
+          your project.  The project descriptor must be called
+          <code>project.xml</code> and must reside in the top-level
+          directory of your project's directory hierarchy.  The contents
+          of the descriptor are described in detail in the <a
+          href="../reference/project-descriptor.html">Project Descriptor</a>
+          document.  A sample project descriptor is included below for
+          reference.  In addition, all of the Turbine projects have
+          valid project descriptors that you can examine.
+        </p>
+        <p>
+          We are working on a tool that will help you create your
+          project descriptor automatically, but if you want to get
+          started right away with Maven, then you'll have to create your
+          own <code>project.xml</code> file manually (probably easiest
+          to just modify an existing one such as the one below).  The
+          following is the project descriptor used to describe the Maven
+          project:
+        </p>
+        <source><![CDATA[<?xml version="1.0"?>
+<project>
+  <pomVersion>3</pomVersion>
+  <id>maven</id>
+  <name>maven</name>
+  <currentVersion>1.0-SNAPSHOT</currentVersion>
+  <organization>
+    <name>Apache Software Foundation</name>
+    <url>http://jakarta.apache.org/</url>
+  </organization>
+  <inceptionYear>2001</inceptionYear>
+  <package>org.apache.maven</package>
+
+  <!-- Gump integration -->
+  <gumpRepositoryId>jakarta</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.
+  </description>
+
+  <shortDescription>Java Project Management Tools</shortDescription>
+
+  <url>http://maven.apache.org/</url>
+  <issueTrackingUrl>
+    http://nagoya.apache.org/scarab/servlet/scarab/
+  </issueTrackingUrl>
+  <siteAddress>jakarta.apache.org</siteAddress>
+  <siteDirectory>
+    /www/maven.apache.org/
+  </siteDirectory>
+  <distributionDirectory>
+    /www/jakarta.apache.org/builds/jakarta-turbine-maven/
+  </distributionDirectory>
+
+  <repository>
+    <connection>
+      scm:cvs:pserver:anoncvs at cvs.apache.org:/home/cvspublic:maven
+    </connection>
+    <url>
+      http://cvs.apache.org/viewcvs/maven/
+    </url>
+  </repository>
+
+  <versions>
+    <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>HEAD</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>
+      <archive>
+        http://www.mail-archive.com/users@maven.apache.org/
+      </archive>
+    </mailingList>
+    <mailingList>
+      <name>Maven Developer List</name>
+      <subscribe>
+        dev-subscribe at maven.apache.org
+      </subscribe>
+      <unsubscribe>
+        dev-unsubscribe at maven.apache.org
+      </unsubscribe>
+      <archive>
+        http://www.mail-archive.com/dev@maven.apache.org/
+      </archive>
+    </mailingList>
+  </mailingLists>
+
+  <developers>
+
+    <developer>
+      <name>Juancarlo Anez</name>
+      <id>juanco</id>
+      <email>juanco at apache.org</email>
+      <organization></organization>
+    </developer>
+
+    <developer>
+      <name>Stephane Bailliez</name>
+      <id>sbailliez</id>
+      <email>sbailliez at apache.org</email>
+      <organization></organization>
+    </developer>
+    
+    .
+    .
+    .
+
+    <developer>
+      <name>Glenn McAllister</name>
+      <id>glennm</id>
+      <email>glenn at somanetworks.com</email>
+      <organization>SOMA Networks, Inc.</organization>
+    </developer>
+
+  </developers>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>dom4j</groupId>
+      <artifactId>dom4j</artifactId>
+      <version>1.3</version>
+      <url>http://www.dom4j.org/</url>
+    </dependency>
+
+    <dependency>
+      <groupId>bcel</groupId>
+      <artifactId>bcel</artifactId>
+      <version>5.0</version>
+      <url>http://jakarta.apache.org/bcel/</url>
+    </dependency>
+
+    .
+    .
+    .
+
+    <dependency>
+      <groupId>regexp</groupId>
+      <artifactId>regexp</artifactId>
+      <version>1.2</version>
+      <url>http://jakarta.apache.org/regexp/</url>
+    </dependency>
+    
+  </dependencies>
+
+  <build>
+
+    <nagEmailAddress>
+      dev at maven.apache.org
+    </nagEmailAddress>
+
+    <sourceDirectory>src/java</sourceDirectory>
+
+    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+
+    <aspectSourceDirectory/>
+
+    <!-- Unit test cases -->
+    <unitTest>
+      <includes>
+        <include>**/*Test.java</include>
+      </includes>
+      <excludes>
+        <exclude>**/RepositoryTest.java</exclude>
+      </excludes>
+    </unitTest>
+              
+    <!-- J A R  R E S O U R C E S -->
+    <!-- Resources that are packaged up inside the JAR file -->
+    <resources>
+      <resource>
+        <directory>${basedir}/src/resources/misc</directory>
+        <includes>
+          <include>*.xsd</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>${basedir}/src/resources/logging</directory>
+        <includes>
+          <include>log4j.properties</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+</project>]]></source>
+      </subsection>
+      
+      <subsection name="Using Maven with your existing build">
+        <p>
+          Maven doesn't require the use of any Ant build files so you can
+          try using Maven without affecting the way you traditionally
+          build your project.
+        </p>
+       </subsection>
+       
+       <subsection name="Extending Maven's build system">
+         <p>
+           There are two main ways you can extend Maven's build system: 
+           creating new plug-ins, and adding additional processing in a
+           project specific <code>maven.xml</code> file.
+         </p>
+       </subsection>
+   </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.1.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.1.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.1.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>Maven Release Notes</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Maven 1.0.1 Released">
+      <p>
+The Apache Maven team is pleased to announce the release of Maven 1.0.1.
+</p><p>
+<a href="http://maven.apache.org/start/download.html">http://maven.apache.org/start/download.html</a>
+</p><p>
+This release contains 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 <a href="/changes-report.html#1_0_1">Changes Report</a>
+</p><p>
+Please note that each plugin has its own changes report - please refer to the <a href="/reference/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:
+<ul>
+<li>the FAQ: <a href="http://maven.apache.org/faq.html">http://maven.apache.org/faq.html</a></li>
+<li> the maven-user mailing list: <a href="http://maven.apache.org/mail-lists.html">http://maven.apache.org/mail-lists.html</a></li>
+</ul>
+</p><p>
+For news and information, see:
+<ul>
+<li>Maven Blogs: <a href="http://www.mavenblogs.com/">http://www.mavenblogs.com/</a></li>
+</ul>
+</p><p>
+<i>- The Apache Maven Team</i>
+</p>
+</section>
+</body>
+</document>
+
+


Property changes on: branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.1.xml
___________________________________________________________________
Name: svn:executable
   + 

Added: branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.2.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.2.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.2.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,75 @@
+<?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 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="http://maven.apache.org/start/download.html">http://maven.apache.org/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 <a href="/changes-report.html#1_0_2">Changes Report</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="/reference/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:
+<ul>
+<li>the FAQ: <a href="http://maven.apache.org/faq.html">http://maven.apache.org/faq.html</a></li>
+<li> the maven-user mailing list: <a href="http://maven.apache.org/mail-lists.html">http://maven.apache.org/mail-lists.html</a></li>
+</ul>
+</p><p>
+For news and information, see:
+<ul>
+<li>Maven Blogs: <a href="http://www.mavenblogs.com/">http://www.mavenblogs.com/</a></li>
+</ul>
+</p><p>
+<i>- The Apache Maven Team</i>
+</p>
+</section>
+</body>
+</document>
+
+


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

Added: branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/release-notes-1.0.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,88 @@
+<?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 Release Notes</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="Maven 1.0 Released">
+      <p>
+The Apache Maven team is pleased to announce the release of Maven 1.0.
+</p><p>
+<a href="http://maven.apache.org/start/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>
+
+  <subsection name="New Features">
+<p><ul>
+<li> Bundle the Jelly XML tag library for build and for plugin's convenience  </li>
+<li> Add different types of download progress meters.  </li>
+</ul></p></subsection>
+
+  <subsection name="Fixed bugs">
+<p><ul>
+<li> Fix property inheritence under some circumstances Issue: MAVEN-1296. Thanks 
+  to Eric Lapierre. </li>
+<li> &lt;maven:get/&gt; now initialises the plugin if it has not already been 
+  loaded, removing the need for dependency handles </li>
+<li> Check last modified timestamp as well as conditional GET in case the server 
+  time is behind the local time Issue: MAVEN-1188. </li>
+<li> Bugfixes for new httpclient based downloading (incorrect timestamps) Issue: 
+  MAVEN-1343. </li>
+<li> Handle cross site redirects Issue: MAVEN-1353. </li>
+<li> Correct absolute paths with no drive designator on windows Issue: 
+  MAVEN-1290. </li>
+<li> Amend bootstrap to create directories that might not exist Issue: 
+  MAVEN-1341. </li>
+<li> If artifact is not a snapshot, don't continue checking for newer downloads 
+  once one is successful Issue: MAVEN-1344.  </li>
+</ul></p></subsection>
+
+  <subsection name="Plugin Highlights">
+<p>The latest plugin releases are also included, with bug fixes and some new features.
+</p></subsection>
+<p>
+We hope you enjoy using Maven! If you have any questions, please consult:
+<ul>
+<li>the FAQ: <a href="http://maven.apache.org/faq.html">http://maven.apache.org/faq.html</a></li>
+  <li> the Wiki: <a href="http://wiki.codehaus.org/maven/">http://wiki.codehaus.org/maven/</a></li>
+  <li> the maven-user mailing list: <a href="http://maven.apache.org/mail-lists.html">http://maven.apache.org/mail-lists.html</a></li>
+</ul>
+</p><p>
+For news and information, see:
+<ul>
+<li>Maven Blogs: <a href="http://www.mavenblogs.com/">http://www.mavenblogs.com/</a></li>
+</ul>
+</p><p>
+<i>- The Apache Maven Team</i>
+</p>
+</section>
+</body>
+</document>
+
+

Added: branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-creating.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-creating.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-creating.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,98 @@
+<?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 Maven Build</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="The Ten Minute Test - Creating a Maven Build">
+      <p>
+        Ok, what we'll do here is create and build a simple project. It will be a
+        utility library. The only class we'll add is one to take an input string and
+        add ### on either side. Useful, huh?
+      </p>
+      <p>
+        As part of the slightly more interesting build process, we will:
+        <ul>
+          <li>Produce a JAR containing the source code</li>
+          <li>Make the JAR available to other projects</li>
+          <li>Run the unit tests</li>
+          <li>Build a small site with some information about the project</li>
+          <li>Add a custom report to the web site</li>
+        </ul>
+      </p>
+      <p>
+        Now before you start that watch ticking for 10 minutes, you are going to need
+        to <a href="download.html">download Maven</a>. If you are intending to do this
+        offline later, you should make sure to pick up the "seed repository" and install
+        it according to the instructions.
+      </p>
+      <p>
+        You will also need to <a href="install.html">install Maven</a>. This is just a few short
+        commands (or clicks if you are on Windows). If <code>maven -v</code> gives you something
+        useful, then you are ready to go!
+      </p>
+      <subsection name="Before we start: Terms used">
+        <p>
+          You will hopefully find these descriptions useful as you take part in the ten minute test:
+        </p>
+        <table>
+          <tr><th>Term</th><th>Definition</th></tr>
+          <tr>
+            <td>Goal</td>
+            <td>
+              For those familiar with Ant, this is like a <i>target</i>. It is something you wish to do, 
+              which may also perform other goals. An example might be <code>jar</code>, <code>site</code>, 
+              or <code>war:webapp</code>.
+            </td>
+          </tr>
+          <tr>
+            <td>Project Descriptor</td>
+            <td>
+              This is the <code>project.xml</code> file, and is currently the only way to define the
+              <i>Project Object Model</i> (POM). This describes your project to Maven.
+            </td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Step 1: Create a project descriptor">
+        <p>
+          It all starts with <code>project.xml</code>. While you can run Maven without it, it will not
+          know anything about your project and can't do more than run project-independant
+        </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>
+        </p>
+        <p>
+          More to come... 
+       </p>
+      </subsection>
+    </section>
+ </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-running.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-running.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/ten-minute-running.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,33 @@
+<?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 - Running a Maven Build</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="The Ten Minute Test - Running a Maven Build">
+      <p>Coming soon...</p>
+    </section>
+ </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/start/ten-minute.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/ten-minute.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/ten-minute.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>The Ten Minute Test</title>
+    <author email="brett at apache.org">Brett Porter</author>
+  </properties>
+
+  <body>
+    <section name="The Ten Minute Test">
+      <p>
+        Often when starting to use 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. This guide will help
+        you do that. 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>
+        Because Maven has different types of users - those that are <i>running</i>
+        the build and those that are <i>defining</i> the build, we have two different
+        tracks. If you are defining a new build for a piece of software, you'll find it
+        helpful to have learned to use Maven first - so we recommend both tracks.
+      </p>
+      <subsection name="Running a Maven Build">
+        <p>
+          <i>Help! I downloaded this cool piece of software and there is no build.xml, just project.xml!
+          What do I do?</i>
+        </p>
+        <p>
+          <a href="ten-minute-running.html">Learn about running a Maven build...</a>
+        </p>
+      </subsection>
+      <subsection name="Creating a Maven Build">
+        <p>
+          <i>I'd like to try Maven for myself on a new project.</i>
+        </p>
+        <p>
+          <a href="ten-minute-creating.html">Learn about creating a Maven build...</a>
+        </p>
+      </subsection>
+    </section>
+    <section name="Next Steps">
+      <p>
+        <i>I'm still reading! I'm ready to get stuck into this seriously with my real
+        projects. What next?</i>
+      </p>
+      <p>
+        <!-- TODO: we could rework this some more -->
+        <a href="index.html">Getting Started</a>
+      </p>
+    </section>
+ </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/start/use.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/start/use.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/start/use.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,127 @@
+<?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="jason at zenplex.com">Jason van Zyl</author>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+   <section name="Using Maven">
+     <p>
+       Congratulations!  Now that you have installed Maven and/or
+       integrated with your project, you are now ready to start
+       reaping the benefits of Maven.  The rest of this document will be
+       a guided tour through the basic operation of Maven's build
+       system.  You will learn how to build any of the following
+       Maven-enabled Turbine projects: Torque, Stratum, Fulcrum, and
+       Turbine.  The process for each project is the identical thanks to
+       Maven (as are the results).
+     </p>
+     <p>
+       First, checkout the source for any of the above Turbine projects.
+       If you do not know how to do this, please refer to the <a
+       href="http://jakarta.apache.org/site/cvsindex.html">CVS
+       Repositories</a> document.  For those familiar with the growing
+       family of Jakarta projects, several of the projects include all
+       of the JAR files required to build and distribute the projects in
+       their CVS repositories.  Maven eliminates this practice
+       altogether because it provides facilities to automatically
+       download all dependencies from one or more central repositories.
+       Thus, before any Maven goal is executed, Maven will
+       automatically download all of the required dependencies from the
+       remote repositories defined by the <code>${maven.repo.remote}</code>
+       property.
+     </p>
+     <p>
+       After Maven has automatically downloaded your dependencies, they
+       are stored in your local repository. Recall, Maven uses this
+       directory to store all JAR files.  There are two exceptions: 1)
+       non-distributable JARs will result in a message pointing you to
+       the location where you can download the JAR yourself, and 2) JARs
+       that don't exist in the local or remote repositories will result
+       in an error.  In either case, you'll have to download those
+       yourself and manually place them in your local repository.
+       After you have downloaded all of the dependent JARs, generating a
+       JAR for a Maven-enabled Turbine project is easy.  Type the
+       following:
+     </p>
+      <source><![CDATA[maven jar]]></source>
+     <p>
+       You'll notice that all of the code is compiled, and then unit
+       tested, before it is packaged into a JAR file.  The unit tests
+       generate reports that are later parsed to create an HTML report
+       that is part of the generated site documentation.  The JAR file
+       can also be automatically distributed.
+     </p>
+     <p>
+       The biggest bang for you buck right now is the generation of your
+       site documentation.  Maven will generate documentation that is
+       consistent with the rest of the site.  This list of documentation
+       includes: developer lists, mailing lists, dependencies, unit test
+       reports, source code metrics, change logs, JavaDocs, and
+       cross-referenced source code (not too bad considering all you
+       have to do is produce a project descriptor)!  It will also create
+       a standard navigation system that is added to all of your <a
+       href="http://jakarta.apache.org/site/jakarta-site2.html">
+       xdocs</a>.  To generate all of the documentation mentioned above,
+       type the following:
+     </p>
+     <source><![CDATA[maven site:generate]]></source>
+     <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.  
+     </p>
+     <p>
+       If you are a maintainer of the project's website, you can use
+       Maven to publish the generated web site to a server.  Maven will
+       use the settings defined in the project descriptor to specify
+       various settings (hostname of web server and directory on the
+       server where the site resides) required for deployment.  Type the
+       following:
+     </p>
+     <source><![CDATA[maven site:deploy]]></source>
+     <p>
+       Assuming you have access to the web server, your entire site
+       would have been published.  This makes updating the project's web
+       site very easy.  It can also be easily automated.  Finally, to
+       conclude the example, you might want to clean the project
+       directory because you are so excited about Maven that you want to
+       try everything again!  Type the following:
+     </p>
+     <source><![CDATA[maven clean]]></source>
+     <p>
+       For a full description of all of the Maven goals available type:
+     </p>
+     <source><![CDATA[maven -g]]></source>
+       
+     <p>
+       That concludes the tour of Maven.  All of the Turbine projects
+       currently use Maven to generate their web sites, please have a
+       look and see what Maven can do for you.  The Maven-specific
+       content can be found in the navigation section called "Maven
+       Documentation".
+     </p>
+   </section>
+ </body>
+</document>

Added: branches/maven1/upstream/1.0.2/xdocs/status.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/status.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/status.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -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>Status</title>
+    <author email="pete-apache-dev at kazmier.com">Pete Kazmier</author>
+  </properties>
+
+  <body>
+
+    <section name="Status">
+      <subsection name="Current Status">
+        <p>
+          We are currently developing a roadmap for future Maven development
+          in the 1.x and 2.x series.
+        </p>
+        <p>
+          Check out <a href="http://jira.codehaus.org/browse/MAVEN">JIRA</a> for the
+          current road map to the 1.1 release.
+        </p>
+        <p>
+          For the latest news and information on Maven, check out <a href="http://www.mavenblogs.com">Maven Blogs</a>.
+        </p>
+      </subsection>
+
+      <subsection name="7 December 2004 - Maven 1.0.2 released!">
+        <p>
+          See the <a href="start/release-notes-1.0.2.html">Release Notes</a> for more
+          information.
+        </p>
+      </subsection>
+      <subsection name="11 November 2004 - Maven 1.0.1 released!">
+        <p>
+          See the <a href="start/release-notes-1.0.1.html">Release Notes</a> for more
+          information.
+        </p>
+      </subsection>
+      <subsection name="13 July 2004 - Maven 1.0 released!">
+        <p>
+          See the <a href="start/release-notes-1.0.html">Release Notes</a> for more
+          information.
+        </p>
+      </subsection>
+    </section>
+
+  </body>
+</document>
+

Added: branches/maven1/upstream/1.0.2/xdocs/sun-licensing-journey.xml
===================================================================
--- branches/maven1/upstream/1.0.2/xdocs/sun-licensing-journey.xml	                        (rev 0)
+++ branches/maven1/upstream/1.0.2/xdocs/sun-licensing-journey.xml	2006-09-14 10:29:37 UTC (rev 2420)
@@ -0,0 +1,119 @@
+<?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>Sun Licensing Journey</title>
+    <author email="jason at zenplex.com">Jason van Zyl</author>
+  </properties>
+
+  <body>
+    <section name="Sun Licensing Journey">
+      <p>
+        Documenting the process we are going through with Sun to try and
+        change some of the license so we can distribute JARs that will
+        make building many projects a lot easier.
+      </p>
+      
+      <p>
+        <ul>
+          <li>
+            [ 18 Feb 2003 ] Geir has contacted Bill Shannon and asked
+            what could be done about the JavaMail license. Geir explained that
+            Maven doesn't use JavaMail directly but on behalf of project and
+            though even technically the license is violated the spirit of
+            the license is not.
+          </li>
+          <li>
+            [ 18 Feb 2003 ] Bill Shannon responds that Maven's use is in the
+            spirit of the license though not technically allowed. He directs
+            us to Tom Kinkaid who is the manager of JavaMail.
+          </li>
+          <li>
+            [ 30 April 2003 ] I had a long discussion with Tom Kincaid about
+            the licensing issues and we will not be able to distribute the Sun
+            JARs from ibiblio but that the scraper would be a workable solution.
+            I have to get Tom a list of JARs that we would like to be able to 
+            retrieve with the scraper and he would commit to checking with
+            each of the people within Sun responsible for the said package.
+          </li>
+          <li>
+            [ 10 June 2003 ] The following is a list of JARs that we would
+            like Tom Kincaid to check into:
+            <p>
+              activation <br/>
+              j2ee <br/>
+              javamail <br/>
+              jaxb <br/>
+              jaxm <br/>
+              jaxp <br/>
+              jaxr <br/>
+              jax-rpc <br/>
+              jca <br/>
+              jce <br/>
+              jdbc <br/>
+              jdo <br/>
+              jdori <br/>
+              jhall <br/>
+              jms <br/>
+              jmx <br/>
+              jndi <br/>
+              jndi - fscontext - in fact all of the extended service providers <br/>
+              jnlp <br/>
+              jsr-94 <br/>
+              jta <br/>
+              jts <br/>
+              ejb <br/>
+              resolver 1.1 XML Entity and URI Resolvers (by Norman Walsh)<br/>
+              saaj (SOAP with Attachments API for Java) <br/>
+            </p>
+          </li>
+          <li>
+            [ 19 June 2003 ] I've sent a message to Tom Kincaid stating
+            which packages we would like to access with the scraper.
+          </li>
+          <li>
+            [ 23 June 2003 ] Tom Kincaid wrote back and asked for details on
+            how the scraper would work. So just reassured him that
+            everything would come from the Sun sites and that the user would
+            still have to accept the license for the said package. The user
+            would just be saved from the details of locating the package
+            manually on a Sun site.
+          </li>
+          <li>
+            [ 14 July 2003 ] Everyone is back at Sun and Tom Kincaid wrote
+            up a draft of a message to send out to product managers and the
+            legal department at Sun describing exactly the process we want to use
+            to retrieve Sun binaries. So things are moving at Sun.
+          </li>
+          <li>
+            [ 6 October 2003 ] Geir Magnusson, who is Apache's JCP
+            representative has volunteered to carry out discussions with Graham
+            Hamilton. Graham is a VP and a Sun fellow and can't promise anything but
+            believes that he might be able to help to allow to store the JARs directly
+            in the repository.
+          </li>
+        </ul>
+      </p>
+
+    </section>
+
+  </body>
+</document>




More information about the pkg-java-commits mailing list