Merging changes from old (archiva-0.9) trunk into branch.

svn merge revision 518676 to 534045.



git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches/archiva-jpox-database-refactor@534082 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joakim Erdfelt 2007-05-01 13:37:43 +00:00
parent e52e0793df
commit 4c9789b228
58 changed files with 1293 additions and 40 deletions

View File

@ -66,12 +66,10 @@
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-api</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
<version>1.0-alpha-2</version>
<scope>test</scope>
</dependency>
<!-- Test Deps -->
@ -92,7 +90,7 @@
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<version>1.0-alpha-15-SNAPSHOT</version>
<version>1.0-alpha-15</version>
<executions>
<execution>
<goals>

View File

@ -52,6 +52,12 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
<exclusions>
<exclusion>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>

View File

@ -70,13 +70,11 @@
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-api</artifactId>
<version>1.0-alpha-2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-ehcache</artifactId>
<version>1.0-alpha-2</version>
<scope>compile</scope>
</dependency>
<dependency>

View File

@ -42,7 +42,7 @@ To build
* Download the 1.0.1B jta zip from: {{http://java.sun.com/products/jta/}}
* Install it: mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta Dversion=1.0.1B -Dpackaging=jar -Dfile=jta-1_0_1B-classes.zip
* Install it: mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=jta-1_0_1B-classes.zip
Otherwise:
@ -92,7 +92,7 @@ To deploy Archiva to Tomcat 5.5
instead, or see {{{http://issues.apache.org/bugzilla/show_bug.cgi?id=40668}
Bug 40668}} for a workaround.
* Copy archiva/archiva-webapp/target/archiva-webapp-1.0-SNAPSHOT/WEB-INF/lib/derby-10.1.3.1.jar into the tomcat common/lib
* Copy $HOME/.m2/org/apache/derby/derby/10.1.3.1/derby-10.1.3.1.jar (or from the remote repository) into the tomcat common/lib
* To deal with a current bug, you'll also need to add the following to your ${catalina.home}/conf/web.xml in the relevant section (search for jspx):

View File

@ -141,7 +141,7 @@
</executions>
<configuration>
<descriptor>src/main/assembly/bin.xml</descriptor>
<finalName>archiva</finalName>
<finalName>archiva-${version}</finalName>
</configuration>
</plugin>
<plugin>

View File

@ -42,6 +42,23 @@
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<!-- Dependencies below are provided by the appserver -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<build>
@ -69,11 +86,43 @@
<outputDirectory>${project.build.directory}/${container.name}conf/webapps/archiva</outputDirectory>
</configuration>
</execution>
<execution>
<id>prepare-provided-dependencies</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<excludeTransitive>false</excludeTransitive>
<outputDirectory>${project.build.directory}/providedDependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy todir="${project.build.directory}/appserver-base">
<fileset dir="src/test/resources/appserver-base" />
</copy>
<copy todir="${project.build.directory}/repository">
<fileset dir="src/test/resources/repository" />
</copy>
<copy todir="${project.build.directory}/index">
<fileset dir="src/test/resources/index" />
</copy>
</tasks>
</configuration>
</execution>
<execution>
<id>copy-container-conf</id>
<phase>package</phase>
@ -84,8 +133,8 @@
</copy>
<copy
todir="${project.build.directory}/installs/${container.name}/apache-tomcat-5.5.20/apache-tomcat-5.5.20/common/lib">
<fileset dir="${project.build.directory}/${container.name}conf/webapps/archiva/WEB-INF/lib">
<include name="**/derby-*.jar"/>
<fileset dir="${project.build.directory}/providedDependencies">
<include name="**/*.jar"/>
</fileset>
</copy>
</tasks>
@ -168,7 +217,7 @@
<output>${project.build.directory}/logs/${container.name}.out</output>
<timeout>600000</timeout>
<systemProperties>
<appserver.base>${project.build.directory}</appserver.base>
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
</systemProperties>
</container>
<configuration>

View File

@ -44,15 +44,15 @@ public abstract class AbstractArchivaTestCase
if ( getTitle().equals( getTitlePrefix() + "Configuration" ) )
{
//Add Managed Repository
setFieldValue( "id", "web-ui" );
setFieldValue( "urlName", "web-ui" );
setFieldValue( "id", "test-repository" );
setFieldValue( "urlName", "test-repository" );
setFieldValue( "name", "Web UI Test Managed Repository" );
setFieldValue( "directory", getBasedir() + "target/web-ui-dir" );
setFieldValue( "directory", getBasedir() + "/target/repository" );
clickButtonWithValue( "Add Repository" );
//Set Index location
assertPage( "Configuration" );
setFieldValue( "indexPath", getBasedir() + "target/web-ui-index" );
setFieldValue( "indexPath", getBasedir() + "/target/index" );
clickButtonWithValue( "Save Configuration" );
assertPage( "Administration" );
}
@ -60,16 +60,17 @@ public abstract class AbstractArchivaTestCase
public void assertHeader()
{
assertTrue( "banner is missing" , getSelenium().isElementPresent( "xpath=//div[@id='banner']" ) );
assertTrue( "bannerLeft is missing" , getSelenium().isElementPresent( "xpath=//div[@id='banner']" +
"/span[@id='bannerLeft']" ) );
assertTrue( "bannerLeft link is missing" , getSelenium().isElementPresent( "xpath=//div[@id='banner']" +
"/span[@id='bannerLeft']/a[@href='http://maven.apache.org/archiva/']" ) );
assertTrue( "bannerLeft img is missing" , getSelenium().isElementPresent( "xpath=//div[@id='banner']" +
"/span[@id='bannerLeft']/a[@href='http://maven.apache.org/archiva/']" +
"/img[@src='" + getWebContext() + "/images/archiva.png']" ) );
assertTrue( "banner is missing", getSelenium().isElementPresent( "xpath=//div[@id='banner']" ) );
assertTrue( "bannerLeft is missing",
getSelenium().isElementPresent( "xpath=//div[@id='banner']" + "/span[@id='bannerLeft']" ) );
assertTrue( "bannerLeft link is missing", getSelenium().isElementPresent(
"xpath=//div[@id='banner']" + "/span[@id='bannerLeft']/a[@href='http://maven.apache.org/archiva/']" ) );
assertTrue( "bannerLeft img is missing", getSelenium().isElementPresent( "xpath=//div[@id='banner']" +
"/span[@id='bannerLeft']/a[@href='http://maven.apache.org/archiva/']" + "/img[@src='" + getWebContext() +
"/images/archiva.png']" ) );
assertTrue( "bannerRight is missing", getSelenium().isElementPresent( "xpath=//div[@id='banner']/span[@id='bannerRight']" ) );
assertTrue( "bannerRight is missing",
getSelenium().isElementPresent( "xpath=//div[@id='banner']/span[@id='bannerRight']" ) );
}
protected String getTitlePrefix()

View File

@ -0,0 +1,194 @@
package org.apache.maven.archiva.web.test;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Archiva's webapp UI test for browsing the indexed repository.
*
* @author <a href="mailto:nramirez@exist.com">Napoleon Esmundo C. Ramirez</a>
*/
public class BrowseRepositoryTest
extends AbstractArchivaTestCase
{
private void browseArtifact()
{
clickLinkWithText( "Browse" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertLinkPresent( "org.apache.maven.archiva.web.test/" );
clickLinkWithText( "org.apache.maven.archiva.web.test/" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertTextPresent( "Artifacts" );
assertLinkPresent( "artifact-a/" );
clickLinkWithText( "artifact-a/" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertTextPresent( "Versions" );
assertLinkPresent( "1.0/" );
clickLinkWithText( "1.0/" );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertLinkPresent( "Main" );
}
public void testBrowseArtifactInfo()
{
browseArtifact();
assertTextPresent( "Info" );
assertLinkPresent( "Dependencies" );
assertLinkPresent( "Dependency Tree" );
assertLinkPresent( "Used By" );
assertLinkPresent( "Mailing Lists" );
assertEquals("Group ID", getSelenium().getTable("//table[1].0.0"));
assertEquals("org.apache.maven.archiva.web.test", getSelenium().getTable("//table[1].0.1"));
assertEquals("Artifact ID", getSelenium().getTable("//table[1].1.0"));
assertEquals("artifact-a", getSelenium().getTable("//table[1].1.1"));
assertEquals("Version", getSelenium().getTable("//table[1].2.0"));
assertEquals("1.0", getSelenium().getTable("//table[1].2.1"));
assertEquals("Packaging", getSelenium().getTable("//table[1].3.0"));
assertEquals("jar", getSelenium().getTable("//table[1].3.1"));
}
public void testBrowseArtifactDependencies()
{
browseArtifact();
clickLinkWithText( "Dependencies" );
assertLinkPresent( "Info" );
assertTextPresent( "Dependencies" );
assertLinkPresent( "Dependency Tree" );
assertLinkPresent( "Used By" );
assertLinkPresent( "Mailing Lists" );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertLinkPresent( "artifact-b" );
}
public void testBrowseArtifactDependencyTree()
{
browseArtifact();
clickLinkWithText( "Dependency Tree" );
assertLinkPresent( "Info" );
assertLinkPresent( "Dependencies" );
assertTextPresent( "Dependency Tree" );
assertLinkPresent( "Used By" );
assertLinkPresent( "Mailing Lists" );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertLinkPresent( "artifact-b" );
assertLinkPresent( "artifact-c" );
}
public void testBrowseArtifactUsedBy()
{
browseArtifact();
clickLinkWithText( "Used By" );
assertLinkPresent( "Info" );
assertLinkPresent( "Dependencies" );
assertLinkPresent( "Dependency Tree" );
assertTextPresent( "Used By" );
assertLinkPresent( "Mailing Lists" );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertLinkPresent( "artifact-s" );
}
public void testBrowseArtifactMailingLists()
{
browseArtifact();
clickLinkWithText( "Mailing Lists" );
assertLinkPresent( "Info" );
assertLinkPresent( "Dependencies" );
assertLinkPresent( "Dependency Tree" );
assertLinkPresent( "Used By" );
assertTextPresent( "Mailing Lists" );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertTextPresent( "No mailing lists" );
}
public void testBrowseUpRepositoryDirectory()
{
browseArtifact();
assertLinkPresent( "artifact-a" );
clickLinkWithText( "artifact-a" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertTextPresent( "Versions" );
assertLinkPresent( "1.0/" );
assertLinkPresent( "test" );
clickLinkWithText( "test" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertTextPresent( "Artifacts" );
assertLinkPresent( "artifact-a/" );
assertLinkPresent( "web" );
clickLinkWithText( "web" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertTextPresent( "Groups" );
assertLinkPresent( "org.apache.maven.archiva.web.test/" );
assertLinkPresent( "[top]" );
clickLinkWithText( "[top]" );
assertPage( "Browse Repository" );
assertTextPresent( "Browse Repository" );
assertTextPresent( "Groups" );
assertLinkPresent( "org.apache.maven.archiva.web.test/" );
}
public void testBrowseDependencyArtifact()
{
browseArtifact();
clickLinkWithText( "Dependencies" );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
assertLinkPresent( "artifact-b" );
clickLinkWithText( "artifact-b" );
assertEquals("Group ID", getSelenium().getTable("//table[1].0.0"));
assertEquals("org.apache.maven.archiva.web.test", getSelenium().getTable("//table[1].0.1"));
assertEquals("Artifact ID", getSelenium().getTable("//table[1].1.0"));
assertEquals("artifact-b", getSelenium().getTable("//table[1].1.1"));
assertEquals("Version", getSelenium().getTable("//table[1].2.0"));
assertEquals("2.0", getSelenium().getTable("//table[1].2.1"));
assertEquals("Packaging", getSelenium().getTable("//table[1].3.0"));
assertEquals("jar", getSelenium().getTable("//table[1].3.1"));
}
}

View File

@ -59,11 +59,11 @@ public class LoginTest
submitLoginPage( adminUsername, adminPassword );
clickLinkWithText( "User Management" );
assertPage( "[Admin] User List" );
assertLinkNotPresent( username );
//assertPage( "[Admin] User List" );
//assertLinkNotPresent( username );
clickButtonWithValue( "Create New User" );
assertPage( "[Admin] User Create" );
//assertPage( "[Admin] User Create" );
setFieldValue( "user.username", username );
setFieldValue( "user.fullName", username + " FullName" );
setFieldValue( "user.email", username + "@localhost.com" );
@ -71,8 +71,8 @@ public class LoginTest
setFieldValue( "user.confirmPassword", password );
clickButtonWithValue( "Create User" );
waitPage();
assertPage( "[Admin] User List" );
assertLinkPresent( username );
//assertPage( "[Admin] User List" );
//assertLinkPresent( username );
logout();
}

View File

@ -0,0 +1,201 @@
package org.apache.maven.archiva.web.test;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Archiva's webapp UI test for adding/editing/deleting managed repositories.
*
* @author <a href="mailto:nramirez@exist.com">Napoleon Esmundo C. Ramirez</a>
*/
public class ManagedRepositoryTest
extends AbstractArchivaTestCase
{
private static final String TEST_REPOSITORY_ID = "test-repository-id";
private static final String TEST_REPOSITORY_URL = "test-repository-url";
private static final String TEST_REPOSITORY_NAME = "test-repository-name";
private static final String TEST_REPOSITORY_DIRECTORY = "test-repository-directory";
private void clickManagedRepositories()
{
goToLoginPage();
submitLoginPage( adminUsername, adminPassword );
clickLinkWithText( "Managed Repositories" );
assertPage( "Administration" );
assertTextPresent( "Administration" );
}
private void createManagedRepository( String id, String url, String name, String directory )
{
clickManagedRepositories();
clickLinkWithText( "Add Repository" );
assertTextPresent( "Configuration" );
setFieldValue( "addRepository_id", id );
setFieldValue( "urlName", url );
setFieldValue( "addRepository_name", name );
setFieldValue( "addRepository_directory", directory );
clickButtonWithValue( "Add Repository", false );
}
private void removeManagedRepository( String id )
{
logout();
clickManagedRepositories();
clickLinkWithLocator( "//a[contains(@href, '/admin/deleteRepository!input.action?repoId=" + id + "')]" );
clickLinkWithLocator( "deleteRepository_operationdelete-contents", false );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextNotPresent( TEST_REPOSITORY_ID );
}
public void testAddRepositoryWithValidValues()
{
createManagedRepository( TEST_REPOSITORY_ID, TEST_REPOSITORY_URL, TEST_REPOSITORY_NAME, TEST_REPOSITORY_DIRECTORY );
waitPage();
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_ID );
removeManagedRepository( TEST_REPOSITORY_ID );
}
public void testAddRepositoryWithInvalidValues()
{
createManagedRepository( "", "", "", "" );
assertTextPresent( "You must enter the repository identifier." );
assertTextPresent( "You must enter the url name." );
assertTextPresent( "You must enter the repository name." );
assertTextPresent( "You must enter the repository directory." );
}
public void testEditRepositoryWithValidValues()
{
createManagedRepository( TEST_REPOSITORY_ID, TEST_REPOSITORY_URL, TEST_REPOSITORY_NAME, TEST_REPOSITORY_DIRECTORY );
waitPage();
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_NAME );
clickLinkWithLocator( "//a[contains(@href, '/admin/editRepository!input.action?repoId=" + TEST_REPOSITORY_ID + "')]" );
assertPage( "Configuration" );
assertTextPresent( "Configuration" );
assertTextPresent( "Edit Managed Repository" );
assertEquals( TEST_REPOSITORY_URL, getFieldValue( "urlName" ) );
assertEquals( TEST_REPOSITORY_NAME, getFieldValue( "editRepository_name" ) );
assertTrue( getFieldValue( "editRepository_directory" ).endsWith( TEST_REPOSITORY_DIRECTORY ) );
setFieldValue( "urlName", "edited-" + TEST_REPOSITORY_URL );
setFieldValue( "editRepository_name", "edited-" + TEST_REPOSITORY_NAME );
setFieldValue( "editRepository_directory", "edited-" + TEST_REPOSITORY_DIRECTORY );
clickButtonWithValue( "Update Repository" );
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_ID );
assertTextPresent( "edited-" + TEST_REPOSITORY_NAME );
removeManagedRepository( TEST_REPOSITORY_ID );
}
public void testEditRepositoryWithInvalidValues()
{
createManagedRepository( TEST_REPOSITORY_ID, TEST_REPOSITORY_URL, TEST_REPOSITORY_NAME, TEST_REPOSITORY_DIRECTORY );
waitPage();
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_NAME );
clickLinkWithLocator( "//a[contains(@href, '/admin/editRepository!input.action?repoId=" + TEST_REPOSITORY_ID + "')]" );
assertPage( "Configuration" );
assertTextPresent( "Configuration" );
assertTextPresent( "Edit Managed Repository" );
assertEquals( TEST_REPOSITORY_URL, getFieldValue( "urlName" ) );
assertEquals( TEST_REPOSITORY_NAME, getFieldValue( "editRepository_name" ) );
assertTrue( getFieldValue( "editRepository_directory" ).endsWith( TEST_REPOSITORY_DIRECTORY ) );
setFieldValue( "urlName", "" );
setFieldValue( "editRepository_name", "" );
setFieldValue( "editRepository_directory", "" );
clickButtonWithValue( "Update Repository", false );
assertTextPresent( "You must enter the url name." );
assertTextPresent( "You must enter the repository name." );
assertTextPresent( "You must enter the repository directory." );
removeManagedRepository( TEST_REPOSITORY_ID );
}
public void testDeleteRepositoryButLeaveUnmodified()
{
createManagedRepository( TEST_REPOSITORY_ID, TEST_REPOSITORY_URL, TEST_REPOSITORY_NAME, TEST_REPOSITORY_DIRECTORY );
waitPage();
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_ID );
clickLinkWithLocator( "//a[contains(@href, '/admin/deleteRepository!input.action?repoId=" + TEST_REPOSITORY_ID + "')]" );
clickLinkWithLocator( "deleteRepository_operationunmodified", false );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_ID );
removeManagedRepository( TEST_REPOSITORY_ID );
}
public void testDeleteRepositoryAndContents()
{
createManagedRepository( TEST_REPOSITORY_ID, TEST_REPOSITORY_URL, TEST_REPOSITORY_NAME, TEST_REPOSITORY_DIRECTORY );
waitPage();
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_ID );
removeManagedRepository( TEST_REPOSITORY_ID );
}
public void testDeleteRepositoryButLeaveContentsUnmodified()
{
createManagedRepository( TEST_REPOSITORY_ID, TEST_REPOSITORY_URL, TEST_REPOSITORY_NAME, TEST_REPOSITORY_DIRECTORY );
waitPage();
assertPage( "Administration" );
assertTextPresent( TEST_REPOSITORY_ID );
clickLinkWithLocator( "//a[contains(@href, '/admin/deleteRepository!input.action?repoId=" + TEST_REPOSITORY_ID + "')]" );
clickLinkWithLocator( "deleteRepository_operationdelete-entry", false );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextNotPresent( TEST_REPOSITORY_ID );
}
}

View File

@ -0,0 +1,233 @@
package org.apache.maven.archiva.web.test;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT 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 archiva proxied repositories configuration
*
* @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
*/
public class ProxiedRepositoryTest
extends AbstractArchivaTestCase
{
/**
*
*/
protected void initialize()
{
super.initialize();
createTestRepo();
}
/**
* Create a proxied repo which will be used for testing
*/
private void createTestRepo()
{
clickProxiedRepositories();
if ( isTextPresent( "There are no proxied repositories configured yet." ) )
{
clickLinkWithText( "Add Repository" );
assertPage( "Configuration" );
setFieldValue( "id", "test-proxied" );
setFieldValue( "name", "Test Proxied Repository" );
setFieldValue( "url", "http://test.com/test-proxied" );
clickButtonWithValue( "Add Repository" );
waitPage();
assertPage( "Administration" );
assertTextPresent( "Test Proxied Repository" );
assertLinkPresent( "Edit Repository" );
}
logout();
}
/**
* Test add proxied repo with invalid data
*/
public void testInvalidAddProxiedRepoConfiguration()
{
clickProxiedRepositories();
clickLinkWithText( "Add Repository" );
assertPage( "Configuration" );
clickButtonWithValue( "Add Repository", false );
assertPage( "Configuration" );
assertTextPresent( "You must enter the repository identifier." );
assertTextPresent( "You must enter the repository name." );
assertTextPresent( "You must enter the repository URL." );
logout();
}
/**
* Test edit proxied repo with valid data
*/
public void testValidEditProxiedRepoConfiguration()
{
clickProxiedRepositories();
clickLinkWithText( "Edit Repository" );
assertPage( "Configuration" );
assertTextPresent( "Edit Proxied Repository" );
setFieldValue( "name", "Test Valid" );
setFieldValue( "url", "http://valid.org/test-valid" );
clickButtonWithValue( "Update Repository" );
waitPage();
assertPage( "Administration" );
assertTextPresent( "Test Valid" );
assertLinkPresent( "Edit Repository" );
logout();
}
/**
* Test edit proxied repo with invalid data
*/
public void testInvalidEditProxiedRepoConfiguration()
{
clickProxiedRepositories();
clickLinkWithText( "Edit Repository" );
assertPage( "Configuration" );
assertTextPresent( "Edit Proxied Repository" );
setFieldValue( "name", "" );
setFieldValue( "url", "" );
clickButtonWithValue( "Update Repository", false );
assertPage( "Configuration" );
assertTextPresent( "You must enter the repository name." );
assertTextPresent( "You must enter the repository URL." );
logout();
}
/**
* Test delete repository, unmodified entry and contents
*/
public void testDeleteRepoUnmodified()
{
clickProxiedRepositories();
clickLinkWithText( "Delete Repository" );
assertPage( "Configuration" );
assertTextPresent( "Delete Proxied Repository" );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextPresent( "Test Proxied Repository" );
logout();
}
/**
* Test delete repository including contents
*/
public void testDeleteRepoRemoveFromDisk()
{
clickProxiedRepositories();
clickLinkWithText( "Delete Repository" );
assertPage( "Configuration" );
clickLinkWithLocator( "deleteProxiedRepository_operationdelete-contents", false );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextNotPresent( "Test Proxied Repository" );
logout();
}
/**
* Test delete repository, unmodified contents/entry deleted
*/
public void testDeleteRepoUnmodifiedContents()
{
clickProxiedRepositories();
clickLinkWithText( "Delete Repository" );
assertPage( "Configuration" );
clickLinkWithLocator( "deleteProxiedRepository_operationdelete-entry", false );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextNotPresent( "Test Proxied Repository" );
logout();
}
/**
* Click Settings from the navigation menu
*/
private void clickProxiedRepositories()
{
goToLoginPage();
submitLoginPage( adminUsername, adminPassword );
clickLinkWithText( "Proxied Repositories" );
assertPage( "Administration" );
assertTextPresent( "Proxied Repositories" );
}
/**
* Remove the created test repo
*/
protected void removeTestRepo()
{
if ( !isLinkPresent( "Login" ) )
{
logout();
}
clickProxiedRepositories();
if ( isTextPresent( "Delete Repository " ) )
{
clickLinkWithText( "Delete Repository" );
assertPage( "Configuration" );
clickLinkWithLocator( "deleteProxiedRepository_operationdelete-entry", false );
clickButtonWithValue( "Go" );
assertPage( "Administration" );
assertTextNotPresent( "Test Proxied Repository" );
}
logout();
}
/**
* Revert to original value
*
* @throws Exception
*/
public void tearDown()
throws Exception
{
removeTestRepo();
super.tearDown();
}
}

View File

@ -0,0 +1,129 @@
package org.apache.maven.archiva.web.test;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
public class SearchTest
extends AbstractArchivaTestCase
{
private static int PAGE_LOAD_WAIT = 1500;
public void testSearchNonExistingArtifact()
{
searchForArtifact( "asdf" );
waitPage( PAGE_LOAD_WAIT );
assertTextPresent( "No results found" );
}
public void testSearchExistingArtifact()
{
searchForArtifact( "artifact-a" );
waitPage( PAGE_LOAD_WAIT );
assertPage( "Search Results" );
assertTextPresent( "artifact-a" );
}
public void testViewSearchedArtifact()
{
// test viewing artifact (header link) listed in search results
searchForArtifact( "artifact-a" );
waitPage( PAGE_LOAD_WAIT );
getSelenium().click( "link=artifact-a" );
waitPage( PAGE_LOAD_WAIT );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
//test viewing artifact listed in search results
searchForArtifact( "artifact-a" );
waitPage( PAGE_LOAD_WAIT );
clickLinkWithText( "1.0" );
waitPage( PAGE_LOAD_WAIT );
assertPage( "Browse Repository" );
assertTextPresent( "Artifact ID" );
assertTextPresent( "artifact-a" );
assertTextPresent( "Version" );
assertTextPresent( "1.0" );
}
public void testBrowseSearchedArtifact()
{
// test viewing artifact listed in search results
searchForArtifact( "artifact-a" );
waitPage( PAGE_LOAD_WAIT );
getSelenium().click("//p[1]/span/a[1]");
waitPage( PAGE_LOAD_WAIT );
assertPage( "Browse Repository" );
assertTextPresent( "artifact-a" );
}
public void testBrowseRepoFromSearchResults()
{
searchForArtifact( "artifact-a" );
waitPage( PAGE_LOAD_WAIT );
clickLinkWithText( "[top]" );
waitPage( PAGE_LOAD_WAIT );
assertPage( "Browse Repository" );
}
private void searchForArtifact( String artifactId )
{
if ( !"Maven Archiva :: Quick Search".equals( getSelenium().getTitle() ) )
{
clickLinkWithText( "Search" );
waitPage( PAGE_LOAD_WAIT );
assertPage( "Quick Search" );
}
setFieldValue( "quickSearch_q", artifactId );
clickButtonWithValue( "Submit" );
}
}

View File

@ -0,0 +1,184 @@
package org.apache.maven.archiva.web.test;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT 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 archiva 'Settings'
*
* @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
*/
public class SettingsTest
extends AbstractArchivaTestCase
{
/*
public void testRunIndexer()
{
clickSettings();
clickLinkWithText( "Run Now" );
waitPage();
assertPage( "Administration" );
logout();
} */
public void testEditIndexDirectory()
{
clickEditConfiguration();
setFieldValue( "indexPath", getBasedir() + "/target/web-ui-index" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
assertTextPresent( getBasedir() + "/target/web-ui-index" );
logout();
}
public void testValidIndexSchedule()
{
clickEditConfiguration();
setFieldValue( "second", "*" );
setFieldValue( "minute", "*" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
logout();
}
public void testInvalidIndexSchedule()
{
clickEditConfiguration();
setFieldValue( "second", "asdf" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Configuration" );
assertTextPresent( "Invalid Cron Expression" );
logout();
}
public void testEditProxyHost()
{
clickEditConfiguration();
setFieldValue( "proxy.host", "asdf" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
logout();
}
public void testValidProxyPort()
{
clickEditConfiguration();
setFieldValue( "proxy.port", "32143" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
logout();
}
public void testInvalidProxyPort()
{
clickEditConfiguration();
setFieldValue( "proxy.port", "asdf" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Configuration" );
assertTextPresent( "Port" );
assertTextPresent( "Invalid field value for field \"proxy.port\"" );
setFieldValue( "proxy.port", "-1" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
logout();
}
public void testEditProxyCredentials()
{
clickEditConfiguration();
setFieldValue( "proxy.username", "asdf" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
logout();
}
/**
* Click Edit Configuration link
*/
private void clickEditConfiguration()
{
clickSettings();
clickLinkWithText( "Edit Configuration" );
assertPage( "Configuration" );
}
/**
* Click Settings from the navigation menu
*/
private void clickSettings()
{
goToLoginPage();
submitLoginPage( adminUsername, adminPassword );
clickLinkWithText( "Settings" );
assertPage( "Administration" );
}
public void tearDown()
throws Exception
{
clickEditConfiguration();
setFieldValue( "indexPath", getBasedir() + "/target/web-ui-index" );
setFieldValue( "second", "0" );
setFieldValue( "minute", "0,30" );
setFieldValue( "hour", "*" );
setFieldValue( "dayOfMonth", "*" );
setFieldValue( "month", "*" );
setFieldValue( "dayOfWeek", "?" );
setFieldValue( "year", "" );
setFieldValue( "proxy.port", "8080" );
setFieldValue( "proxy.host", "" );
setFieldValue( "proxy.username", "" );
setFieldValue( "proxy.password", "" );
clickButtonWithValue( "Save Configuration" );
waitPage();
assertPage( "Administration" );
logout();
super.tearDown();
}
}

View File

@ -0,0 +1 @@
<configuration />

View File

@ -0,0 +1 @@
<configuration />

View File

@ -0,0 +1,7 @@
#Last Scan Information, managed by Archiva. DO NOT EDIT
#Thu Apr 19 17:04:36 PHT 2007
scan.included.files=12
scan.skipped.files=0
scan.finished.timestamp=1176973476967
scan.consumed.files=20
scan.started.timestamp=1176973467414

View File

@ -0,0 +1,25 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-a</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>artifact-a</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-b</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
</extension>
</extensions>
</build>
</project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
<versioning>
<versions>
<version>1.0</version>
</versions>
<lastUpdated>20070417090928</lastUpdated>
</versioning>
</metadata>

View File

@ -0,0 +1,25 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-b</artifactId>
<packaging>jar</packaging>
<version>2.0</version>
<name>artifact-b</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-c</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
</extension>
</extensions>
</build>
</project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-b</artifactId>
<version>2.0</version>
<versioning>
<versions>
<version>2.0</version>
</versions>
<lastUpdated>20070417090908</lastUpdated>
</versioning>
</metadata>

View File

@ -0,0 +1,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-c</artifactId>
<packaging>jar</packaging>
<version>3.0</version>
<name>artifact-c</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
</extension>
</extensions>
</build>
</project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-c</artifactId>
<version>3.0</version>
<versioning>
<versions>
<version>3.0</version>
</versions>
<lastUpdated>20070417090835</lastUpdated>
</versioning>
</metadata>

View File

@ -0,0 +1,25 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-s</artifactId>
<packaging>jar</packaging>
<version>0.1</version>
<name>artifact-s</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
</extension>
</extensions>
</build>
</project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>org.apache.maven.archiva.web.test</groupId>
<artifactId>artifact-s</artifactId>
<version>0.1</version>
<versioning>
<versions>
<version>0.1</version>
</versions>
<lastUpdated>20070417090721</lastUpdated>
</versioning>
</metadata>

View File

@ -27,4 +27,10 @@
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:target/database/users;create=true"
/>
<Resource name="jdbc/archiva" auth="Container" type="javax.sql.DataSource"
username="sa"
password=""
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:database/archiva;create=true" />
</Context>

View File

@ -141,12 +141,20 @@
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-api</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-ehcache</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>

View File

@ -31,12 +31,10 @@
<decorator:title default="Maven Archiva"/>
</title>
<style type="text/css" media="all">
@import url( "<c:url value="/css/maven-base.css" />" );
@import url( "<c:url value="/css/maven-theme.css" />" );
@import url( "<c:url value="/css/pss/table.css" />" );
@import url( "<c:url value="/css/site.css" />" );
</style>
<link rel="stylesheet" href="<c:url value="/css/maven-base.css"/>" type="text/css" media="all"/>
<link rel="stylesheet" href="<c:url value="/css/maven-theme.css"/>" type="text/css" media="all"/>
<link rel="stylesheet" href="<c:url value="/css/pss/table.css"/>" type="text/css" media="all"/>
<link rel="stylesheet" href="<c:url value="/css/site.css"/>" type="text/css" media="all"/>
<link rel="stylesheet" href="<c:url value="/css/print.css"/>" type="text/css" media="print"/>
<link rel="shortcut icon" href="<c:url value="/favicon.ico" />" />
<script type="text/javascript" src="<c:url value="/js/scriptaculous/prototype.js"/>"></script>

View File

@ -15,8 +15,7 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-parent</artifactId>

View File

@ -105,6 +105,16 @@ sha1sum $CL/maven-metadata.xml > $CL/maven-metadata.xml.sha1
retval=$?; if [ $retval != 0 ]; then exit $retval; fi
retval=$?; if [ $retval != 0 ]; then exit $retval; fi
# ------------------------------------------------------------------------
# Cica.es synchronization: sync the central repository to Cica.es
# ------------------------------------------------------------------------
[ "$MODE" = "batch" ] && echo && echo "Press any key to run the sync to Cica, or hit ^C to quit." && echo
./synchronize-central-to-cica.sh $syncProperties
retval=$?; if [ $retval != 0 ]; then exit $retval; fi
retval=$?; if [ $retval != 0 ]; then exit $retval; fi
# ------------------------------------------------------------------------
# Copy the mod_rewrite rules to the Maven 1.x repository
# ------------------------------------------------------------------------

View File

@ -0,0 +1,7 @@
#!/bin/sh
CONTACTS="Daniel brolund <daniel.brolund@agical.com>"
MODE=rsync_ssh
FROM=mavensync@shell.sourceforge.net:/home/groups/r/rm/rmock/htdocs/repository
GROUP_DIR=com/agical/rmock

View File

@ -0,0 +1,9 @@
#!/bin/sh
CONTACT="Vlad Skarzhevskyy <skarzhevskyy@gmail.com>"
MODE=rsync
FROM=mavensync@pyx4me.com::maven2-release
GROUP_DIR=com/pyx4me/
NO_SSH=true

View File

@ -0,0 +1,7 @@
#!/bin/sh
CONTACTS="Leonid Vysochyn <leonid.vysochyn@gmail.com>"
MODE=rsync_ssh
FROM=mavensync@shell.sourceforge.net:/home/groups/j/jx/jxls/htdocs/repository/releases
GROUP_DIR=net/sf/jxls

View File

@ -0,0 +1,9 @@
#!/bin/sh
CONTACTS="Christian Schulte <cs@jdtaus.org>, jDTAUS Support <support@jdtaus.org>"
MODE=rsync
FROM=rsync://repository.jdtaus.org/repository
GROUP_DIR=org/jdtaus/
NO_SSH=true

31
pom.xml
View File

@ -21,7 +21,7 @@
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>4</version>
<version>5</version>
<relativePath>../pom/maven/pom.xml</relativePath>
</parent>
<groupId>org.apache.maven.archiva</groupId>
@ -86,6 +86,10 @@
<url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url>
</scm>
<distributionManagement>
<repository>
<id>apache.releases</id>
<url>scpexe://people.apache.org/www/people.apache.org/builds/maven/archiva/${version}/m2-staging-repository</url>
</repository>
<site>
<id>apache.website</id>
<url>
@ -136,6 +140,11 @@
</tagBase>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<version>1.0-alpha-15</version>
</plugin>
</plugins>
</pluginManagement>
</build>
@ -183,6 +192,26 @@
<artifactId>plexus-utils</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-api</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-api</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-ehcache</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>