org.apache.maven.shared.test.plugin
Class ProjectTool

java.lang.Object
  extended by org.apache.maven.shared.test.plugin.ProjectTool

public class ProjectTool
extends java.lang.Object

Testing tool used to read MavenProject instances from pom.xml files, and to create plugin jar files (package phase of the normal build process) for distribution to a test local repository directory.

Author:
jdcasey

Field Summary
static java.lang.String INTEGRATION_TEST_DEPLOYMENT_REPO_URL
           
static java.lang.String ROLE
           
 
Constructor Summary
ProjectTool()
           
 
Method Summary
protected  org.apache.maven.shared.test.plugin.ProjectTool.PomInfo manglePomForTesting(java.io.File pomFile, java.lang.String testVersion, boolean skipUnitTests)
          Inject a special version for testing, to allow tests to unambiguously reference the plugin currently under test.
 org.apache.maven.project.MavenProject packageProjectArtifact(java.io.File pomFile, java.lang.String testVersion, boolean skipUnitTests)
          Run the plugin's Maven build up to the package phase, in order to produce a jar file for distribution to a test-time local repository.
 org.apache.maven.project.MavenProject packageProjectArtifact(java.io.File pomFile, java.lang.String testVersion, boolean skipUnitTests, java.io.File logFile)
          Run the plugin's Maven build up to the package phase, in order to produce a jar file for distribution to a test-time local repository.
 org.apache.maven.project.MavenProject readProject(java.io.File pomFile)
          Construct a MavenProject instance from the specified POM file.
 org.apache.maven.project.MavenProject readProject(java.io.File pomFile, java.io.File localRepositoryBasedir)
          Construct a MavenProject instance from the specified POM file, using the specified local repository directory to resolve ancestor POMs as needed.
 org.apache.maven.project.MavenProject readProjectWithDependencies(java.io.File pomFile)
          Construct a MavenProject instance from the specified POM file with dependencies.
 org.apache.maven.project.MavenProject readProjectWithDependencies(java.io.File pomFile, java.io.File localRepositoryBasedir)
          Construct a MavenProject instance from the specified POM file with dependencies, using the specified local repository directory to resolve ancestor POMs as needed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ROLE

public static final java.lang.String ROLE

INTEGRATION_TEST_DEPLOYMENT_REPO_URL

public static final java.lang.String INTEGRATION_TEST_DEPLOYMENT_REPO_URL
See Also:
Constant Field Values
Constructor Detail

ProjectTool

public ProjectTool()
Method Detail

readProject

public org.apache.maven.project.MavenProject readProject(java.io.File pomFile)
                                                  throws TestToolsException
Construct a MavenProject instance from the specified POM file.

Throws:
TestToolsException

readProject

public org.apache.maven.project.MavenProject readProject(java.io.File pomFile,
                                                         java.io.File localRepositoryBasedir)
                                                  throws TestToolsException
Construct a MavenProject instance from the specified POM file, using the specified local repository directory to resolve ancestor POMs as needed.

Throws:
TestToolsException

readProjectWithDependencies

public org.apache.maven.project.MavenProject readProjectWithDependencies(java.io.File pomFile)
                                                                  throws TestToolsException
Construct a MavenProject instance from the specified POM file with dependencies.

Throws:
TestToolsException

readProjectWithDependencies

public org.apache.maven.project.MavenProject readProjectWithDependencies(java.io.File pomFile,
                                                                         java.io.File localRepositoryBasedir)
                                                                  throws TestToolsException
Construct a MavenProject instance from the specified POM file with dependencies, using the specified local repository directory to resolve ancestor POMs as needed.

Throws:
TestToolsException

packageProjectArtifact

public org.apache.maven.project.MavenProject packageProjectArtifact(java.io.File pomFile,
                                                                    java.lang.String testVersion,
                                                                    boolean skipUnitTests)
                                                             throws TestToolsException
Run the plugin's Maven build up to the package phase, in order to produce a jar file for distribution to a test-time local repository. The testVersion parameter specifies the version to be used in the <version/> element of the plugin configuration, and also in fully qualified, unambiguous goal invocations (as in org.apache.maven.plugins:maven-eclipse-plugin:test:eclipse).

Parameters:
pomFile - The plugin's POM
testVersion - The version to use for testing this plugin. To promote test resiliency, this version should remain unchanged, regardless of what plugin version is under development.
skipUnitTests - In cases where test builds occur during the unit-testing phase (usually a bad testing smell), the plugin jar must be produced without running unit tests. Otherwise, the testing process will result in a recursive loop of building a plugin jar and trying to unit test it during the build. In these cases, set this flag to true.
Returns:
The resulting MavenProject, after the test version and skip flag (for unit tests) have been appropriately configured.
Throws:
TestToolsException

packageProjectArtifact

public org.apache.maven.project.MavenProject packageProjectArtifact(java.io.File pomFile,
                                                                    java.lang.String testVersion,
                                                                    boolean skipUnitTests,
                                                                    java.io.File logFile)
                                                             throws TestToolsException
Run the plugin's Maven build up to the package phase, in order to produce a jar file for distribution to a test-time local repository. The testVersion parameter specifies the version to be used in the <version/> element of the plugin configuration, and also in fully qualified, unambiguous goal invocations (as in org.apache.maven.plugins:maven-eclipse-plugin:test:eclipse).

Parameters:
pomFile - The plugin's POM
testVersion - The version to use for testing this plugin. To promote test resiliency, this version should remain unchanged, regardless of what plugin version is under development.
skipUnitTests - In cases where test builds occur during the unit-testing phase (usually a bad testing smell), the plugin jar must be produced without running unit tests. Otherwise, the testing process will result in a recursive loop of building a plugin jar and trying to unit test it during the build. In these cases, set this flag to true.
logFile - The file to which build output should be logged, in order to allow later inspection in case this build fails.
Returns:
The resulting MavenProject, after the test version and skip flag (for unit tests) have been appropriately configured.
Throws:
TestToolsException

manglePomForTesting

protected org.apache.maven.shared.test.plugin.ProjectTool.PomInfo manglePomForTesting(java.io.File pomFile,
                                                                                      java.lang.String testVersion,
                                                                                      boolean skipUnitTests)
                                                                               throws TestToolsException
Inject a special version for testing, to allow tests to unambiguously reference the plugin currently under test. If test builds will be executed from the unit-testing phase, also inject <skip>true</skip> into the configuration of the maven-surefire-plugin to allow production of a test-only version of the plugin jar without running unit tests.

Parameters:
pomFile - The plugin POM
testVersion - The version that allows test builds to reference the plugin under test
skipUnitTests - If true, configure the surefire plugin to skip unit tests
Returns:
Information about mangled POM, including the temporary file to which it was written.
Throws:
TestToolsException


Copyright © 2002-2011 Apache Software Foundation. All Rights Reserved.