Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "M2E/Extension Development"

< M2E
(Replaced content with "[https://www.eclipse.org/m2e/documentation/m2e-extension-development.html This page is now here]")
 
(21 intermediate revisions by 9 users not shown)
Line 1: Line 1:
== Prerequisites ==
+
[https://www.eclipse.org/m2e/documentation/m2e-extension-development.html This page is now here]
 
+
Some OSGi bundle development and PDE knowledge is assumed. TODO link to some PDE documentation and tutorials
+
 
+
 
+
== Java code generation overview ==
+
 
+
Although there are no strict rules, usually maven java code generation plugins like antlr3-maven-plugin or maven-jaxb-plugin take one or more input files from project source tree and generate a number java source files in a subdirectory of target/generated-sources/ directory. These generated sources are usually required to compile and/or run project tests.
+
 
+
To properly support code generation inside Eclipse IDE workspace, the IDE generally needs to perform some configuration (semi) statically during project import and then do actually code generation either on request or automatically as part of workspace build.
+
 
+
m2e extension that provides support for generation will typically need to
+
* implement a subclass of org.eclipse.m2e.jdt.AbstractJavaProjectConfigurator to perform necessary project configuration
+
* implement subclass of MojoExecutionBuildParticipant to delegate actual code generation to underlying maven plugin goal
+
* provide metadata to metadata to register the project configurator with m2e and to map maven plugin execution to the project configurator
+
 
+
=== m2e/antlr3 code generation support explained ===
+
 
+
As an example, here is explanation of how different parts of [[https://github.com/sonatype/m2eclipse-extras/tree/0.13.0.20110622-1538/org.sonatype.m2e.antlr m2e/antlr]] fit together
+
 
+
On command line, [[http://www.antlr.org/antlr3-maven-plugin/usage.html antlr3-maven-plugin]], reads ANTLR grammar files from directory specified by ${sourceDirectory} plugin configuration parameter (defaults to src/main/antlr3) and generates output files in directory specified by ${outputDirectory} plugin configuration parameter (defaults to target/generated-sources/antlr3).
+
 
+
==== AntlrProjectConfigurator and corresponding metadata ====
+
 
+
[[http://git.eclipse.org/c/m2e/m2e-core.git/tree/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/AbstractJavaProjectConfigurator.java?id=releases/1.0/1.0.0.20110607-2117 AbstractJavaProjectConfigurator]] is a convenience abstract implementation of AbstractProjectConfigurator that provides default behaviour common to many java code generation m2e extensions. AbstractJavaProjectConfigurator assumes single additional java source folder needs to be configured for the project and the source folder location is defined by ${outputDirectory} maven plugin configuration parameter. This allows very simple ANTLR project configurator implementation
+
 
+
    public class AntlrProjectConfigurator
+
        extends AbstractJavaProjectConfigurator
+
    {
+
        @Override
+
        public AbstractBuildParticipant getBuildParticipant( IMavenProjectFacade projectFacade,
+
                                                            MojoExecution execution,
+
                                                            IPluginExecutionMetadata executionMetadata )
+
        {
+
            return new AntlrBuildParticipant( execution );
+
        }
+
    }
+
 
+
 
+
+
 
+
== Project directory structure overview ==
+
 
+
  org.somecatchyname/                  <= project basedir, all project files are under this directory
+
    org.somecatchyname.m2e/            <= main bundle project
+
      src/
+
      pom.xml
+
    org.somecatchyname.m2e.tests/      <= automated tests (optional, but highly recommended)
+
      src/
+
      pom.xml
+
    org.somecatchyname.m2e.feature/    <= eclipse feature project
+
      feature.xml
+
      pom.xml
+
    pom.xml                            <= aggregator pom.xml
+
 
+
 
+
 
+
----
+
 
+
[[Category:M2E]]
+
 
+
[[Submitting M2E marketplace entries]]
+
 
+
[[M2E extension development environment]]
+

Latest revision as of 08:27, 14 November 2014

This page is now here

Back to the top