Skip to content

Commit 2e66809

Browse files
committed
[MNG-6952] Fail early if pom cannot be transformed
1 parent 65ec04c commit 2e66809

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@
1919
* under the License.
2020
*/
2121

22+
import static org.hamcrest.MatcherAssert.assertThat;
2223
import static org.hamcrest.Matchers.containsString;
2324
import static org.hamcrest.Matchers.empty;
25+
import static org.hamcrest.Matchers.greaterThan;
2426
import static org.hamcrest.Matchers.hasKey;
2527
import static org.hamcrest.Matchers.is;
26-
import static org.junit.Assert.assertThat;
2728

2829
import java.io.File;
2930
import java.nio.file.Files;
@@ -34,7 +35,6 @@
3435
import java.util.Properties;
3536

3637
import org.apache.maven.AbstractCoreMavenComponentTestCase;
37-
import org.apache.maven.artifact.InvalidArtifactRTException;
3838
import org.apache.maven.execution.MavenSession;
3939
import org.apache.maven.model.building.FileModelSource;
4040
import org.apache.maven.model.building.ModelBuildingRequest;
@@ -235,9 +235,9 @@ public void testReadInvalidPom()
235235
{
236236
projectBuilder.build( pomFile, configuration );
237237
}
238-
catch ( InvalidArtifactRTException iarte )
238+
catch ( Exception ex )
239239
{
240-
assertThat( iarte.getMessage(), containsString( "The groupId cannot be empty." ) );
240+
assertThat( ex.getMessage(), containsString( "expected START_TAG or END_TAG not TEXT" ) );
241241
}
242242

243243
// multi projects build entry point
@@ -248,9 +248,9 @@ public void testReadInvalidPom()
248248
catch ( ProjectBuildingException ex )
249249
{
250250
assertEquals( 1, ex.getResults().size() );
251-
MavenProject project = ex.getResults().get( 0 ).getProject();
252-
assertNotNull( project );
253-
assertNotSame( 0, ex.getResults().get( 0 ).getProblems().size() );
251+
assertNotNull( ex.getResults().get( 0 ).getPomFile() );
252+
assertThat( ex.getResults().get( 0 ).getProblems().size(), greaterThan( 0 ) );
253+
assertThat( ex.getMessage(), containsString( "expected START_TAG or END_TAG not TEXT" ) );
254254
}
255255
}
256256

maven-model-builder/src/main/java/org/apache/maven/model/building/AbstractModelSourceTransformer.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
import org.apache.maven.xml.Factories;
4242
import org.apache.maven.xml.sax.ext.CommentRenormalizer;
4343
import org.apache.maven.xml.sax.filter.AbstractSAXFilter;
44+
import org.xml.sax.ErrorHandler;
4445
import org.xml.sax.SAXException;
46+
import org.xml.sax.SAXParseException;
4547

4648
/**
4749
* Offers a transformation implementation based on PipelineStreams.
@@ -82,6 +84,31 @@ public final InputStream transform( Path pomFile, TransformerContext context )
8284
{
8385
filter = getSAXFilter( pomFile, context );
8486
filter.setLexicalHandler( transformerHandler );
87+
// By default errors are written to stderr.
88+
// Hence set custom errorHandler to reduce noice
89+
filter.setErrorHandler( new ErrorHandler()
90+
{
91+
@Override
92+
public void warning( SAXParseException exception )
93+
throws SAXException
94+
{
95+
throw exception;
96+
}
97+
98+
@Override
99+
public void fatalError( SAXParseException exception )
100+
throws SAXException
101+
{
102+
throw exception;
103+
}
104+
105+
@Override
106+
public void error( SAXParseException exception )
107+
throws SAXException
108+
{
109+
throw exception;
110+
}
111+
} );
85112
}
86113
catch ( TransformerConfigurationException | SAXException | ParserConfigurationException e )
87114
{

maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ else if ( modelSource instanceof FileModelSource )
680680
}
681681
catch ( IOException e )
682682
{
683-
problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.V37 ).setException( e ) );
683+
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V37 ).setException( e ) );
684684
}
685685
}
686686

0 commit comments

Comments
 (0)