Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-dev] resolving implicit dependency in project configurator

We always welcome quality patches ;-)

--
Regards,
Igor

On 12-06-17 10:25 AM, Aliaksei Lahachou wrote:
I think it would be great to have a possibility to transform Maven model
right after it is read, even before execution plan is calculated (for
example in MavenImpl.readProject or
ProjectRegistryManager.readMavenProject before the call to
calculateExecutionPlans). Not only will this allow adding and updating
dependencies but also adding and updating plugin executions. Will you
accept a quality patch if someone creates it?


Regards,
htfv (Aliaksei Lahachou)



On Sun, Jun 17, 2012 at 1:20 PM, Igor Fedorenko <igor@xxxxxxxxxxxxxx
<mailto:igor@xxxxxxxxxxxxxx>> wrote:

    You are correct, there is one and only one ILifecycleMapping/2 per
    project. ILifecycleMapping2 won't help if you expect to have multiple
    AbstractMavenLifecycleParticip__ant's. Looks like m2e needs some new
    APIs
    to properly support this scenario.

    Also, even though it is possible to embed the 'separate core jar' in an
    eclipse plugin, there is no way to guarantee the embedded version will
    match the version use by projects at cli (think different plugin
    versions in pom.xml). For this reason it is always desirable to delegate
    execution to the code coming from project extensions realm.

    --
    Regards,
    Igor


    On 12-06-17 6:20 AM, Aliaksei Lahachou wrote:

        Hello Igor,

        The "proper" implementation described by seems like what I need.
        But as
        far as I understand, ILifecycleMapping/2 is intended to map a
        complete
        lifecycle/packaging, not a single plugin. What happens if there
        is more
        than one connector mapped to the same packaging? Will they be
        called in
        order?

        My plugin modifies the model and may add or updates
        dependencies. The
        logic is already contained in a separate core jar, so it should be
        possible to use it as is in an Eclipse plugin. I just cannot
        figure out
        how to make m2e see these changes.


        Regards,
        htfv (Aliaksei Lahachou)


        On Fri, Jun 1, 2012 at 4:56 AM, Igor Fedorenko
        <igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>
        <mailto:igor@xxxxxxxxxxxxxx <mailto:igor@xxxxxxxxxxxxxx>>> wrote:

            I have not looked at Fred's answer, but here is an
        alternative take ;-)

            1. This is actually tricky. "Proper" implementation has to
        resolve
            dependencies in the context of a project, which will take
        into account
            project-specific repositories, dependencyManagement and
        other aspects of
            maven dependency resolution logic. The easiest way to do
        this is to
            inject <dependency> element into MavenProject model and let
        standard
            m2e/maven dependency resolver do its thing. There is
        prototype support
            for doing this from m2e extensions, but it is not used by
        any extension
            I know of. If you are willing to risk it, have a look at
            ILifecycleMapping2 and DefaultMavenDependencyResolver____.
        It should be

            possible to subclass/wrap DefaultMavenDependencyResolver and
            inject implicit dependencies before delegating to the default
            implementation. As usual, if this does not work, I am willing to
            consider quality patches.

            2. As explain in [1], lifecycle mapping metadata provided by m2e
            extensions takes preference over metadata provided by maven
        plugins. In
            other words, m2e will use mapping metadata provided by your
        extension
            and ignore the plugin's.

            [1]
        http://wiki.eclipse.org/M2E_____plugin_execution_not_covered
        <http://wiki.eclipse.org/M2E___plugin_execution_not_covered>

            <http://wiki.eclipse.org/M2E___plugin_execution_not_covered
        <http://wiki.eclipse.org/M2E_plugin_execution_not_covered>>

            --
            Regards,
            Igor


            On 12-05-31 12:31 PM, Andrew Eisenberg wrote:

                Some more, related questions.

                1. It turns out that not only do I need to add a single
        dependency,
                but I also need to add some transitive dependencies.
          What is the
                recommended way to track down transitive dependencies

                2. The plugin that I am writing the configurator for
        already has a
                lifecycle-mapping-metadata.xml included.  It has this
        action:
                                         <action>
                                                 <execute>

                <runOnIncremental>true</____runOnIncremental>

                <runOnConfiguration>false</____runOnConfiguration>

                                                 </execute>
                                         </action>
                Now, the configurator needs to do more than just execute
        the plugin.
                I first need to configure a few natures, add a few
        things to the
                classpath, etc.  And then I need to execute the plugin.
          What is the
                recommended way of doing this?

                thanks for your help.

                Andrew

                On Wed, May 30, 2012 at 3:16 PM, Andrew
                Eisenberg<andrew@xxxxxxxxxxxx
        <mailto:andrew@xxxxxxxxxxxx> <mailto:andrew@xxxxxxxxxxxx
        <mailto:andrew@xxxxxxxxxxxx>>>  wrote:


                    Yep.  This works.  Very nice.

                    On Wed, May 30, 2012 at 1:16 PM, Andrew
                    Eisenberg<andrew@xxxxxxxxxxxx
        <mailto:andrew@xxxxxxxxxxxx> <mailto:andrew@xxxxxxxxxxxx
        <mailto:andrew@xxxxxxxxxxxx>>>

                      wrote:

                        Thanks.  I'll give this a try.

                        On Wed, May 30, 2012 at 12:25 PM, Igor
                        Fedorenko<igor@xxxxxxxxxxxxxx
        <mailto:igor@xxxxxxxxxxxxxx>
                        <mailto:igor@xxxxxxxxxxxxxx
        <mailto:igor@xxxxxxxxxxxxxx>>>  wrote:


                            IMaven#resolve can be used to resolve an
        artifact
                            from specified Maven
                            repositories. This call will download the
        artifact
                            if necessary. There
                            is currently no proper way to force
        re-resolution of
                            the artifact if
                            it's available in maven local repository,
        but you
                            may be able to use

          ArtifactRepository.____setReleaseUpdatePolicy and/or

                            .setSnapshotUpdatePolicy.

                            --
                            Regards,
                            Igor


                            On 12-05-30 1:39 PM, Andrew Eisenberg wrote:


                                Hi all,

                                I am creating a project configurator for
        a maven
                                plugin and maven
                                extension.  The extension (among other
        things)
                                adds an implicit
                                dependency to the project.  I would like to
                                replicate this
                                functionality inside of the project
                                configurator.  I know the
                                artifact, group, and version of the
        dependency.
                                  My question is: how
                                to I resolve that to get a jar file in
        the local
                                repo?  Furthermore,
                                if the artifact has not been downloaded
        yet, how
                                do I force it to be
                                so?

                                thanks,

          ___________________________________________________
                                m2e-dev mailing list
        m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
        <mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
        https://dev.eclipse.org/____mailman/listinfo/m2e-dev
        <https://dev.eclipse.org/__mailman/listinfo/m2e-dev>

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



          ___________________________________________________
                            m2e-dev mailing list
        m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
        <mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
        https://dev.eclipse.org/____mailman/listinfo/m2e-dev
        <https://dev.eclipse.org/__mailman/listinfo/m2e-dev>

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

                ___________________________________________________
                m2e-dev mailing list
        m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
        <mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
        https://dev.eclipse.org/____mailman/listinfo/m2e-dev
        <https://dev.eclipse.org/__mailman/listinfo/m2e-dev>
                <https://dev.eclipse.org/__mailman/listinfo/m2e-dev
        <https://dev.eclipse.org/mailman/listinfo/m2e-dev>>

            ___________________________________________________
            m2e-dev mailing list
        m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
        <mailto:m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>>
        https://dev.eclipse.org/____mailman/listinfo/m2e-dev
        <https://dev.eclipse.org/__mailman/listinfo/m2e-dev>

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




        _________________________________________________
        m2e-dev mailing list
        m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
        https://dev.eclipse.org/__mailman/listinfo/m2e-dev
        <https://dev.eclipse.org/mailman/listinfo/m2e-dev>


    _________________________________________________
    m2e-dev mailing list
    m2e-dev@xxxxxxxxxxx <mailto:m2e-dev@xxxxxxxxxxx>
    https://dev.eclipse.org/__mailman/listinfo/m2e-dev
    <https://dev.eclipse.org/mailman/listinfo/m2e-dev>




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




Back to the top