You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2004/05/06 02:19:41 UTC

cvs commit: maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin IdeaWriter.java IdeaPlugin.java

jvanzyl     2004/05/05 17:19:41

  Modified:    maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin
                        IdeaPlugin.java
  Added:       maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin
                        IdeaWriter.java
  Log:
  
  
  Revision  Changes    Path
  1.5       +21 -242   maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/IdeaPlugin.java
  
  Index: IdeaPlugin.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/IdeaPlugin.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- IdeaPlugin.java	5 May 2004 22:56:58 -0000	1.4
  +++ IdeaPlugin.java	6 May 2004 00:19:41 -0000	1.5
  @@ -1,261 +1,40 @@
   package org.apache.maven.plugin;
   
  -import org.apache.maven.artifact.MavenArtifact;
   import org.apache.maven.project.MavenProject;
  -import org.apache.maven.xdoc.render.DefaultXMLWriter;
  -import org.apache.maven.xdoc.render.XMLWriter;
  -import org.codehaus.plexus.util.InterpolationFilterReader;
  -
  -import java.io.File;
  -import java.io.FileWriter;
  -import java.io.InputStream;
  -import java.io.InputStreamReader;
  -import java.io.Writer;
  -import java.util.HashMap;
  -import java.util.Map;
   
   public class IdeaPlugin
       extends AbstractPlugin
   {
  -    public void execute( PluginExecutionRequest request, PluginExecutionResponse response )
  -        throws Exception
  -    {
  -        MavenProject project = (MavenProject) request.getParameter( "project" );
  -
  -        File basedir = project.getFile().getParentFile();
  -
  -        Map map = new HashMap();
  +    protected IdeaWriter ideaWriter;
   
  -        map.put( "project.artifactId", project.getArtifactId() );
  -
  -        writeIdeaModule( basedir, project, map );
  -
  -        writeIdeaWorkSpace( basedir, project, map );
  -
  -        writeIdeaProject( basedir, project, map );
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // IDEA project
  -    // ----------------------------------------------------------------------
  -
  -    private void writeIdeaProject( File basedir, MavenProject project, Map map )
  -        throws Exception
  -    {
  -        copy( IdeaPlugin.class.getResourceAsStream( "/plugin-resources/default/idea.ipr" ),
  -              new FileWriter( new File( basedir, project.getArtifactId() + ".ipr" ) ),
  -              map );
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // IDEA workspace
  -    // ----------------------------------------------------------------------
  -
  -    private void writeIdeaWorkSpace( File basedir, MavenProject project, Map map )
  -        throws Exception
  +    public IdeaPlugin()
       {
  -        copy( IdeaPlugin.class.getResourceAsStream( "/plugin-resources/default/idea.iws" ),
  -              new FileWriter( new File( basedir, project.getArtifactId() + ".iws" ) ),
  -              map );
  +        ideaWriter = new IdeaWriter();
       }
   
       // ----------------------------------------------------------------------
  -    // IDEA module
  +    // Now even in the context of a reactor, different things may be required:
  +    //
  +    // o you may actually want to generate complete ipr/iws/iml files for each
  +    //   project that is picked up by the reactor.
  +    //
  +    // o you may want to generate the ipr/iws files for the top-level project and
  +    //   only create iml files for each of the nested projects.
  +    //
  +    // Or the ipr/iws/iml files could be generated for each regardless but aggregated
  +    // in a top-level project. This probably won't cause any harm as it will allow each
  +    // project to be open individually or by the aggregated project with the child iml
  +    // files. Most probably wouldn't use both modes but this is more akin to what might
  +    // happen with a report vis-a-vis aggregation at the top-level.
  +    //
  +    // Here we go ...
       // ----------------------------------------------------------------------
   
  -    private void writeIdeaModule( File basedir, MavenProject project, Map map )
  -        throws Exception
  -    {
  -        FileWriter w = new FileWriter( new File( basedir, project.getArtifactId() + ".iml" ) );
  -
  -        XMLWriter writer = new DefaultXMLWriter( w );
  -
  -        writer.startElement( "module" );
  -
  -        writer.addAttribute( "version", "4" );
  -
  -        writer.addAttribute( "relativePaths", "false" );
  -
  -        writer.startElement( "component" );
  -
  -        writer.addAttribute( "name", "ModuleRootManager" );
  -
  -        writer.endElement();
  -
  -        writer.startElement( "component" );
  -
  -        writer.addAttribute( "name", "NewModuleRootManager" );
  -
  -        writer.startElement( "exclude-output" );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "content" );
  -
  -        writer.addAttribute( "url", "file://$MODULE_DIR$" );
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "sourceFolder" );
  -
  -        writer.addAttribute( "url", "file://$MODULE_DIR$/" + project.getModel().getBuild().getSourceDirectory() );
  -
  -        writer.addAttribute( "isTestSource", "false" );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "sourceFolder" );
  -
  -        writer.addAttribute( "url", "file://$MODULE_DIR$/" + project.getModel().getBuild().getUnitTestSourceDirectory() );
  -
  -        writer.addAttribute( "isTestSource", "true" );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "orderEntry" );
  -
  -        writer.addAttribute( "type", "jdk" );
  -
  -        String javaVersion = System.getProperty( "java.version" );
  -
  -        writer.addAttribute( "jdkName", "java version " " + javaVersion + """ );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "orderEntry" );
  -
  -        writer.addAttribute( "type", "sourceFolder" );
  -
  -        writer.addAttribute( "forTests", "false" );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        // Dependencies
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "orderEntry" );
  -
  -        writer.addAttribute( "type", "module-library" );
  -
  -        writer.startElement( "library" );
  -
  -        writer.startElement( "CLASSES" );
  -
  -        for ( int i = 0; i < project.getArtifacts().size(); i++ )
  -        {
  -            writer.startElement( "root" );
  -
  -            writer.addAttribute( "url", "jar://" + ((MavenArtifact)project.getArtifacts().get(i)).getPath() + "!/" );
  -
  -            writer.endElement();
  -        }
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "JAVADOC" );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "SOURCES" );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        w.flush();
  -
  -        w.close();
  -    }
  -
  -    private void copy( InputStream is, Writer writer, Map map )
  +    public void execute( PluginExecutionRequest request, PluginExecutionResponse response )
           throws Exception
       {
  -        InterpolationFilterReader reader = new InterpolationFilterReader( new InputStreamReader( is ), map, "@", "@" );
  -
  -        char[] buffer = new char[1024];
  -
  -        int n;
  -
  -        while ( -1 != ( n = reader.read( buffer ) ) )
  -        {
  -            writer.write( buffer, 0, n );
  -        }
  -
  -        if ( is != null )
  -        {
  -            try
  -            {
  -                is.close();
  -            }
  -            catch ( Exception e )
  -            {
  -            }
  -        }
  -
  -        if ( writer != null )
  -        {
  -
  -            try
  -            {
  -                writer.flush();
  +        MavenProject project = (MavenProject) request.getParameter( "project" );
   
  -                writer.close();
  -            }
  -            catch ( Exception e )
  -            {
  -            }
  -        }
  +        ideaWriter.write( project );
       }
   }
  
  
  
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/IdeaWriter.java
  
  Index: IdeaWriter.java
  ===================================================================
  package org.apache.maven.plugin;
  
  import org.apache.maven.artifact.MavenArtifact;
  import org.apache.maven.project.MavenProject;
  import org.apache.maven.xdoc.render.DefaultXMLWriter;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.codehaus.plexus.util.InterpolationFilterReader;
  
  import java.io.File;
  import java.io.FileWriter;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.Writer;
  import java.util.HashMap;
  import java.util.Map;
  import java.util.List;
  
  public class IdeaWriter
  {
      public void write( MavenProject project )
          throws Exception
      {
          File basedir = project.getFile().getParentFile();
  
          Map map = new HashMap();
  
          map.put( "project.artifactId", project.getArtifactId() );
  
          writeIdeaProject( basedir, project, map );
  
          writeIdeaWorkSpace( basedir, project, map );
  
          writeIdeaModule( basedir, project, map );
      }
  
      public void write( List projects )
          throws Exception
      {
      }
  
      // ----------------------------------------------------------------------
      // IDEA project
      // ----------------------------------------------------------------------
  
      protected void writeIdeaProject( File basedir, MavenProject project, Map map )
          throws Exception
      {
          copy( IdeaWriter.class.getResourceAsStream( "/plugin-resources/default/idea.ipr" ),
                new FileWriter( new File( basedir, project.getArtifactId() + ".ipr" ) ),
                map );
      }
  
      // ----------------------------------------------------------------------
      // IDEA workspace
      // ----------------------------------------------------------------------
  
      protected void writeIdeaWorkSpace( File basedir, MavenProject project, Map map )
          throws Exception
      {
          copy( IdeaWriter.class.getResourceAsStream( "/plugin-resources/default/idea.iws" ),
                new FileWriter( new File( basedir, project.getArtifactId() + ".iws" ) ),
                map );
      }
  
      // ----------------------------------------------------------------------
      // IDEA module
      // ----------------------------------------------------------------------
  
      protected void writeIdeaModule( File basedir, MavenProject project, Map map )
          throws Exception
      {
          FileWriter w = new FileWriter( new File( basedir, project.getArtifactId() + ".iml" ) );
  
          XMLWriter writer = new DefaultXMLWriter( w );
  
          writer.startElement( "module" );
  
          writer.addAttribute( "version", "4" );
  
          writer.addAttribute( "relativePaths", "false" );
  
          writer.startElement( "component" );
  
          writer.addAttribute( "name", "ModuleRootManager" );
  
          writer.endElement();
  
          writer.startElement( "component" );
  
          writer.addAttribute( "name", "NewModuleRootManager" );
  
          writer.startElement( "exclude-output" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "content" );
  
          writer.addAttribute( "url", "file://$MODULE_DIR$" );
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "sourceFolder" );
  
          writer.addAttribute( "url", "file://$MODULE_DIR$/" + project.getModel().getBuild().getSourceDirectory() );
  
          writer.addAttribute( "isTestSource", "false" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "sourceFolder" );
  
          writer.addAttribute( "url", "file://$MODULE_DIR$/" + project.getModel().getBuild().getUnitTestSourceDirectory() );
  
          writer.addAttribute( "isTestSource", "true" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "orderEntry" );
  
          writer.addAttribute( "type", "jdk" );
  
          String javaVersion = System.getProperty( "java.version" );
  
          writer.addAttribute( "jdkName", "java version &quot; " + javaVersion + "&quot;" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "orderEntry" );
  
          writer.addAttribute( "type", "sourceFolder" );
  
          writer.addAttribute( "forTests", "false" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          // Dependencies
          // ----------------------------------------------------------------------
  
          writer.startElement( "orderEntry" );
  
          writer.addAttribute( "type", "module-library" );
  
          writer.startElement( "library" );
  
          writer.startElement( "CLASSES" );
  
          for ( int i = 0; i < project.getArtifacts().size(); i++ )
          {
              writer.startElement( "root" );
  
              writer.addAttribute( "url", "jar://" + ((MavenArtifact)project.getArtifacts().get(i)).getPath() + "!/" );
  
              writer.endElement();
          }
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "JAVADOC" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "SOURCES" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          w.flush();
  
          w.close();
      }
  
      private void copy( InputStream is, Writer writer, Map map )
          throws Exception
      {
          InterpolationFilterReader reader = new InterpolationFilterReader( new InputStreamReader( is ), map, "@", "@" );
  
          char[] buffer = new char[1024];
  
          int n;
  
          while ( -1 != ( n = reader.read( buffer ) ) )
          {
              writer.write( buffer, 0, n );
          }
  
          if ( is != null )
          {
              try
              {
                  is.close();
              }
              catch ( Exception e )
              {
              }
          }
  
          if ( writer != null )
          {
  
              try
              {
                  writer.flush();
  
                  writer.close();
              }
              catch ( Exception e )
              {
              }
          }
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org