Some googling points me to Joost[1]
Based on version (0.9.1) and its release-date (2009-09-26) I don't think this would be a wise choice.
I'll have a look at the versions-m-p

-Robert

[1] http://joost.sourceforge.net/


On Wed, 01 Feb 2012 22:51:22 +0100, Stephen Connolly <[email protected]> wrote:

Some of the pom rewriting tricks I use in v-m-p might help... but
ultimately I think the solution lies with something like
xevpp.codehaus.org (if I ever get time to finish that :rolleyes: :-) )

On 1 February 2012 21:33, Robert Scholte <[email protected]> wrote:
Hi

while trying to resolve some MRELEASE issues until I hit the
org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformProject(MavenProject,
ReleaseDescriptor, ReleaseEnvironment, List<MavenProject>, boolean,
ReleaseResult), see below.

It kind of scared me. Shouldn't there be a better solution by now, a better
XML-parser/transformer to solve this? Anyone any suggestion?
Does anyone know if this part of the code is covered enough in order to give
it a try to replace it?

I'm pretty sure that a solid implementation could solve several issues.

-Robert


private void transformProject( MavenProject project, ReleaseDescriptor
releaseDescriptor,
                                  ReleaseEnvironment releaseEnvironment,
List<MavenProject> reactorProjects,
boolean simulate, ReleaseResult result )
       throws ReleaseExecutionException, ReleaseFailureException
   {
       Document document;
       String intro = null;
       String outtro = null;
       try
       {
           String content = ReleaseUtil.readXmlFile(
ReleaseUtil.getStandardPom( project ), ls );
// we need to eliminate any extra whitespace inside elements, as
JDOM will nuke it
content = content.replaceAll( "<([^!][^>]*?)\\s{2,}([^>]*?)>",
"<$1 $2>" );
content = content.replaceAll( "(\\s{2,}|[^\\s])/>", "$1 />" );

           SAXBuilder builder = new SAXBuilder();
           document = builder.build( new StringReader( content ) );

           // Normalize line endings to platform's style (XML processors
like JDOM normalize line endings to "\n" as
           // per section 2.11 of the XML spec)
           normaliseLineEndings( document );

           // rewrite DOM as a string to find differences, since text
outside the root element is not tracked
           StringWriter w = new StringWriter();
           Format format = Format.getRawFormat();
           format.setLineSeparator( ls );
           XMLOutputter out = new XMLOutputter( format );
           out.output( document.getRootElement(), w );

           int index = content.indexOf( w.toString() );
           if ( index >= 0 )
           {
               intro = content.substring( 0, index );
outtro = content.substring( index + w.toString().length() );
           }
           else
           {
               /*
* NOTE: Due to whitespace, attribute reordering or entity
expansion the above indexOf test can easily
                * fail. So let's try harder. Maybe some day, when JDOM
offers a StaxBuilder and this builder employes
* XMLInputFactory2.P_REPORT_PROLOG_WHITESPACE, this whole
mess can be avoided.
                */
               final String SPACE = "\\s++";
               final String XML =
"<\\?(?:(?:[^\"'>]++)|(?:\"[^\"]*+\")|(?:'[^\']*+'))*+>";
               final String INTSUB =
"\\[(?:(?:[^\"'\\]]++)|(?:\"[^\"]*+\")|(?:'[^\']*+'))*+\\]";
               final String DOCTYPE =

"<!DOCTYPE(?:(?:[^\"'\\[>]++)|(?:\"[^\"]*+\")|(?:'[^\']*+')|(?:" + INTSUB +
"))*+>";
               final String PI = XML;
               final String COMMENT = "<!--(?:[^-]|(?:-[^-]))*+-->";

               final String INTRO =
"(?:(?:" + SPACE + ")|(?:" + XML + ")|(?:" + DOCTYPE +
")|(?:" + COMMENT + ")|(?:" + PI + "))*";
final String OUTRO = "(?:(?:" + SPACE + ")|(?:" + COMMENT +
")|(?:" + PI + "))*";
final String POM = "(?s)(" + INTRO + ")(.*?)(" + OUTRO + ")";

Matcher matcher = Pattern.compile( POM ).matcher( content );
               if ( matcher.matches() )
               {
                   intro = matcher.group( 1 );
                   outtro = matcher.group( matcher.groupCount() );
               }
           }
       }
       catch ( JDOMException e )
       {
           throw new ReleaseExecutionException( "Error reading POM: " +
e.getMessage(), e );
       }
       catch ( IOException e )
       {
           throw new ReleaseExecutionException( "Error reading POM: " +
e.getMessage(), e );
       }

       ScmRepository scmRepository;
       ScmProvider provider;
       try
       {
           scmRepository =
scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,

  releaseEnvironment.getSettings() );

           provider = scmRepositoryConfigurator.getRepositoryProvider(
scmRepository );
       }
       catch ( ScmRepositoryException e )
       {
           throw new ReleaseScmRepositoryException( e.getMessage(),
e.getValidationMessages() );
       }
       catch ( NoSuchScmProviderException e )
       {
           throw new ReleaseExecutionException( "Unable to configure SCM
repository: " + e.getMessage(), e );
       }

       transformDocument( project, document.getRootElement(),
releaseDescriptor, reactorProjects, scmRepository,
                          result, simulate );

       File pomFile = ReleaseUtil.getStandardPom( project );

       if ( simulate )
       {
           File outputFile = new File( pomFile.getParentFile(),
pomFile.getName() + "." + pomSuffix );
           writePom( outputFile, document, releaseDescriptor,
project.getModelVersion(), intro, outtro );
       }
       else
       {
           writePom( pomFile, document, releaseDescriptor,
project.getModelVersion(), intro, outtro, scmRepository,
                     provider );
       }
   }

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to