Package org.apache.maven.project
Class DefaultMavenProjectBuilder
- java.lang.Object
-
- org.codehaus.plexus.logging.AbstractLogEnabled
-
- org.apache.maven.project.DefaultMavenProjectBuilder
-
- All Implemented Interfaces:
MavenProjectBuilder
,org.codehaus.plexus.logging.LogEnabled
,org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
,org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
public class DefaultMavenProjectBuilder extends org.codehaus.plexus.logging.AbstractLogEnabled implements MavenProjectBuilder, org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable, org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
- Version:
- $Id: DefaultMavenProjectBuilder.java 788791 2009-06-26 17:55:26Z jdcasey $
-
-
Field Summary
Fields Modifier and Type Field Description private ProjectArtifactFactory
artifactFactory
protected ArtifactMetadataSource
artifactMetadataSource
private ArtifactRepositoryFactory
artifactRepositoryFactory
protected ArtifactResolver
artifactResolver
private org.codehaus.plexus.PlexusContainer
container
static java.lang.String
MAVEN_MODEL_VERSION
private ModelDefaultsInjector
modelDefaultsInjector
private ModelInheritanceAssembler
modelInheritanceAssembler
private ModelInterpolator
modelInterpolator
private MavenXpp3Reader
modelReader
private PathTranslator
pathTranslator
private java.util.Map
processedProjectCache
private ProfileInjector
profileInjector
protected MavenProfilesBuilder
profilesBuilder
private java.util.Map
rawProjectCache
private ModelValidator
validator
private WagonManager
wagonManager
-
Fields inherited from interface org.apache.maven.project.MavenProjectBuilder
ROLE, STANDALONE_SUPERPOM_ARTIFACTID, STANDALONE_SUPERPOM_GROUPID, STANDALONE_SUPERPOM_VERSION
-
-
Constructor Summary
Constructors Constructor Description DefaultMavenProjectBuilder()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private MavenProject
assembleLineage(Model model, java.util.LinkedList lineage, ProjectBuilderConfiguration config, java.io.File projectDescriptor, java.util.List parentSearchRepositories, java.util.Set aggregatedRemoteWagonRepositories, boolean strict)
MavenProject
build(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager)
MavenProject
build(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager, boolean checkDistributionManagementStatus)
MavenProject
build(java.io.File pom, ProjectBuilderConfiguration config)
MavenProject
build(java.io.File pom, ProjectBuilderConfiguration config, boolean checkDistributionManagementStatus)
private java.util.List
buildArtifactRepositories(Model model)
MavenProject
buildFromRepository(Artifact artifact, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository)
Build the artifact from the local repository, resolving it if necessary.MavenProject
buildFromRepository(Artifact artifact, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository, boolean allowStubModel)
Build the artifact from the local repository, resolving it if necessary.private MavenProject
buildFromSourceFileInternal(java.io.File projectDescriptor, ProjectBuilderConfiguration config, boolean checkDistributionManagementStatus)
private MavenProject
buildInternal(java.lang.String pomLocation, Model model, ProjectBuilderConfiguration config, java.util.List parentSearchRepositories, java.io.File projectDescriptor, boolean strict)
MavenProject
buildStandaloneSuperProject(ArtifactRepository localRepository)
MavenProject
buildStandaloneSuperProject(ArtifactRepository localRepository, ProfileManager profileManager)
need to pass a profilemanager with correct context (eg.MavenProject
buildStandaloneSuperProject(ProjectBuilderConfiguration config)
MavenProject
buildWithDependencies(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager)
MavenProject
buildWithDependencies(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager, org.apache.maven.wagon.events.TransferListener transferListener)
private void
calculateConcreteProjectReferences(MavenProject project, ProjectBuilderConfiguration config, java.util.Set processedProjects)
void
calculateConcreteState(MavenProject project, ProjectBuilderConfiguration config)
Variant ofMavenProjectBuilder.calculateConcreteState(MavenProject, ProjectBuilderConfiguration, boolean)
which assumes that project references should be processed.void
calculateConcreteState(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences)
Up to this point, the build section of the POM remains uninterpolated except for the artifact coordinates it contains.private void
calculateConcreteStateInternal(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences, java.util.Set processedProjects)
private void
checkStatusAndUpdate(Artifact projectArtifact, ArtifactStatus status, java.io.File file, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository)
private java.util.List
collectRestoredListOfPatterns(java.util.List patterns, java.util.List originalPatterns, java.util.List originalInterpolatedPatterns)
void
contextualize(org.codehaus.plexus.context.Context context)
private static java.lang.String
createCacheKey(java.lang.String groupId, java.lang.String artifactId, java.lang.String version)
protected java.util.Set
createExtensionArtifacts(java.lang.String projectId, java.util.List extensions)
private java.util.Map
createManagedVersionMap(java.lang.String projectId, DependencyManagement dependencyManagement, MavenProject parent)
protected java.util.Set
createPluginArtifacts(java.lang.String projectId, java.util.List plugins)
protected java.util.Set
createReportArtifacts(java.lang.String projectId, java.util.List reports)
private Model
createStubModel(Artifact projectArtifact)
private void
ensureMetadataSourceIsInitialized()
private Model
findModelFromRepository(Artifact artifact, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository, boolean allowStubModel)
private Model
getSuperModel()
void
initialize()
private void
initResourceMergeIds(java.util.List resources)
private java.util.List
injectActiveProfiles(ProfileManager profileManager, Model model)
private java.util.List
interpolateListOfStrings(java.util.List originalStrings, Model model, java.io.File projectDir, ProjectBuilderConfiguration config, boolean debugMessages)
private void
loadProjectExternalProfiles(ProfileManager profileManager, java.io.File projectDir)
private void
mergeDeterministicBuildElements(Build interpolatedBuild, Build dynamicBuild)
private void
mergeDeterministicPluginElements(java.util.List iPlugins, java.util.List dPlugins)
private void
mergeManagedDependencies(Model model, ArtifactRepository localRepository, java.util.List parentSearchRepositories)
private java.util.List
normalizeToArtifactRepositories(java.util.List remoteArtifactRepositories, java.lang.String projectId)
private boolean
objectEquals(java.lang.Object obj1, java.lang.Object obj2)
private MavenProject
processProjectLogic(java.lang.String pomLocation, MavenProject project, ProjectBuilderConfiguration config, java.io.File projectDir, java.util.List remoteRepositories, boolean strict, boolean isSuperPom)
private boolean
projectWasChanged(MavenProject project)
private void
propagateNewPlugins(MavenProject project)
private Model
readModel(java.lang.String projectId, java.io.File file, boolean strict)
private Model
readModel(java.lang.String projectId, java.lang.String pomLocation, java.io.Reader reader, boolean strict)
private Model
readModel(java.lang.String projectId, java.net.URL url, boolean strict)
private void
restoreBuildRoots(MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages)
private void
restoreDynamicProjectReferences(MavenProject project, ProjectBuilderConfiguration config, java.util.Set processedProjects)
void
restoreDynamicState(MavenProject project, ProjectBuilderConfiguration config)
void
restoreDynamicState(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences)
private void
restoreDynamicStateInternal(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences, java.util.Set processedProjects)
private java.util.List
restoreListOfStrings(java.util.List originalStrings, java.util.List originalInterpolatedStrings, java.util.List changedStrings, MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages)
private void
restoreModelBuildSection(MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages)
private java.util.List
restoreResources(java.util.List originalResources, java.util.List originalInterpolatedResources, java.util.List changedResources, MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages)
private java.lang.String
restoreString(java.lang.String originalString, java.lang.String originalInterpolatedString, java.lang.String changedString, MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages)
private java.lang.String
safeVersionlessKey(java.lang.String groupId, java.lang.String artifactId)
private java.util.List
translateListOfPaths(java.util.List paths, java.io.File basedir)
-
-
-
Field Detail
-
container
private org.codehaus.plexus.PlexusContainer container
-
profilesBuilder
protected MavenProfilesBuilder profilesBuilder
-
artifactResolver
protected ArtifactResolver artifactResolver
-
artifactMetadataSource
protected ArtifactMetadataSource artifactMetadataSource
-
artifactFactory
private ProjectArtifactFactory artifactFactory
-
modelInheritanceAssembler
private ModelInheritanceAssembler modelInheritanceAssembler
-
profileInjector
private ProfileInjector profileInjector
-
validator
private ModelValidator validator
-
rawProjectCache
private java.util.Map rawProjectCache
-
processedProjectCache
private java.util.Map processedProjectCache
-
modelReader
private MavenXpp3Reader modelReader
-
pathTranslator
private PathTranslator pathTranslator
-
modelDefaultsInjector
private ModelDefaultsInjector modelDefaultsInjector
-
modelInterpolator
private ModelInterpolator modelInterpolator
-
artifactRepositoryFactory
private ArtifactRepositoryFactory artifactRepositoryFactory
-
wagonManager
private WagonManager wagonManager
-
MAVEN_MODEL_VERSION
public static final java.lang.String MAVEN_MODEL_VERSION
- See Also:
- Constant Field Values
-
-
Method Detail
-
initialize
public void initialize()
- Specified by:
initialize
in interfaceorg.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
-
build
public MavenProject build(java.io.File pom, ProjectBuilderConfiguration config) throws ProjectBuildingException
- Specified by:
build
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
build
public MavenProject build(java.io.File pom, ProjectBuilderConfiguration config, boolean checkDistributionManagementStatus) throws ProjectBuildingException
- Specified by:
build
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
build
public MavenProject build(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager) throws ProjectBuildingException
- Specified by:
build
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
build
public MavenProject build(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager, boolean checkDistributionManagementStatus) throws ProjectBuildingException
- Specified by:
build
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
buildFromRepository
public MavenProject buildFromRepository(Artifact artifact, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository, boolean allowStubModel) throws ProjectBuildingException
Description copied from interface:MavenProjectBuilder
Build the artifact from the local repository, resolving it if necessary.- Specified by:
buildFromRepository
in interfaceMavenProjectBuilder
- Parameters:
artifact
- the artifact descriptionremoteArtifactRepositories
- the remote repository listlocalRepository
- the local repositoryallowStubModel
- return a stub if the POM is not found- Returns:
- the built project
- Throws:
ProjectBuildingException
-
buildFromRepository
public MavenProject buildFromRepository(Artifact artifact, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository) throws ProjectBuildingException
Description copied from interface:MavenProjectBuilder
Build the artifact from the local repository, resolving it if necessary.- Specified by:
buildFromRepository
in interfaceMavenProjectBuilder
- Parameters:
artifact
- the artifact descriptionremoteArtifactRepositories
- the remote repository listlocalRepository
- the local repository- Returns:
- the built project
- Throws:
ProjectBuildingException
-
buildStandaloneSuperProject
public MavenProject buildStandaloneSuperProject(ArtifactRepository localRepository) throws ProjectBuildingException
- Specified by:
buildStandaloneSuperProject
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
buildStandaloneSuperProject
public MavenProject buildStandaloneSuperProject(ArtifactRepository localRepository, ProfileManager profileManager) throws ProjectBuildingException
Description copied from interface:MavenProjectBuilder
need to pass a profilemanager with correct context (eg. with execution properties)- Specified by:
buildStandaloneSuperProject
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
buildStandaloneSuperProject
public MavenProject buildStandaloneSuperProject(ProjectBuilderConfiguration config) throws ProjectBuildingException
- Specified by:
buildStandaloneSuperProject
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
-
buildWithDependencies
public MavenProject buildWithDependencies(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager) throws ProjectBuildingException, ArtifactResolutionException, ArtifactNotFoundException
- Specified by:
buildWithDependencies
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
ArtifactResolutionException
ArtifactNotFoundException
-
buildWithDependencies
public MavenProject buildWithDependencies(java.io.File projectDescriptor, ArtifactRepository localRepository, ProfileManager profileManager, org.apache.maven.wagon.events.TransferListener transferListener) throws ProjectBuildingException, ArtifactResolutionException, ArtifactNotFoundException
- Specified by:
buildWithDependencies
in interfaceMavenProjectBuilder
- Throws:
ProjectBuildingException
ArtifactResolutionException
ArtifactNotFoundException
-
ensureMetadataSourceIsInitialized
private void ensureMetadataSourceIsInitialized() throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
createManagedVersionMap
private java.util.Map createManagedVersionMap(java.lang.String projectId, DependencyManagement dependencyManagement, MavenProject parent) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
buildFromSourceFileInternal
private MavenProject buildFromSourceFileInternal(java.io.File projectDescriptor, ProjectBuilderConfiguration config, boolean checkDistributionManagementStatus) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
findModelFromRepository
private Model findModelFromRepository(Artifact artifact, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository, boolean allowStubModel) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
normalizeToArtifactRepositories
private java.util.List normalizeToArtifactRepositories(java.util.List remoteArtifactRepositories, java.lang.String projectId) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
checkStatusAndUpdate
private void checkStatusAndUpdate(Artifact projectArtifact, ArtifactStatus status, java.io.File file, java.util.List remoteArtifactRepositories, ArtifactRepository localRepository) throws ArtifactNotFoundException
- Throws:
ArtifactNotFoundException
-
buildInternal
private MavenProject buildInternal(java.lang.String pomLocation, Model model, ProjectBuilderConfiguration config, java.util.List parentSearchRepositories, java.io.File projectDescriptor, boolean strict) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
safeVersionlessKey
private java.lang.String safeVersionlessKey(java.lang.String groupId, java.lang.String artifactId)
-
buildArtifactRepositories
private java.util.List buildArtifactRepositories(Model model) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
processProjectLogic
private MavenProject processProjectLogic(java.lang.String pomLocation, MavenProject project, ProjectBuilderConfiguration config, java.io.File projectDir, java.util.List remoteRepositories, boolean strict, boolean isSuperPom) throws ProjectBuildingException, ModelInterpolationException, InvalidRepositoryException
-
mergeDeterministicBuildElements
private void mergeDeterministicBuildElements(Build interpolatedBuild, Build dynamicBuild)
-
mergeDeterministicPluginElements
private void mergeDeterministicPluginElements(java.util.List iPlugins, java.util.List dPlugins)
-
assembleLineage
private MavenProject assembleLineage(Model model, java.util.LinkedList lineage, ProjectBuilderConfiguration config, java.io.File projectDescriptor, java.util.List parentSearchRepositories, java.util.Set aggregatedRemoteWagonRepositories, boolean strict) throws ProjectBuildingException, InvalidRepositoryException
-
mergeManagedDependencies
private void mergeManagedDependencies(Model model, ArtifactRepository localRepository, java.util.List parentSearchRepositories) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
injectActiveProfiles
private java.util.List injectActiveProfiles(ProfileManager profileManager, Model model) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
loadProjectExternalProfiles
private void loadProjectExternalProfiles(ProfileManager profileManager, java.io.File projectDir) throws ProfileActivationException
- Throws:
ProfileActivationException
-
readModel
private Model readModel(java.lang.String projectId, java.io.File file, boolean strict) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
readModel
private Model readModel(java.lang.String projectId, java.lang.String pomLocation, java.io.Reader reader, boolean strict) throws java.io.IOException, InvalidProjectModelException
- Throws:
java.io.IOException
InvalidProjectModelException
-
readModel
private Model readModel(java.lang.String projectId, java.net.URL url, boolean strict) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
createCacheKey
private static java.lang.String createCacheKey(java.lang.String groupId, java.lang.String artifactId, java.lang.String version)
-
createPluginArtifacts
protected java.util.Set createPluginArtifacts(java.lang.String projectId, java.util.List plugins) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
createReportArtifacts
protected java.util.Set createReportArtifacts(java.lang.String projectId, java.util.List reports) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
createExtensionArtifacts
protected java.util.Set createExtensionArtifacts(java.lang.String projectId, java.util.List extensions) throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
getSuperModel
private Model getSuperModel() throws ProjectBuildingException
- Throws:
ProjectBuildingException
-
contextualize
public void contextualize(org.codehaus.plexus.context.Context context) throws org.codehaus.plexus.context.ContextException
- Specified by:
contextualize
in interfaceorg.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
- Throws:
org.codehaus.plexus.context.ContextException
-
calculateConcreteState
public void calculateConcreteState(MavenProject project, ProjectBuilderConfiguration config) throws ModelInterpolationException
Variant ofMavenProjectBuilder.calculateConcreteState(MavenProject, ProjectBuilderConfiguration, boolean)
which assumes that project references should be processed. This is provided for performance reasons, for cases where you know all projects in the reactor will be processed, making traversal of project references unnecessary.- Specified by:
calculateConcreteState
in interfaceMavenProjectBuilder
- Throws:
ModelInterpolationException
-
calculateConcreteState
public void calculateConcreteState(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences) throws ModelInterpolationException
Up to this point, the build section of the POM remains uninterpolated except for the artifact coordinates it contains. This method will interpolate the build section and associated project-instance data structures. Along with theMavenProjectBuilder#restoreDynamicState(MavenProject, ProjectBuilderConfiguration, boolean)
method, this method allows expressions in these areas of the POM and project instance to be reevaluated in the event that a mojo changes one the build-path values, or a project property.
This method will process the following:- the specified project's parent project (if not null)
- specified project
- its execution project (if not null)
- any project references (iff processReferences == true)
- Specified by:
calculateConcreteState
in interfaceMavenProjectBuilder
- Throws:
ModelInterpolationException
-
calculateConcreteStateInternal
private void calculateConcreteStateInternal(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences, java.util.Set processedProjects) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
initResourceMergeIds
private void initResourceMergeIds(java.util.List resources)
-
calculateConcreteProjectReferences
private void calculateConcreteProjectReferences(MavenProject project, ProjectBuilderConfiguration config, java.util.Set processedProjects) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
translateListOfPaths
private java.util.List translateListOfPaths(java.util.List paths, java.io.File basedir)
-
restoreDynamicState
public void restoreDynamicState(MavenProject project, ProjectBuilderConfiguration config) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreDynamicState
public void restoreDynamicState(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreDynamicStateInternal
private void restoreDynamicStateInternal(MavenProject project, ProjectBuilderConfiguration config, boolean processProjectReferences, java.util.Set processedProjects) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
projectWasChanged
private boolean projectWasChanged(MavenProject project)
-
objectEquals
private boolean objectEquals(java.lang.Object obj1, java.lang.Object obj2)
-
propagateNewPlugins
private void propagateNewPlugins(MavenProject project)
-
restoreDynamicProjectReferences
private void restoreDynamicProjectReferences(MavenProject project, ProjectBuilderConfiguration config, java.util.Set processedProjects) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreBuildRoots
private void restoreBuildRoots(MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreModelBuildSection
private void restoreModelBuildSection(MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
interpolateListOfStrings
private java.util.List interpolateListOfStrings(java.util.List originalStrings, Model model, java.io.File projectDir, ProjectBuilderConfiguration config, boolean debugMessages) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreString
private java.lang.String restoreString(java.lang.String originalString, java.lang.String originalInterpolatedString, java.lang.String changedString, MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreListOfStrings
private java.util.List restoreListOfStrings(java.util.List originalStrings, java.util.List originalInterpolatedStrings, java.util.List changedStrings, MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
restoreResources
private java.util.List restoreResources(java.util.List originalResources, java.util.List originalInterpolatedResources, java.util.List changedResources, MavenProject project, ProjectBuilderConfiguration config, boolean debugMessages) throws ModelInterpolationException
- Throws:
ModelInterpolationException
-
collectRestoredListOfPatterns
private java.util.List collectRestoredListOfPatterns(java.util.List patterns, java.util.List originalPatterns, java.util.List originalInterpolatedPatterns)
-
-