Author: jdcasey Date: Wed Mar 11 21:15:51 2009 New Revision: 752622 URL: http://svn.apache.org/viewvc?rev=752622&view=rev Log: [MNG-4074] Fixing cyclic reference problem with a parent pom declaring one of its modules as a plugin-level dependency in a plugin it uses. Also, fixing a problem where the version-expression transformation chokes on invalid POMs from the repository during invoker:install.
Added: maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml (with props) Modified: maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java Modified: maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java?rev=752622&r1=752621&r2=752622&view=diff ============================================================================== --- maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java (original) +++ maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java Wed Mar 11 21:15:51 2009 @@ -158,7 +158,14 @@ { project.addProjectReference( (MavenProject) projectMap.get( dependencyId ) ); - dag.addEdge( id, dependencyId ); + addEdgeWithParentCheck( projectMap, dependencyId, project, id ); + + // TODO: Shouldn't we add an edge between the plugin and its dependency? + // Note that doing this may result in cycles...run + // ProjectSorterTest.testPluginDependenciesInfluenceSorting_DeclarationInParent() + // for more information, if you change this: + + // dag.addEdge( pluginId, dependencyId ); } } } Modified: maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java?rev=752622&r1=752621&r2=752622&view=diff ============================================================================== --- maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java (original) +++ maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java Wed Mar 11 21:15:51 2009 @@ -108,13 +108,6 @@ { throw new ArtifactDeploymentException( "Failed to read or write POM for version transformation.", e ); } - catch ( XmlPullParserException e ) - { - throw new ArtifactDeploymentException( - "Failed to parse POM for version transformation. Error was in file: " - + pomFile + ", at line: " + e.getLineNumber() + ", column: " - + e.getColumnNumber(), e ); - } catch ( ModelInterpolationException e ) { throw new ArtifactDeploymentException( "Failed to interpolate POM versions.", e ); @@ -170,13 +163,6 @@ { throw new ArtifactInstallationException( "Failed to read or write POM for version transformation.", e ); } - catch ( XmlPullParserException e ) - { - throw new ArtifactInstallationException( - "Failed to parse POM for version transformation. Error was in file: " - + pomFile + ", at line: " + e.getLineNumber() + ", column: " - + e.getColumnNumber(), e ); - } catch ( ModelInterpolationException e ) { throw new ArtifactInstallationException( "Failed to interpolate POM versions.", e ); @@ -190,7 +176,7 @@ } protected File transformVersions( File pomFile, Artifact artifact, ArtifactRepository localRepository ) - throws IOException, XmlPullParserException, ModelInterpolationException + throws IOException, ModelInterpolationException { ProjectBuilderConfiguration pbConfig; File projectDir; @@ -224,14 +210,33 @@ { reader = ReaderFactory.newXmlReader( pomFile ); model = new MavenXpp3Reader().read( reader ); + + interpolateVersions( pomFile, outputFile, model, projectDir, pbConfig ); + } + catch ( XmlPullParserException e ) + { + String message = + "Failed to parse POM for version transformation. Proceeding with original (non-interpolated) POM file."; + + String detail = "\n\nNOTE: Error was in file: " + pomFile + ", at line: " + + e.getLineNumber() + ", column: " + e.getColumnNumber(); + + if ( getLogger().isDebugEnabled() ) + { + getLogger().debug( message + detail, e ); + } + else + { + getLogger().warn( message + " See debug output for details." ); + } + + outputFile = pomFile; } finally { IOUtil.close( reader ); } - interpolateVersions( pomFile, outputFile, model, projectDir, pbConfig ); - return outputFile; } Modified: maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java?rev=752622&r1=752621&r2=752622&view=diff ============================================================================== --- maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java (original) +++ maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java Wed Mar 11 21:15:51 2009 @@ -279,46 +279,98 @@ } public void testPluginDependenciesInfluenceSorting() - throws Exception { - List projects = new ArrayList(); - - MavenProject parentProject = createProject( "groupId", "parent", "1.0" ); - - MavenProject project1 = createProject( "groupId", "artifactId1", "1.0" ); - project1.setParent(parentProject); - projects.add( project1 ); - - MavenProject project2 = createProject( "groupId", "artifactId2", "1.0" ); - project2.setParent(parentProject); - projects.add( project2 ); - - MavenProject pluginProject = createProject( "groupId", "pluginArtifact", "1.0" ); - pluginProject.setParent(parentProject); - projects.add( pluginProject ); - - Plugin plugin = new Plugin(); - plugin.setGroupId(pluginProject.getGroupId()); - plugin.setArtifactId(pluginProject.getArtifactId()); - plugin.setVersion(pluginProject.getVersion()); - - plugin.addDependency( createDependency( project2 ) ); + throws Exception + { + List projects = new ArrayList(); - Model model = project1.getModel(); - Build build = model.getBuild(); + MavenProject parentProject = createProject( "groupId", "parent", "1.0" ); + projects.add( parentProject ); - if ( build == null ) - { - build = new Build(); - model.setBuild( build ); - } + MavenProject declaringProject = createProject( "groupId", "declarer", "1.0" ); + declaringProject.setParent( parentProject ); + projects.add( declaringProject ); + + MavenProject pluginLevelDepProject = createProject( "groupId", "plugin-level-dep", "1.0" ); + pluginLevelDepProject.setParent( parentProject ); + projects.add( pluginLevelDepProject ); + + MavenProject pluginProject = createProject( "groupId", "plugin", "1.0" ); + pluginProject.setParent( parentProject ); + projects.add( pluginProject ); + + Plugin plugin = new Plugin(); + plugin.setGroupId( pluginProject.getGroupId() ); + plugin.setArtifactId( pluginProject.getArtifactId() ); + plugin.setVersion( pluginProject.getVersion() ); + + plugin.addDependency( createDependency( pluginLevelDepProject ) ); + + Model model = declaringProject.getModel(); + Build build = model.getBuild(); + + if ( build == null ) + { + build = new Build(); + model.setBuild( build ); + } + + build.addPlugin( plugin ); + + projects = new ProjectSorter( projects ).getSortedProjects(); + + assertEquals( parentProject, projects.get( 0 ) ); + + // the order of these two is non-deterministic, based on when they're added to the reactor. + assertTrue( projects.contains( pluginProject ) ); + assertTrue( projects.contains( pluginLevelDepProject ) ); + + // the declaring project MUST be listed after the plugin and its plugin-level dep, though. + assertEquals( declaringProject, projects.get( 3 ) ); + } - build.addPlugin( plugin ); + public void testPluginDependenciesInfluenceSorting_DeclarationInParent() + throws Exception + { + List projects = new ArrayList(); - projects = new ProjectSorter( projects ).getSortedProjects(); + MavenProject parentProject = createProject( "groupId", "parent-declarer", "1.0" ); + projects.add( parentProject ); - assertEquals( project1, projects.get( 2 ) ); - assertTrue( projects.contains( project2 ) ); - assertTrue( projects.contains( pluginProject ) ); + MavenProject pluginProject = createProject( "groupId", "plugin", "1.0" ); + pluginProject.setParent( parentProject ); + projects.add( pluginProject ); + + MavenProject pluginLevelDepProject = createProject( "groupId", "plugin-level-dep", "1.0" ); + pluginLevelDepProject.setParent( parentProject ); + projects.add( pluginLevelDepProject ); + + Plugin plugin = new Plugin(); + plugin.setGroupId( pluginProject.getGroupId() ); + plugin.setArtifactId( pluginProject.getArtifactId() ); + plugin.setVersion( pluginProject.getVersion() ); + + plugin.addDependency( createDependency( pluginLevelDepProject ) ); + + Model model = parentProject.getModel(); + Build build = model.getBuild(); + + if ( build == null ) + { + build = new Build(); + model.setBuild( build ); + } + + build.addPlugin( plugin ); + + projects = new ProjectSorter( projects ).getSortedProjects(); + + System.out.println( projects ); + + assertEquals( parentProject, projects.get( 0 ) ); + + // the order of these two is non-deterministic, based on when they're added to the reactor. + assertTrue( projects.contains( pluginProject ) ); + assertTrue( projects.contains( pluginLevelDepProject ) ); } private Dependency createDependency( MavenProject project ) Modified: maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java?rev=752622&r1=752621&r2=752622&view=diff ============================================================================== --- maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java (original) +++ maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java Wed Mar 11 21:15:51 2009 @@ -74,7 +74,7 @@ private static final String VERSION = "blah"; private VersionExpressionTransformation transformation; - + private Set toDelete = new HashSet(); public void setUp() @@ -85,18 +85,18 @@ transformation = (VersionExpressionTransformation) lookup( ArtifactTransformation.class.getName(), "version-expression" ); } - + public void tearDown() throws Exception - { + { super.tearDown(); - + if ( toDelete != null && !toDelete.isEmpty() ) { for ( Iterator it = toDelete.iterator(); it.hasNext(); ) { File f = (File) it.next(); - + try { FileUtils.forceDelete( f ); @@ -108,14 +108,60 @@ } } } + } + + public void testTransformForInstall_AbortOnInvalidPOM() + throws URISyntaxException, IOException, XmlPullParserException, ModelInterpolationException + { + String pomResource = "version-expressions/invalid-pom.xml"; + File pomFile = getPom( pomResource ); + + File projectDir; + if ( pomFile != null ) + { + projectDir = pomFile.getParentFile(); } - + else + { + projectDir = File.createTempFile( "VersionExpressionTransformationTest.project.", ".tmp.dir" ); + projectDir.delete(); + projectDir.mkdirs(); + + toDelete.add( projectDir ); + + File newPomFile = new File( projectDir, "pom.xml" ); + FileUtils.copyFile( pomFile, newPomFile ); + + pomFile = newPomFile; + } + + File repoDir = File.createTempFile( "VersionExpressionTransformationTest.repo.", ".tmp.dir" ); + repoDir.delete(); + repoDir.mkdirs(); + + toDelete.add( repoDir ); + + Artifact a = + new DefaultArtifact( "groupId", "artifactId", VersionRange.createFromVersion( "1" ), + null, "jar", null, new DefaultArtifactHandler( "jar" ) ); + + ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile ); + a.addMetadata( pam ); + + ArtifactRepository localRepository = + new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), new DefaultRepositoryLayout() ); + + transformation.transformVersions( pomFile, a, localRepository ); + + assertEquals( pomFile, pam.getFile() ); + } + public void testTransformForInstall_PreserveComments() throws URISyntaxException, IOException, XmlPullParserException, ModelInterpolationException { String pomResource = "version-expressions/pom-with-comments.xml"; File pomFile = getPom( pomResource ); - + Model model; Reader reader = null; try @@ -128,9 +174,9 @@ { IOUtil.close( reader ); } - + File newPom = runTransformVersion_VanillaArtifact( model, pomFile ); - + StringWriter writer = new StringWriter(); reader = null; try @@ -142,9 +188,9 @@ { IOUtil.close( reader ); } - + assertTrue( "XML comment not found.", writer.toString().indexOf( "This is a comment." ) > -1 ); - + reader = new StringReader( writer.toString() ); try { @@ -156,17 +202,17 @@ } assertEquals( "1.0", model.getVersion() ); - + assertNotNull( model.getProperties() ); - + assertNotNull( model.getProperties().getProperty( "other.version" ) ); assertEquals( "${testVersion}", model.getProperties().getProperty( "other.version" ) ); - + assertNotNull( model.getScm() ); - + assertNotNull( model.getScm().getConnection() ); assertEquals( "${testVersion}", model.getScm().getConnection() ); - + assertNotNull( model.getScm().getUrl() ); assertEquals( "${testVersion}", model.getScm().getUrl() ); } @@ -176,21 +222,21 @@ { ClassLoader cloader = Thread.currentThread().getContextClassLoader(); URL resource = cloader.getResource( pom ); - + if ( resource == null ) { fail( "POM classpath resource not found: '" + pom + "'." ); } - + File tempDir = File.createTempFile( "VersionExpressionTransformationTest.", ".dir.tmp" ); tempDir.delete(); tempDir.mkdirs(); - + toDelete.add( tempDir ); - + File pomFile = new File( tempDir, "pom.xml" ); FileUtils.copyFile( new File( new URI( resource.toExternalForm() ).normalize() ), pomFile ); - + return pomFile; } @@ -202,9 +248,9 @@ File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); pomDir.delete(); pomDir.mkdirs(); - + toDelete.add( pomDir ); - + File pomFile = new File( pomDir, "pom.xml" ); FileWriter writer = null; @@ -254,9 +300,9 @@ File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); pomDir.delete(); pomDir.mkdirs(); - + toDelete.add( pomDir ); - + File pomFile = new File( pomDir, "pom.xml" ); FileWriter writer = null; @@ -291,10 +337,10 @@ reader = new FileReader( pam.getFile() ); StringWriter swriter = new StringWriter(); IOUtil.copy( reader, swriter ); - - System.out.println( "Transformed POM:\n\n\n" + swriter.toString() ); - System.out.flush(); - + +// System.out.println( "Transformed POM:\n\n\n" + swriter.toString() ); +// System.out.flush(); + model = new MavenXpp3Reader().read( new StringReader( swriter.toString() ) ); } finally @@ -313,9 +359,9 @@ File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); pomDir.delete(); pomDir.mkdirs(); - + toDelete.add( pomDir ); - + File pomFile = new File( pomDir, "pom.xml" ); FileWriter writer = null; @@ -358,123 +404,123 @@ assertTransformedVersions( model ); } - // FIXME: We can't be this smart (yet) since the deployment step transforms from the + // FIXME: We can't be this smart (yet) since the deployment step transforms from the // original POM once again and re-installs over the top of the install step. -// public void testTransformForInstall_SkipIfProjectArtifactMetadataResolvedFlagIsSet() -// throws IOException, ArtifactInstallationException, XmlPullParserException -// { -// Model model = buildTestModel(); -// -// File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); -// pomDir.delete(); -// pomDir.mkdirs(); -// try -// { -// File pomFile = new File( pomDir, "pom.xml" ); -// pomFile.deleteOnExit(); -// -// FileWriter writer = null; -// try -// { -// writer = new FileWriter( pomFile ); -// new MavenXpp3Writer().write( writer, model ); -// } -// finally -// { -// IOUtil.close( writer ); -// } -// -// Artifact a = -// new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null, -// new DefaultArtifactHandler( "jar" ), false ); -// ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile ); -// pam.setVersionExpressionsResolved( true ); -// -// a.addMetadata( pam ); -// -// transformation.transformForInstall( a, null ); -// -// assertEquals( pomFile, pam.getFile() ); -// -// assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() ); -// -// FileReader reader = null; -// try -// { -// reader = new FileReader( pomFile ); -// model = new MavenXpp3Reader().read( reader ); -// } -// finally -// { -// IOUtil.close( reader ); -// } -// -// assertEquals( "${testVersion}", model.getVersion() ); -// } -// finally -// { -// FileUtils.forceDelete( pomDir ); -// } -// } + // public void testTransformForInstall_SkipIfProjectArtifactMetadataResolvedFlagIsSet() + // throws IOException, ArtifactInstallationException, XmlPullParserException + // { + // Model model = buildTestModel(); + // + // File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); + // pomDir.delete(); + // pomDir.mkdirs(); + // try + // { + // File pomFile = new File( pomDir, "pom.xml" ); + // pomFile.deleteOnExit(); + // + // FileWriter writer = null; + // try + // { + // writer = new FileWriter( pomFile ); + // new MavenXpp3Writer().write( writer, model ); + // } + // finally + // { + // IOUtil.close( writer ); + // } + // + // Artifact a = + // new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null, + // new DefaultArtifactHandler( "jar" ), false ); + // ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile ); + // pam.setVersionExpressionsResolved( true ); + // + // a.addMetadata( pam ); + // + // transformation.transformForInstall( a, null ); + // + // assertEquals( pomFile, pam.getFile() ); + // + // assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() ); + // + // FileReader reader = null; + // try + // { + // reader = new FileReader( pomFile ); + // model = new MavenXpp3Reader().read( reader ); + // } + // finally + // { + // IOUtil.close( reader ); + // } + // + // assertEquals( "${testVersion}", model.getVersion() ); + // } + // finally + // { + // FileUtils.forceDelete( pomDir ); + // } + // } - // FIXME: We can't be this smart (yet) since the deployment step transforms from the + // FIXME: We can't be this smart (yet) since the deployment step transforms from the // original POM once again and re-installs over the top of the install step. -// public void testTransformForDeploy_SkipIfProjectArtifactMetadataResolvedFlagIsSet() -// throws IOException, XmlPullParserException, ArtifactDeploymentException -// { -// Model model = buildTestModel(); -// -// File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); -// pomDir.delete(); -// pomDir.mkdirs(); -// try -// { -// File pomFile = new File( pomDir, "pom.xml" ); -// pomFile.deleteOnExit(); -// -// FileWriter writer = null; -// try -// { -// writer = new FileWriter( pomFile ); -// new MavenXpp3Writer().write( writer, model ); -// } -// finally -// { -// IOUtil.close( writer ); -// } -// -// Artifact a = -// new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null, -// new DefaultArtifactHandler( "jar" ), false ); -// ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile ); -// pam.setVersionExpressionsResolved( true ); -// -// a.addMetadata( pam ); -// -// transformation.transformForDeployment( a, null, null ); -// -// assertEquals( pomFile, pam.getFile() ); -// -// assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() ); -// -// FileReader reader = null; -// try -// { -// reader = new FileReader( pomFile ); -// model = new MavenXpp3Reader().read( reader ); -// } -// finally -// { -// IOUtil.close( reader ); -// } -// -// assertEquals( "${testVersion}", model.getVersion() ); -// } -// finally -// { -// FileUtils.forceDelete( pomDir ); -// } -// } + // public void testTransformForDeploy_SkipIfProjectArtifactMetadataResolvedFlagIsSet() + // throws IOException, XmlPullParserException, ArtifactDeploymentException + // { + // Model model = buildTestModel(); + // + // File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); + // pomDir.delete(); + // pomDir.mkdirs(); + // try + // { + // File pomFile = new File( pomDir, "pom.xml" ); + // pomFile.deleteOnExit(); + // + // FileWriter writer = null; + // try + // { + // writer = new FileWriter( pomFile ); + // new MavenXpp3Writer().write( writer, model ); + // } + // finally + // { + // IOUtil.close( writer ); + // } + // + // Artifact a = + // new DefaultArtifact( "group", "artifact", VersionRange.createFromVersion( "1" ), null, "jar", null, + // new DefaultArtifactHandler( "jar" ), false ); + // ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile ); + // pam.setVersionExpressionsResolved( true ); + // + // a.addMetadata( pam ); + // + // transformation.transformForDeployment( a, null, null ); + // + // assertEquals( pomFile, pam.getFile() ); + // + // assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() ); + // + // FileReader reader = null; + // try + // { + // reader = new FileReader( pomFile ); + // model = new MavenXpp3Reader().read( reader ); + // } + // finally + // { + // IOUtil.close( reader ); + // } + // + // assertEquals( "${testVersion}", model.getVersion() ); + // } + // finally + // { + // FileUtils.forceDelete( pomDir ); + // } + // } public void testTransformVersion_ShouldInterpolate_VanillaArtifact_ModelProperties() throws IOException, XmlPullParserException, ModelInterpolationException @@ -482,7 +528,7 @@ Model model = buildTestModel(); File newPom = runTransformVersion_VanillaArtifact( model, null ); - + FileReader reader = null; try { @@ -504,7 +550,7 @@ Model model = buildTestModel(); File newPom = runTransformVersion_ArtifactWithProject( model, new DefaultProjectBuilderConfiguration(), null ); - + FileReader reader = null; try { @@ -528,10 +574,12 @@ Properties props = model.getProperties(); model.setProperties( new Properties() ); - File newPom = runTransformVersion_ArtifactWithProject( + File newPom = + runTransformVersion_ArtifactWithProject( model, - new DefaultProjectBuilderConfiguration().setExecutionProperties( props ), null ); - + new DefaultProjectBuilderConfiguration().setExecutionProperties( props ), + null ); + FileReader reader = null; try { @@ -560,11 +608,11 @@ projectDir = File.createTempFile( "VersionExpressionTransformationTest.project.", ".tmp.dir" ); projectDir.delete(); projectDir.mkdirs(); - + toDelete.add( projectDir ); - + pomFile = new File( projectDir, "pom.xml" ); - + FileWriter writer = null; try { @@ -580,23 +628,23 @@ File repoDir = File.createTempFile( "VersionExpressionTransformationTest.repo.", ".tmp.dir" ); repoDir.delete(); repoDir.mkdirs(); - + toDelete.add( repoDir ); File dir = new File( projectDir, "target" ); dir.mkdirs(); - + if ( model.getBuild() == null ) { model.setBuild( new Build() ); } - + model.getBuild().setDirectory( dir.getAbsolutePath() ); Artifact a = new DefaultArtifact( model.getGroupId(), model.getArtifactId(), VersionRange.createFromVersion( "1" ), null, "jar", null, new DefaultArtifactHandler( "jar" ) ); - + a.addMetadata( new ProjectArtifactMetadata( a, pomFile ) ); ArtifactRepository localRepository = @@ -607,7 +655,8 @@ return new File( projectDir, "target/pom-transformed.xml" ); } - private File runTransformVersion_ArtifactWithProject( Model model, ProjectBuilderConfiguration pbConfig, File pomFile ) + private File runTransformVersion_ArtifactWithProject( Model model, ProjectBuilderConfiguration pbConfig, + File pomFile ) throws IOException, XmlPullParserException, ModelInterpolationException { File projectDir; @@ -620,11 +669,11 @@ projectDir = File.createTempFile( "VersionExpressionTransformationTest.project.", ".tmp.dir" ); projectDir.delete(); projectDir.mkdirs(); - + toDelete.add( projectDir ); - + pomFile = new File( projectDir, "pom.xml" ); - + FileWriter writer = null; try { @@ -640,17 +689,17 @@ File repoDir = File.createTempFile( "VersionExpressionTransformationTest.repo.", ".tmp.dir" ); repoDir.delete(); repoDir.mkdirs(); - + toDelete.add( repoDir ); File dir = new File( projectDir, "target" ); dir.mkdirs(); - + if ( model.getBuild() == null ) { model.setBuild( new Build() ); } - + model.getBuild().setDirectory( dir.getAbsolutePath() ); MavenProject project = new MavenProject( model ); @@ -662,7 +711,7 @@ new ArtifactWithProject( project, "jar", null, new DefaultArtifactHandler( "jar" ), false ); a.addMetadata( new ProjectArtifactMetadata( a, pomFile ) ); - + ArtifactRepository localRepository = new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), new DefaultRepositoryLayout() ); @@ -684,10 +733,10 @@ File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); pomDir.delete(); pomDir.mkdirs(); - + toDelete.add( pomDir ); File pomFile = new File( pomDir, "pom.xml" ); - + FileWriter writer = null; try { @@ -700,9 +749,9 @@ } File output = new File( pomDir, "output.xml" ); - + transformation.interpolateVersions( pomFile, output, model, pomDir, new DefaultProjectBuilderConfiguration() ); - + FileReader reader = null; try { @@ -725,10 +774,10 @@ File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); pomDir.delete(); pomDir.mkdirs(); - + toDelete.add( pomDir ); File pomFile = new File( pomDir, "pom.xml" ); - + FileWriter writer = null; try { @@ -741,9 +790,9 @@ } File output = new File( pomDir, "output.xml" ); - + transformation.interpolateVersions( pomFile, output, model, pomDir, new DefaultProjectBuilderConfiguration() ); - + FileReader reader = null; try { @@ -799,11 +848,11 @@ File pomDir = File.createTempFile( "VersionExpressionTransformationTest.", ".tmp.dir" ); pomDir.delete(); pomDir.mkdirs(); - + toDelete.add( pomDir ); - + File pomFile = new File( pomDir, "pom.xml" ); - + FileWriter writer = null; try { @@ -819,10 +868,10 @@ model.setProperties( new Properties() ); File output = new File( pomDir, "output.xml" ); - + transformation.interpolateVersions( pomFile, output, model, pomDir, new DefaultProjectBuilderConfiguration().setExecutionProperties( props ) ); - + FileReader reader = null; try { Added: maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml?rev=752622&view=auto ============================================================================== --- maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml (added) +++ maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml Wed Mar 11 21:15:51 2009 @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a comment. --> +<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.test</groupId> + <artifactId>invalid-pom</artifactId> + <version>${testVersion}</version> + <packaging>pom</packaging> + + <scm> + <connection>${testVersion}</connection> + <url>${testVersion}</url> + </scm> + + <dependencies> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + </dependencies> + + <properties> + <testVersion>1.0</testVersion> + <other.version>${testVersion}</other.version> + </properties> + +</project> Propchange: maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml ------------------------------------------------------------------------------ svn:eol-style = native