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:[EMAIL PROTECTED]">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 "" + javaVersion + """ ); 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:[EMAIL PROTECTED]">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:[EMAIL PROTECTED]">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:[EMAIL PROTECTED]">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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]