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/09 04:26:57 UTC

cvs commit: maven-components/maven-plugins/maven-idea-plugin/src/main/resources/META-INF/maven plugin.xml

jvanzyl     2004/05/08 19:26:57

  Modified:    maven-plugins/maven-idea-plugin/src/main/resources/META-INF/maven
                        plugin.xml
  Added:       maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea
                        IdeaPlugin.java IdeaReader.java IdeaWriter.java
               maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/model
                        IdeaModule.java IdeaProject.java IdeaWorkspace.java
  Removed:     maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin
                        IdeaPlugin.java IdeaWriter.java
  Log:
  o correcting the generation of the module library entries
  o starting a small model for the IDEA files and will use those in order
    to read and write IDEA files.
  
    I will hopefully be moving this out and adding it to the Mevenide
    project.
  
  Revision  Changes    Path
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaPlugin.java
  
  Index: IdeaPlugin.java
  ===================================================================
  package org.apache.maven.plugin.idea;
  
  import org.apache.maven.project.MavenProject;
  import org.apache.maven.plugin.AbstractPlugin;
  import org.apache.maven.plugin.PluginExecutionRequest;
  import org.apache.maven.plugin.PluginExecutionResponse;
  
  public class IdeaPlugin
      extends AbstractPlugin
  {
      protected IdeaWriter ideaWriter;
  
      public IdeaPlugin()
      {
          ideaWriter = new IdeaWriter();
      }
  
      // ----------------------------------------------------------------------
      // 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 ...
      // ----------------------------------------------------------------------
  
      public void execute( PluginExecutionRequest request, PluginExecutionResponse response )
          throws Exception
      {
          MavenProject project = (MavenProject) request.getParameter( "project" );
  
          ideaWriter.write( project );
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaReader.java
  
  Index: IdeaReader.java
  ===================================================================
  package org.apache.maven.plugin.idea;
  
  import org.apache.maven.plugin.idea.model.IdeaProject;
  import org.apache.maven.plugin.idea.model.IdeaWorkspace;
  import org.apache.maven.plugin.idea.model.IdeaModule;
  
  import java.io.File;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: IdeaReader.java,v 1.1 2004/05/09 02:26:57 jvanzyl Exp $
   */
  public class IdeaReader
  {
      // ----------------------------------------------------------------------
      // IDEA project
      // ----------------------------------------------------------------------
  
      protected IdeaProject readIdeaProject( File basedir )
          throws Exception
      {
          IdeaProject ideaProject = new IdeaProject();
  
          return ideaProject;
      }
  
      // ----------------------------------------------------------------------
      // IDEA workspace
      // ----------------------------------------------------------------------
  
      protected IdeaWorkspace readIdeaWorkSpace( File basedir )
          throws Exception
      {
          IdeaWorkspace ideaWorkspace = new IdeaWorkspace();
  
          return ideaWorkspace;
      }
  
      // ----------------------------------------------------------------------
      // IDEA module
      // ----------------------------------------------------------------------
  
      protected IdeaModule readIdeaModule( File basedir )
          throws Exception
      {
          IdeaModule ideaModule = new IdeaModule();
  
          return ideaModule;
      }
  }
  
  
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaWriter.java
  
  Index: IdeaWriter.java
  ===================================================================
  package org.apache.maven.plugin.idea;
  
  import org.apache.maven.artifact.MavenArtifact;
  import org.apache.maven.project.MavenProject;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.DefaultXMLWriter;
  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
          // ----------------------------------------------------------------------
  
          List artifacts = project.getArtifacts();
  
          for ( int i = 0; i < artifacts.size(); i++ )
          {
              writeModuleLibraryEntry( writer, ( (MavenArtifact) artifacts.get( i ) ) );
          }
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          w.flush();
  
          w.close();
      }
  
      // ----------------------------------------------------------------------
      // Module library
      // ----------------------------------------------------------------------
  
      protected void writeModuleLibraryEntry( XMLWriter writer, MavenArtifact artifact )
          throws Exception
      {
          writer.startElement( "orderEntry" );
  
          writer.addAttribute( "type", "module-library" );
  
          writer.startElement( "library" );
  
          writer.startElement( "CLASSES" );
  
          writer.startElement( "root" );
  
          writer.addAttribute( "url", "jar://" + artifact.getPath() + "!/" );
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "JAVADOC" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "SOURCES" );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          writer.endElement();
      }
  
      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 )
              {
              }
          }
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/model/IdeaModule.java
  
  Index: IdeaModule.java
  ===================================================================
  package org.apache.maven.plugin.idea.model;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: IdeaModule.java,v 1.1 2004/05/09 02:26:57 jvanzyl Exp $
   */
  public class IdeaModule
  {
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/model/IdeaProject.java
  
  Index: IdeaProject.java
  ===================================================================
  package org.apache.maven.plugin.idea.model;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: IdeaProject.java,v 1.1 2004/05/09 02:26:57 jvanzyl Exp $
   */
  public class IdeaProject
  {
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/model/IdeaWorkspace.java
  
  Index: IdeaWorkspace.java
  ===================================================================
  package org.apache.maven.plugin.idea.model;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: IdeaWorkspace.java,v 1.1 2004/05/09 02:26:57 jvanzyl Exp $
   */
  public class IdeaWorkspace
  {
  }
  
  
  
  1.2       +1 -1      maven-components/maven-plugins/maven-idea-plugin/src/main/resources/META-INF/maven/plugin.xml
  
  Index: plugin.xml
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-idea-plugin/src/main/resources/META-INF/maven/plugin.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- plugin.xml	5 May 2004 16:52:38 -0000	1.1
  +++ plugin.xml	9 May 2004 02:26:57 -0000	1.2
  @@ -1,6 +1,6 @@
   <plugin>
     <id>idea</id>
  -  <implementation>org.apache.maven.plugin.IdeaPlugin</implementation>
  +  <implementation>org.apache.maven.plugin.idea.IdeaPlugin</implementation>
     <instantiation-strategy>singleton</instantiation-strategy>
     <mode>integrated</mode>
     <goals>
  
  
  

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