Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] Transforming class files in an M2E extension

I think BuildContext API is all you need, m2e incremental builder will
take care of all plugin dependency resolution, classpath setup, mojo
configuration and other plumbing.

--
Regards,
Igor

On 1/22/2014, 15:44, Emond Papegaaij wrote:
I agree. After reading some more about Eclipse internals, I think an
incremental project builder suits this usecase better. Currently, I've
created a project configurator that adds the builder and written some
code in the builder to resolve the maven plugin. It should not be too
difficult to read the plugin configuration and transform the classes.
However, I do have one question: how do I load the plugin dependencies
(e.g. the transformer implementation). This class is not on the
classpath in the plugin. Should I setup a new classloader with this
additional maven artifact jar? If so, is there an existing classloader I
can use? How does m2e solve this? It also needs to load additional
classes from external jars.

Best regards,
Emond Papegaaij


On Tue, Jan 21, 2014 at 5:34 PM, Igor Fedorenko <igor@xxxxxxxxxxxxxx
<mailto:igor@xxxxxxxxxxxxxx>> wrote:

    I don't think CompilationParticipant makes sense in your case (now that
    I've looked at the example project). You are generating new .class
    files, and CompilationParticipant is meant to "massage" .class files
    generated by JDT Java Builder.

    --
    Regards,
    Igor

    On 1/21/2014, 11:23, Emond Papegaaij wrote:

        To make it even stranger, if you add the source folder, it
        compiles and
        runs, but Demo.java still shows errors in the editor. Also, type
        completion does not work. I'll see what the JDT devs have to say
        about this.

        I know about the lifecycle mapping file. It's just that I did
        not get
        around adding it. I added the transformer to the project to keep
        things
        together. Resolution of plugin dependencies from the reactor is
        a bit
        wonky in maven on the commandline as well.

        I've also started experimenting with writing a
        CompilationParticipant.
        It was rather easy to get things going. I've already got a
        CompilationParticipant that's loaded by eclipse and notified on
        project
        builds. What do you think would be a good approach for this
        Participant?
        I was thinking about taging base-classes and transformed-classes
        from a
        ProjectConfigurator and use this information in the
        CompilationParticipant to generate the classes. The thing I'm
        not sure
        about is how to tag the projects. I can use a Nature, but a more
        lightweight solution seem session or persistent properties.

        Best regards,
        Emond Papegaaij


        On Tue, Jan 21, 2014 at 3:31 PM, Igor Fedorenko
        <igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>
        <mailto:igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>>> wrote:

             I think you are right, JDT does require sources folder to
        be present, at
             least I don't know how to configure Java projects to make
        your demo work
             without (an empty) src/main/java folder. Ask JDT devs,
        maybe they can
             suggest something... or just create marker source folder.

             Also, you probably want to embed m2e lifecycle mapping in
             maven-javassist plugin itself, makes it easier for the
        plugin users.

             And keep in mind that workspace dependency resolution does
        not work for
             maven plugins, which means transformers must come from a maven
             repository.

             --
             Regards,
             Igor


             On 1/20/2014, 14:36, Emond Papegaaij wrote:

                 I've managed to create a very small showcase of the
        problem (
        https://github.com/papegaaij/____maven-javassist-demo
        <https://github.com/papegaaij/__maven-javassist-demo>
                 <https://github.com/papegaaij/__maven-javassist-demo
        <https://github.com/papegaaij/maven-javassist-demo>> ). It has 4
                 modules
                 with 3 classes in total:
                 base-classes: nl.topicus.HelloWorld with a perform
        method that
                 throws
                 UnsupportedOperationException
                 transformer: nl.topicus.DemoTransformer replaces the
        perform
                 method with
                 a real 'Hello world!'
                 transformed-classes: destination of the transformed
        HelloWorld
                 demo: nl.topicus.Demo invokes HelloWorld.perform

                 mvn compile works fine on the commandline and mvn
        exec:java in demo
                 shows 'Hello world!'. In Eclipse, Demo.java does not
        compile, and
                 running it gives "Unresolved compilation problem:
        HelloWorld
                 cannot be
                 resolved to a type". In the project explorer (after
        unhiding output
                 folders), I can see the  correctly transformed
        HelloWorld class
                 and it
                 should be on the classpath. I really don't understand why
                 Eclipse does
                 not pick it up as a type in Demo.java.

                 I would really appreciate it if you could take a look
        at it. The
                 plugin
                 itself is available at
        https://github.com/papegaaij/____maven-javassist
        <https://github.com/papegaaij/__maven-javassist>
                 <https://github.com/papegaaij/__maven-javassist
        <https://github.com/papegaaij/maven-javassist>> .
                 The current version (1.1-SNAPSHOT) is not yet released
        to maven
                 central,
                 so you need to install it in your local repo. Perhaps
        you can
                 see what's
                 going wrong, because I'm at a loss.

                 Best regards,
                 Emond Papegaaij


                 On Mon, Jan 20, 2014 at 4:48 PM, Emond Papegaaij
                 <emond.papegaaij@xxxxxxxxxx
        <mailto:emond.papegaaij@xxxxxxxxxx>
        <mailto:emond.papegaaij@__topicus.nl
        <mailto:emond.papegaaij@xxxxxxxxxx>>
                 <mailto:emond.papegaaij@
        <mailto:emond.papegaaij@>__topi__cus.nl <http://topicus.nl>
                 <mailto:emond.papegaaij@__topicus.nl
        <mailto:emond.papegaaij@xxxxxxxxxx>>>> wrote:

                      __


                      It proves to be very difficult to test all this in the
                 project I'm
                      using it in, mainly due to the size of the
        project. I'll
                 setup a
                      smaller demo-project to see why it is not working
        as intented.

                      Best regards,

                      Emond Papegaaij

                      On Monday 20 January 2014 09:27:22 Igor Fedorenko
        wrote:

                       > Eclipse does not require sources to be present.

                       >

                       > --

                       > Regards,

                       > Igor

                       >

                       > On 1/20/2014, 9:21, Emond Papegaaij wrote:

                       > > The consuming module only has the transformed
        classes
                 on the
                      classpath.

                       > > The module with transformed classes does have
        the original
                      classes on

                       > > the classpath using an optional dependency.
        However,
                 it does
                      not seem to

                       > > be a conflict between classes on the
        classpath. I tried
                      generating an

                       > > additional class (one that does not exist in
        the original
                      classes), and

                       > > this class is also not picked up. It seems
        Eclipse
                 does not see
                      classes

                       > > in workspace modules when there is no source
        for those
                 classes.
                      Could

                       > > this be the case?

                       > >

                       > > Best regards,

                       > >

                       > > Emond Papegaaij

                       > >

                       > > On Monday 20 January 2014 09:09:57 Igor
        Fedorenko wrote:

                       > > > What does classpath of the consuming
        project look
                 like? Does
                      it include

                       > > >

                       > > > both original classes and generated ones?

                       > > >

                       > > >

                       > > >

                       > > > Generally, I recommend against split
        packages (using
                 OSGi
                      terminology),

                       > > >

                       > > > especially if you have exact the same
        classnames in
                 different
                      modules.

                       > > >

                       > > >

                       > > >

                       > > > --

                       > > >

                       > > > Regards,

                       > > >

                       > > > Igor

                       > > >

                       > > > On 1/20/2014, 8:50, Emond Papegaaij wrote:

                       > > > > We are generating new class files, based on
                 existing class
                      files. For

                       > > > >

                       > > > > example, if module a contains
        'com.mycompany.Foo',
                 we are
                      generaing

                       > > > >

                       > > > > 'com.mycompany.Foo' in module b based on
        the class
                 in module a.

                       > >

                       > > It's the

                       > >

                       > > > > same classname, but different bytecode.
        The files do
                      contain the

                       > > > > right

                       > > > >

                       > > > > contents on the file system (verified
        with javap).

                       > > > >

                       > > > >

                       > > > >

                       > > > > With "Eclipse does not see the generated
        classes",
                 I mean that

                       > > > > classes

                       > > > >

                       > > > > using these classes have compile errors, type
                 completion
                      does not

                       > > > > work,

                       > > > >

                       > > > > 'Open type' does not work. I can see the
        files in
                 the project

                       > > > > explorer

                       > > > >

                       > > > > (in target/classes), but Eclipse does not
        seem to know
                      about the

                       > > > > types.

                       > > > >

                       > > > >

                       > > > >

                       > > > > The Maven Workspace Build view lists all
        classes
                 produced
                      by the

                       > >

                       > > plugin,

                       > >

                       > > > > so it seems BuildContext is working fine.

                       > > > >

                       > > > >

                       > > > >

                       > > > > Best regards,

                       > > > >

                       > > > >

                       > > > >

                       > > > > Emond Papegaaij

                       > > > >

                       > > > > On Monday 20 January 2014 07:57:34 Igor
        Fedorenko
                 wrote:

                       > > > > > Are you generating new class files or
        changing
                 existing class

                       > > > > > files?

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > Can you explain what "Eclipse does not
        see the
                 generated
                      classes"

                       > > > > >

                       > > > > > means?

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > Can you check if class file contents is as
                 expected on
                      filesystem?

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > You may also want to check Maven
        Workspace Build
                 view,
                      which should

                       > > > > >

                       > > > > > show

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > if your mojo is executed, what input
        files it
                 gets and
                      what output

                       > > > > >

                       > > > > > files

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > it produces throw BuildContext API.
        (note that
                 the view is

                       > >

                       > > "paused" by

                       > >

                       > > > > > default, you need to click pause button to
                 enable recording).

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > --

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > Regards,

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > Igor

                       > > > > >

                       > > > > > On 1/20/2014, 7:32, Emond Papegaaij wrote:

                       > > > > > > I've changed the maven plugin to use
                 BuildContext, but
                      Eclipse is

                       > > > > > >

                       > > > > > > still

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > having issues. It no longer triggers an
                 endless build
                      (even with

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > runOnIncremental), but Eclipse does
        not see
                 the generated

                       > > > > > > classes.

                       > > > > > >

                       > > > > > > The

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > transformed class files are visible in
                 target/classes in

                       > >

                       > > Eclipse, but

                       > >

                       > > > > > > the modules depending on them do not
        see them.
                 Also, 'Open

                       > >

                       > > type' does

                       > >

                       > > > > > > not show them. Did I miss anything? I
        do use

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > buildContext.____newFileOutputStream
        to generate
                 the files.

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > Best regards,

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > Emond Papegaaij

                       > > > > > >

                       > > > > > > On Saturday 18 January 2014 22:18:19
        you wrote:

                       > > > > > > > You are right, both the transformer
        and the
                 transformed

                       > >

                       > > classes are

                       > >

                       > > > > > > in the

                       > > > > > >

                       > > > > > > > same project, but that can be
        changed. The
                 buildcontext

                       > > > > > > > approach

                       > > > > > >

                       > > > > > > seems the

                       > > > > > >

                       > > > > > > > easiest for now. If I understand it
                 correctly, I only
                      have to

                       > > > > > > >

                       > > > > > > > improve

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > the

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > plugin to support incremental
        builds and use
                 execute
                      mapping in

                       > > > > > > >

                       > > > > > > > m2e.

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > Even

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > if it does not work, I've at least
        improved the
                      plugin :). I'll

                       > > > >

                       > > > > give it

                       > > > >

                       > > > > > > > a

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > try next week. Thanks for the help.

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > Best regards,

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > Emond Papegaaij

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > >

                       > > > > > > > On Sat, Jan 18, 2014 at 5:34 PM,
        Igor Fedorenko

                       > > > > > > >

                       > > > > > > > <igor@xxxxxxxxxxxxxx
        <mailto:igor@xxxxxxxxxxxxxx>
                 <mailto:igor@xxxxxxxxxxxxxx
        <mailto:igor@xxxxxxxxxxxxxx>> <mailto:igor@xxxxxxxxxxxxxx
        <mailto:igor@xxxxxxxxxxxxxx>
                 <mailto:igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>>>>


                       > > > > > >

                       > > > > > > wrote:

                       > > > > > > > > If I read this correctly, you
        want to have
                 both the

                       > > > > > > > > transformer

                       > > > > > > > >

                       > > > > > > > > and

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > the

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > classes to be transformed in your
                 workspace. This
                      means that

                       > > > >

                       > > > > Eclipse

                       > > > >

                       > > > > > > > > workspace will have to first compile
                 transformer
                      classes

                       > >

                       > > and them

                       > >

                       > > > > > > > > immediately execute them. Even if
        this can
                 be done,
                      which I

                       > > > > > > > > am

                       > > > > > > > >

                       > > > > > > > > not

                       > > > > > >

                       > > > > > > sure,

                       > > > > > >

                       > > > > > > > > I strongly advice against this
        because
                 problems with

                       > > > >

                       > > > > transformer can

                       > > > >

                       > > > > > > > > crash your eclipse instance, for
        example.
                 Tracking
                      dependency

                       > > > >

                       > > > > between

                       > > > >

                       > > > > > > > > transformer and classes to be
        transformed
                 is another

                       > >

                       > > problem. You

                       > >

                       > > > > > > > > probably want to move transformer
        to a
                 separate
                      project,

                       > > > > > > > > deploy

                       > > > >

                       > > > > to a

                       > > > >

                       > > > > > > > > maven repository and consume it in a
                 binary form.

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > As for manipulating .class files
        inside
                 Eclipse
                      workspace,

                       > > > > > > > > this

                       > > > > > > > >

                       > > > > > > > > is

                       > > > > > >

                       > > > > > > kinda

                       > > > > > >

                       > > > > > > > > tricky. I believe the correct way
        to do
                 this is to
                      implement

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

          org.eclipse.jdt.core.compiler.____CompilationParticipant but this

                       > > > > > > > >

                       > > > > > > > > most

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > likely means duplicating logic from
                      javassist-maven-plugin.

                       > > > >

                       > > > > Wiki [1]

                       > > > >

                       > > > > > > > > gives some pointers how to "map"
                      javassist-maven-plugin to

                       > > > > > > > > m2e

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > extension, but I don't have
        example that
                 show use of

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > CompilationParticipant.

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > "Less" correct way, which may or
        may not
                 work, is
                      to invoke

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > javassist-maven-plugin during Eclipse
                 workspace
                      build. I

                       > > > > > > > > would

                       > > > > > >

                       > > > > > > recommend

                       > > > > > >

                       > > > > > > > > changing javassist-maven-plugin
        to use
                 BuildContext
                      API as

                       > > > >

                       > > > > explain in

                       > > > >

                       > > > > > > > > wiki [2]

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > [1]
        http://wiki.eclipse.org/M2E_____Extension_Development
        <http://wiki.eclipse.org/M2E___Extension_Development>
                 <http://wiki.eclipse.org/M2E___Extension_Development
        <http://wiki.eclipse.org/M2E_Extension_Development>>

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > [2]
        http://wiki.eclipse.org/M2E_____compatible_maven_plugins
        <http://wiki.eclipse.org/M2E___compatible_maven_plugins>
                 <http://wiki.eclipse.org/M2E___compatible_maven_plugins
        <http://wiki.eclipse.org/M2E_compatible_maven_plugins>>

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > --

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > Regards,

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > Igor

                       > > > > > > > >

                       > > > > > > > > On 1/18/2014, 10:46, Emond
        Papegaaij wrote:

                       > > > > > > > >> Hi all,

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> Having some issues with a maven
        plugin that
                      transforms class

                       > > > > > > > >>

                       > > > > > > > >> files

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> in

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> M2E (endless builds), I decided
        to try to
                 write an

                       > >

                       > > extension (my

                       > >

                       > > > > > > first)

                       > > > > > >

                       > > > > > > > >> that handles the integration,
        but I need some
                      help. The

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> javassist-maven-plugin takes
        classes from the
                      project class

                       > > > > > > > >>

                       > > > > > > > >> path,

                       > > > > > >

                       > > > > > > passes

                       > > > > > >

                       > > > > > > > >> them through a transformer and
        writes new
                 class
                      files. A

                       > >

                       > > typical

                       > >

                       > > > > > > project

                       > > > > > >

                       > > > > > > > >> setup looks like this:

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> parent with modules:

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> - module a with classes to be
        transformed

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> - module b with transformer and
                      javassist-maven-plugin,

                       > > > >

                       > > > > destination

                       > > > >

                       > > > > > > > >> of

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> transformed classes, has optional
                 dependency on
                      module a

                       > >

                       > > to stop

                       > >

                       > > > > > > > >> transitive dependencies

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> - module c depends on
        transformed classes
                 in module b

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> What I would like the M2E
        extension to
                 do, is on
                      changed

                       > > > >

                       > > > > classes in

                       > > > >

                       > > > > > > > >> module a, transform these
        classes, write
                 them in
                      module b

                       > > > > > > > >> and

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> refresh

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> those classes, triggering a build in
                 module c.
                      This being my

                       > > > > > > > >>

                       > > > > > > > >> first

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> extension, I read the
        introduction on writing
                      extensions and

                       > > > > > >

                       > > > > > > managed to

                       > > > > > >

                       > > > > > > > >> setup a project in Eclipse, but
        that's
                 were it
                      ends. All

                       > > > >

                       > > > > examples I

                       > > > >

                       > > > > > > > >> could find are about generating
        source from
                      source, not

                       > > > >

                       > > > > classes from

                       > > > >

                       > > > > > > > >> classes. Is there an existing
        extension I
                 could
                      use as an

                       > > > > > > > >>

                       > > > > > > > >> example?

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> If

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> not, what would be a good
        approach for this
                      plugin? Which

                       > > > > > > > >> M2E

                       > > > > > >

                       > > > > > > classes do

                       > > > > > >

                       > > > > > > > >> I need to look at?

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> Best regards,

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> Emond Papegaaij

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>
                 ___________________________________________________

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> m2e-users mailing list

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >> m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>__>


                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>
        https://dev.eclipse.org/____mailman/listinfo/m2e-users
        <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
                 <https://dev.eclipse.org/__mailman/listinfo/m2e-users
        <https://dev.eclipse.org/mailman/listinfo/m2e-users>>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>

                       > > > > > > > >>
                 ___________________________________________________

                       > > > > > > > >

                       > > > > > > > > m2e-users mailing list

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > > m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>__>


                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >

                       > > > > > > > >
        https://dev.eclipse.org/____mailman/listinfo/m2e-users
        <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
                 <https://dev.eclipse.org/__mailman/listinfo/m2e-users
        <https://dev.eclipse.org/mailman/listinfo/m2e-users>>

                       > > > > > >

                       > > > > > >
        ___________________________________________________

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > m2e-users mailing list

                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > > m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>__>


                       > > > > > >

                       > > > > > >

                       > > > > > >

                       > > > > > >
        https://dev.eclipse.org/____mailman/listinfo/m2e-users
        <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
                 <https://dev.eclipse.org/__mailman/listinfo/m2e-users
        <https://dev.eclipse.org/mailman/listinfo/m2e-users>>

                       > > > > >

                       > > > > >
        ___________________________________________________

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > m2e-users mailing list

                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > > m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>__>


                       > > > > >

                       > > > > >

                       > > > > >

                       > > > > >
        https://dev.eclipse.org/____mailman/listinfo/m2e-users
        <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
                 <https://dev.eclipse.org/__mailman/listinfo/m2e-users
        <https://dev.eclipse.org/mailman/listinfo/m2e-users>>

                       > > > >

                       > > > >
        ___________________________________________________

                       > > > >

                       > > > > m2e-users mailing list

                       > > > >

                       > > > > m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>__>


                       > > > >

                       > > > >
        https://dev.eclipse.org/____mailman/listinfo/m2e-users
        <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
                 <https://dev.eclipse.org/__mailman/listinfo/m2e-users
        <https://dev.eclipse.org/mailman/listinfo/m2e-users>>

                       > > >

                       > > >
        ___________________________________________________

                       > > >

                       > > > m2e-users mailing list

                       > > >

                       > > > m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>
                 <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx> <mailto:m2e-users@xxxxxxxxxxx
        <mailto:m2e-users@xxxxxxxxxxx>>__>


                       > > >

                       > > >
        https://dev.eclipse.org/____mailman/listinfo/m2e-users
        <https://dev.eclipse.org/__mailman/listinfo/m2e-users>




_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users



Back to the top