Author: jdcasey Date: Wed Sep 14 11:38:54 2005 New Revision: 280903 URL: http://svn.apache.org/viewcvs?rev=280903&view=rev Log: Fixing case where non-POM artifacts are passed to the project builder for parsing...doing defensive construction of POM artifacts inside the project builder, and fixed the call in the DependenciesReport.
Modified: maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Modified: maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=280903&r1=280902&r2=280903&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java (original) +++ maven/components/trunk/maven-plugins/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java Wed Sep 14 11:38:54 2005 @@ -335,8 +335,15 @@ private MavenProject getMavenProjectFromRepository( Artifact artifact, ArtifactRepository localRepository ) throws ProjectBuildingException { + Artifact projectArtifact = artifact; + + if ( !"pom".equals( artifact.getType() ) ) + { + projectArtifact = artifactFactory.createProjectArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getScope() ); + } + // TODO: we should use the MavenMetadataSource instead - return mavenProjectBuilder.buildFromRepository( artifact, project.getRepositories(), localRepository ); + return mavenProjectBuilder.buildFromRepository( projectArtifact, project.getRepositories(), localRepository ); } } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=280903&r1=280902&r2=280903&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Sep 14 11:38:54 2005 @@ -321,17 +321,33 @@ ArtifactRepository localRepository ) throws ProjectBuildingException { - MavenProject project = getCachedProject( artifact.getGroupId(), artifact.getArtifactId(), - artifact.getVersion() ); + Artifact projectArtifact; + + if ( "pom".equals( artifact.getType() ) ) + { + projectArtifact = artifact; + } + else + { + getLogger().warn( + "Attempting to build MavenProject instance for Artifact of type: " + artifact.getType() + + "; constructing POM artifact instead." ); + + projectArtifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), + artifact.getVersion(), artifact.getScope() ); + } + + MavenProject project = getCachedProject( projectArtifact.getGroupId(), projectArtifact.getArtifactId(), + projectArtifact.getVersion() ); Model model; if ( project == null ) { // TODO: can't assume artifact is a POM try { - artifactResolver.resolve( artifact, remoteArtifactRepositories, localRepository ); + artifactResolver.resolve( projectArtifact, remoteArtifactRepositories, localRepository ); - File file = artifact.getFile(); + File file = projectArtifact.getFile(); model = readModel( file ); String downloadUrl = null; @@ -346,7 +362,7 @@ } // TODO: configurable actions dependant on status - if ( !artifact.isSnapshot() && status.compareTo( ArtifactStatus.DEPLOYED ) < 0 ) + if ( !projectArtifact.isSnapshot() && status.compareTo( ArtifactStatus.DEPLOYED ) < 0 ) { // use default policy (enabled, daily update, warn on bad checksum) ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy(); @@ -356,11 +372,11 @@ if ( policy.checkOutOfDate( new Date( file.lastModified() ) ) ) { getLogger().info( - artifact.getArtifactId() + ": updating metadata due to status of '" + status + "'" ); + projectArtifact.getArtifactId() + ": updating metadata due to status of '" + status + "'" ); try { - artifact.setResolved( false ); - artifactResolver.resolveAlways( artifact, remoteArtifactRepositories, localRepository ); + projectArtifact.setResolved( false ); + artifactResolver.resolveAlways( projectArtifact, remoteArtifactRepositories, localRepository ); } catch ( ArtifactResolutionException e ) { @@ -374,11 +390,11 @@ // Can a maven-core implementation of the Artifact interface store it, and be used in the exceptions? if ( downloadUrl != null ) { - artifact.setDownloadUrl( downloadUrl ); + projectArtifact.setDownloadUrl( downloadUrl ); } else { - artifact.setDownloadUrl( model.getUrl() ); + projectArtifact.setDownloadUrl( model.getUrl() ); } } @@ -388,15 +404,15 @@ // only not found should have the below behaviour // throw new ProjectBuildingException( "Unable to find the POM in the repository", e ); - getLogger().warn( "\n ***** Using defaults for missing POM " + artifact.getId() + " *****\n" ); + getLogger().warn( "\n ***** Using defaults for missing POM " + projectArtifact.getId() + " *****\n" ); model = new Model(); model.setModelVersion( "4.0.0" ); - model.setArtifactId( artifact.getArtifactId() ); - model.setGroupId( artifact.getGroupId() ); - model.setVersion( artifact.getVersion() ); + model.setArtifactId( projectArtifact.getArtifactId() ); + model.setGroupId( projectArtifact.getGroupId() ); + model.setVersion( projectArtifact.getVersion() ); // TODO: not correct in some instances - model.setPackaging( artifact.getType() ); + model.setPackaging( projectArtifact.getType() ); model.setDistributionManagement( new DistributionManagement() ); model.getDistributionManagement().setStatus( ArtifactStatus.GENERATED.toString() ); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]