Technically there is no need for 1) and 2) to make it m2e compatible. The
jaxb2 plugin used to be m2e compatible through 3) and a home-grown
staleness check instead of 1) and 2).

/Anders

On Wed, Apr 29, 2015 at 11:35 PM, Sergei Ivanov <sergei_iva...@mail.ru>
wrote:

> Hi Lennart,
>
> I often curse the day when I out of good will decided to support M2E in my
> Maven plugin (I am a happy user of IntelliJ IDEA), but hopefully my
> experience helps you.
> Note that in M2E prior to 1.5 there was a major classloading issue, which
> broke quite a few plugins.
>
> I took a look at this:
> https://github.com/lennartj/jaxb2-maven-plugin/blob/master/src/main/java/org/codehaus/mojo/jaxb2/AbstractXjcMojo.java
> ...and I see you have already got BuildContext declared as a @Component.
> All you need to do is use it.
>
> There are three parts to the implementation (in addition to providing
> lifecycle XML, which you've already done):
>
> 1. You build a list of input files and pass them to
> buildContext.hasDelta() one by one:
>
>     /**
>      * Checks if the injected build context has changes in any of the
> specified files.
>      *
>      * @param files files to be checked for changes.
>      * @return {@code true}, if at least one file has changes; {@code
> false}, if no files have changes.
>      */
>     protected boolean hasDelta(final Iterable<File> files) {
>         for (final File file : files) {
>             if (buildContext.hasDelta(file)) {
>                 return true;
>             }
>         }
>         return false;
>     }
>
> 2. You call this method inside mojo execute() before your own staleness
> detection check:
>
> if (!hasDelta(sourceFiles)) {
>   getLog().info("Skipping compilation because build context has no
> changes.");
>   buildContext.refresh(outputDirectory);
>   return;
> }
>
> 3. You also need to call buildContext.refresh(outputDirectory) before
> exiting the mojo execute() method in all cases where execution succeeded
> (even if it was skipped due to other checks).
>
> Try it and see whether it works.
>
> Kind regards,
> --
> Sergei Ivanov
>
> Среда, 29 апреля 2015, 20:17 +02:00 от Lennart Jörelid <
> lennart.jore...@gmail.com>:
>
>   I am somewhat split about the concept of doing special development
> within a Maven plugin project to support any of the IDEs in the development
> community.
>
> An IDE claiming a tooling integration with Maven ought to be able to use
> the POM and the plugin descriptors out of the box. This seems certainly
> possible in the case of Netbeans and IntelliJ Idea without any special
> measures - so my gut reaction is that the Eclipse developers should fix
> Eclipse's Maven integration to actually work with only the Maven
> configuration instead of every plugin project developing special support
> for Eclipse.
>
> That being said, if the Eclipse integration is decently simple, we could
> certainly provide it. I would argue that such a solution should be testable
> in a standard IT within the plugin so the rest of the development community
> could know when the Eclipse integration works properly. Any Eclipse
> Developers out there are certainly encouraged to contribute, at least in
> letting me know how to test and verify that the j-m-p works with Eclipse. I
> added a screenshot of the Lifecycle mappings - as I can interpret them -
> from a vanilla Eclipse Luna install to the MJAXB-51 issue. It's a point of
> origin at least.
>
>
> 2015-04-29 10:11 GMT+02:00 Anders Hammar <and...@hammar.net
> <https://e.mail.ru/compose/?mailto=mailto%3aand...@hammar.net>>:
>
> As I earlier stated, after some investigation, there is some other change
> in the code that causes this to stop functioning. It worked in v1.x, but
> after your refactoring it doesn't any more. IMHO it's very unfortunate to
> just ignore such a key feature for anyone on Eclipse, especially as it
> worked in v1.x.
>
> /Anders
>
> On Wed, Apr 29, 2015 at 9:23 AM, Lennart Jörelid <
> lennart.jore...@gmail.com
> <https://e.mail.ru/compose/?mailto=mailto%3alennart.jore...@gmail.com>>
> wrote:
>
> The 2.0 release was cancelled, and since some features were added and some
> code was refactored in the plugin I felt it better to release version 2.1
> instead.
>
> If someone who actually uses Eclipse feels like pinpointing the problem
> with why the m2e descriptor below does not work with the 2.x branch, I
> think all of us would be grateful. However, the goals are the same and
> annotated on the form
>
> @Mojo(name = "testSchemagen",
>         defaultPhase = LifecyclePhase.GENERATE_TEST_RESOURCES,
>         requiresDependencyResolution = ResolutionScope.TEST,
>         threadSafe = true)
>
> ... and the m2e descriptor seem to link to them correctly:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <lifecycleMappingMetadata>
>     <pluginExecutions>
>         <pluginExecution>
>             <pluginExecutionFilter>
>                 <goals>
>                     <goal>xjc</goal>
>                     <goal>testXjc</goal>
>                 </goals>
>             </pluginExecutionFilter>
>             <action>
>                 <execute>
>                     <runOnIncremental>true</runOnIncremental>
>                     <runOnConfiguration>true</runOnConfiguration>
>                 </execute>
>             </action>
>         </pluginExecution>
>         <pluginExecution>
>             <pluginExecutionFilter>
>                 <goals>
>                     <goal>schemagen</goal>
>                     <goal>testSchemagen</goal>
>                 </goals>
>             </pluginExecutionFilter>
>             <action>
>                 <execute>
>                     <runOnIncremental>true</runOnIncremental>
>                     <runOnConfiguration>false</runOnConfiguration>
>                 </execute>
>             </action>
>         </pluginExecution>
>     </pluginExecutions>
> </lifecycleMappingMetadata>
>
>
> 2015-04-29 8:44 GMT+02:00 Anders Hammar <and...@hammar.net
> <https://e.mail.ru/compose/?mailto=mailto%3aand...@hammar.net>>:
>
> What happened to v2.0 of the jaxb-m-p? Also, I really think we need to
> solve the m2e compat issue as that's a key thing for us on Eclipse (and it
> worked in v1.x).
>
> /Anders
>
> On Wed, Apr 29, 2015 at 2:41 AM, Lennart Jörelid <
> lennart.jore...@gmail.com
> <https://e.mail.ru/compose/?mailto=mailto%3alennart.jore...@gmail.com>>
> wrote:
>
> Hello all,
>
> It seems we are in the transition between Codehaus and MojoHaus/GitHub.
> I would believe that we should place each mojo in a separate Git repo - it
> makes sense, since they have different release cycles.
>
> However, if we do that, we need new settings for DistributionManagement,
> URL, IssueManagement and SCM in our mojo-parent (which really should
> migrate to the groupId "org.mojohaus", right?). I'm assuming that we should
> perform the releases from GitHub - but if we still can make releases from
> CodeHaus without changing too much, I would like to release the
> Jaxb2-Maven-Plugin version 2.1 first.
>
> --
>
> --
> +==============================+
> | Bästa hälsningar,
> | [sw. "Best regards"]
> |
> | Lennart Jörelid
> | EAI Architect & Integrator
> |
> | jGuru Europe AB
> | Mölnlycke - Kista
> |
> | Email: l...@jguru.se 
> <https://e.mail.ru/compose/?mailto=mailto%3...@jguru.se>
> | URL:   www.jguru.se
> | Phone
> | (skype):    jgurueurope
> | (intl):     +46 708 507 603
> | (domestic): 0708 - 507 603
> +==============================+
>
>
>
>
>
> --
>
> --
> +==============================+
> | Bästa hälsningar,
> | [sw. "Best regards"]
> |
> | Lennart Jörelid
> | EAI Architect & Integrator
> |
> | jGuru Europe AB
> | Mölnlycke - Kista
> |
> | Email: l...@jguru.se 
> <https://e.mail.ru/compose/?mailto=mailto%3...@jguru.se>
> | URL:   www.jguru.se
> | Phone
> | (skype):    jgurueurope
> | (intl):     +46 708 507 603
> | (domestic): 0708 - 507 603
> +==============================+
>
>
>
>
>
> --
>
> --
> +==============================+
> | Bästa hälsningar,
> | [sw. "Best regards"]
> |
> | Lennart Jörelid
> | EAI Architect & Integrator
> |
> | jGuru Europe AB
> | Mölnlycke - Kista
> |
> | Email: l...@jguru.se 
> <https://e.mail.ru/compose/?mailto=mailto%3...@jguru.se>
> | URL:   www.jguru.se
> | Phone
> | (skype):    jgurueurope
> | (intl):     +46 708 507 603
> | (domestic): 0708 - 507 603
> +==============================+
>
>
>

Reply via email to