Hello,

just for my understanding:
- Does the property reactorProjects[0] hold the projects in reactor build order?

Regards Mirko
[0] 
https://github.com/apache/maven-plugins/blob/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java#L68

On Wed, Feb 5, 2014 at 1:56 PM, Igor Fedorenko <i...@ifedorenko.com> wrote:
> Maven first calls #afterProjectsRead(MavenSession), then calculates
> reactor build order. So session.getProjects() still returns unsorted
> project list during afterProjectsRead, which most likely does not matter
> in your case.
>
> --
> Regards,
> Igor
>
>
> On 2/4/2014, 17:47, William Ferguson wrote:
>>
>> Can you explain the need to establish the reactor build order? I had
>> expected session.getProjects() to have returned modules in the order they
>> are defined. Are you saying that is not the case and that it would need to
>> be configured by the LifeCycleParticipant?
>>
>> I think I can make the hack work. So I'll go with that for now. But I'd
>> like to be able to annotate that with an issue number if there are plans
>> to
>> enhance the API on this front so that we know what and when to replace.
>>
>> I'd love to help enhance Maven (I have plenty to pay back for the hours it
>> has saved me over the years) but I don't have the band width right now and
>> I also don't feel like I have a good enough understanding of the Maven
>> core. But as I said before if you think this is a worthwhile enterprise
>> then help me create an issue that spells out what you think needs doing
>> and
>> I'll try to get back to it in a couple of months.
>>
>> William
>>
>>
>>
>> On Tue, Feb 4, 2014 at 10:39 PM, Igor Fedorenko <i...@ifedorenko.com>
>> wrote:
>>
>>>
>>> On 2/4/2014, 1:06, William Ferguson wrote:
>>>
>>>> OK, I'm getting the dependencies to resolve and I can amend the
>>>> classpath,
>>>> but I think I've hit a road block for multi module builds.
>>>>
>>>> LifeCycleParticipant is only ever called once at the root. This means
>>>> that
>>>> if I have a project with 2 modules where ModuleB depends on ModuleA then
>>>> I'm not going to be able extract and add ModuleA and it's classes when
>>>> the
>>>> LifeCycleParticipant executes because ModuleA will not have been built
>>>> yet.
>>>>
>>>> Is there some way to get the LifeCycleParticipant called for every
>>>> module
>>>> of the build?
>>>>
>>>>
>>> Looks like there are two related but distinct concerns there.
>>>
>>> First, it is necessary to establish reactor build order. This must
>>> happen before actual build starts and lifecycle participant provides a
>>> way to do this.
>>>
>>> Second, it is necessary to resolve dependencies among reactor modules.
>>> This has to happen as part of the build itself and I don't think there
>>> is an API for that yet.
>>>
>>> One hack-ish way to workaround this is to resolve reactor dependencies
>>> is to create empty directories from lifecycle participant,
>>> ModuleA/target/something in your case, and make sure ModuleA's build
>>> populates the directory with expected files.
>>>
>>> Proper solution requires changes to maven core. I can provide some
>>> pointers if you want to try this.
>>>
>>> --
>>> Regards,
>>> Igor
>>>
>>>
>>>   William
>>>>
>>>>
>>>> William
>>>>
>>>>
>>>> On Tue, Feb 4, 2014 at 12:46 PM, William Ferguson <
>>>> william.fergu...@xandar.com.au> wrote:
>>>>
>>>>   Igor,
>>>>>
>>>>>
>>>>> I've worked out how to modify the project classpath (pretty trivial).
>>>>> But
>>>>> I'm struggling to get the project dependencies resolved during
>>>>> LifeCycleParticipant#afterProjectsRead.
>>>>>
>>>>> I tried using the TychoDependencyResolver to #setupProject and
>>>>> #resolveProject but that isn't causing the projects dependencies to get
>>>>> resolved. I'm not sure what I'm missing.
>>>>>
>>>>> I've created a cut down project dep-resolution-plugin at
>>>>> https://github.com/william-ferguson-au/dep-resolution-plugin.git
>>>>> And a project that tests that plugin at
>>>>> https://github.com/william-ferguson-au/dep-resolution-plugin-test.git
>>>>> If you could have a look and point out what it is I'm missing I'd be
>>>>> most
>>>>> grateful.
>>>>>
>>>>> William
>>>>>
>>>>>
>>>>>
>>>>> On Sat, Jan 25, 2014 at 6:57 AM, William Ferguson <
>>>>> william.fergu...@xandar.com.au> wrote:
>>>>>
>>>>>   Maven 3.1.1 official, and all the plugin dependencies are 3.,1.1 too.
>>>>>>
>>>>>>
>>>>>> I'll trying switching to the annotations. Javadoc annotations were
>>>>>> just
>>>>>> for conformity with the rest of the project.
>>>>>>
>>>>>> If that doesn't work, I'll put together a cut down example.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> William
>>>>>>
>>>>>>
>>>>>> On Thu, Jan 23, 2014 at 9:43 PM, Igor Fedorenko <i...@ifedorenko.com
>>>>>>>
>>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>   No, no tricks, as far as I know Plexus (and now Sisu/Guice) only
>>>>>> inject
>>>>>>>
>>>>>>> fully configured components. so the behaviour you describe is rather
>>>>>>> odd.
>>>>>>>
>>>>>>> What version of Maven do you use? Is it official distribution from
>>>>>>> Apache or something you built locally?
>>>>>>>
>>>>>>> Not likely related, but I haven't used javadoc plexus annotations in
>>>>>>> ages. Any particular reason you don't want to use java 5 @Component?
>>>>>>>
>>>>>>> In any case, if you can provide small standalone example that shows
>>>>>>> the
>>>>>>> problem, I can try to see what's going on there.
>>>>>>>
>>>>>>> --
>>>>>>> Regards,
>>>>>>> Igor
>>>>>>>
>>>>>>>
>>>>>>> On 1/23/2014, 0:54, William Ferguson wrote:
>>>>>>>
>>>>>>>   Igor,
>>>>>>>>
>>>>>>>>
>>>>>>>> I'm having some difficulty getting the LifecycleParticipant to
>>>>>>>> resolve
>>>>>>>> Maven components.
>>>>>>>>
>>>>>>>> In particular, the org.apache.maven.project.
>>>>>>>> ProjectDependenciesResolver.
>>>>>>>> While it gets resolved, none of it's internal attributes get
>>>>>>>> resolved.
>>>>>>>> So
>>>>>>>> calls to projectDependenciesResolver.resolve crash with NPEs because
>>>>>>>> DefaultProjectDependenciesResolver#logger or #repoSystem is not
>>>>>>>> initialised.
>>>>>>>>
>>>>>>>>        /**
>>>>>>>>         * @component
>>>>>>>>         * @readonly
>>>>>>>>         * @required
>>>>>>>>         */
>>>>>>>>        protected ProjectDependenciesResolver
>>>>>>>> projectDependenciesResolver;
>>>>>>>>
>>>>>>>> Is there some special trick to getting components fully initialised
>>>>>>>> in a
>>>>>>>> LifecycleParticipant?
>>>>>>>>
>>>>>>>> William
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jan 21, 2014 at 12:21 AM, Igor Fedorenko
>>>>>>>> <i...@ifedorenko.com
>>>>>>>>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>
>>>>>>>>    Here is Tycho lifecycle participant [1] and here is the code that
>>>>>>>>
>>>>>>>>> injects new dependencies in MavenProject instances [2].
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> [1] http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/
>>>>>>>>> tree/tycho-core/src/main/java/org/eclipse/tycho/core/maven/
>>>>>>>>> TychoMavenLifecycleParticipant.java?h=tycho-0.19.x
>>>>>>>>> [2] http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/
>>>>>>>>> tree/tycho-core/src/main/java/org/eclipse/tycho/core/maven/
>>>>>>>>> MavenDependencyInjector.java?h=tycho-0.19.x
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Regards,
>>>>>>>>> Igor
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 1/20/2014, 8:21, William Ferguson wrote:
>>>>>>>>>
>>>>>>>>>    Thanks Igor,
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> could you give me a link to an example or some code that
>>>>>>>>>>
>>>>>>>>>>        - Utilises AbstractMavenLifecycleParticip
>>>>>>>>>> ant#afterProjectsRead
>>>>>>>>>>        - How to manipulate the project <dependencies> from there.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I found an example example by Brett Porter, but the doco is pretty
>>>>>>>>>> thin
>>>>>>>>>> and
>>>>>>>>>> I can't see how I would go about inject extra elements into the
>>>>>>>>>> classpath
>>>>>>>>>> from there.
>>>>>>>>>>
>>>>>>>>>> William
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Jan 20, 2014 at 10:47 PM, Igor Fedorenko <
>>>>>>>>>> i...@ifedorenko.com
>>>>>>>>>>
>>>>>>>>>>   wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>     There is probably more ways to do this, but you can implement
>>>>>>>>>>
>>>>>>>>>>   AbstractMavenLifecycleParticipant#afterProjectsRead to
>>>>>>>>>> manipulate
>>>>>>>>>>>
>>>>>>>>>>> project <dependencies>. This is what we do in Tycho, where we
>>>>>>>>>>> resolve
>>>>>>>>>>> project OSGi dependencies in AbstractMavenLifecycleParticipant
>>>>>>>>>>> and
>>>>>>>>>>> then
>>>>>>>>>>> inject that into Maven project model as system scoped maven
>>>>>>>>>>> dependencies.
>>>>>>>>>>>
>>>>>>>>>>> I also think your usecase highlights general deficiency with
>>>>>>>>>>> current
>>>>>>>>>>> dependency model. Since you have to add classpath elements
>>>>>>>>>>> dynamically,
>>>>>>>>>>> these elements are not visible to maven-based tools like m2e
>>>>>>>>>>> without
>>>>>>>>>>> additional effort on the tools part. I think it will be useful to
>>>>>>>>>>> extend
>>>>>>>>>>> <dependency> element syntax to allow references for nested
>>>>>>>>>>> archive entries, i.e. "dependency on classes jar nested within
>>>>>>>>>>> this
>>>>>>>>>>> AAR
>>>>>>>>>>> archive".
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Regards,
>>>>>>>>>>> Igor
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 1/20/2014, 7:00, William Ferguson wrote:
>>>>>>>>>>>
>>>>>>>>>>>     Hi,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> I realise this question isn't exactly related to dev within the
>>>>>>>>>>>> Maven
>>>>>>>>>>>> components, but it is about developing a Mojo using components
>>>>>>>>>>>> that
>>>>>>>>>>>> have
>>>>>>>>>>>> to
>>>>>>>>>>>> be pretty central and don't appear to be obviously documented
>>>>>>>>>>>> anywhere.
>>>>>>>>>>>> And
>>>>>>>>>>>> I ahve asked on maven-users without much luck.
>>>>>>>>>>>>
>>>>>>>>>>>> As part of the android-maven-plugin we have a Mojo which needs
>>>>>>>>>>>> to
>>>>>>>>>>>> add an
>>>>>>>>>>>> element to the compile time classpath for future Mojos
>>>>>>>>>>>> (specifically the
>>>>>>>>>>>> maven-compiler-plugin).
>>>>>>>>>>>>
>>>>>>>>>>>> Project has dependencies on artifacts of type AAR (Android
>>>>>>>>>>>> archive
>>>>>>>>>>>> - an
>>>>>>>>>>>> archive that contains several sub-artifacts including a classes
>>>>>>>>>>>> jar).
>>>>>>>>>>>>
>>>>>>>>>>>> Our Mojo unpacks the AAR artifacts and makes the sub-artifacts
>>>>>>>>>>>> available
>>>>>>>>>>>> to
>>>>>>>>>>>> other build components.
>>>>>>>>>>>>
>>>>>>>>>>>> One of those build components is the maven-compiler-plugin. We
>>>>>>>>>>>> want
>>>>>>>>>>>> to
>>>>>>>>>>>> add
>>>>>>>>>>>> the classes contained in the AAR dependencies to the compile
>>>>>>>>>>>> classpath
>>>>>>>>>>>> so
>>>>>>>>>>>> that the maven-compiler-plugin can compile our classes against
>>>>>>>>>>>> the
>>>>>>>>>>>> classes
>>>>>>>>>>>> from the AARs.
>>>>>>>>>>>>
>>>>>>>>>>>> How do we do that?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> William
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>     ------------------------------------------------------------
>>>>>>>>>>>> ---------
>>>>>>>>>>>>
>>>>>>>>>>>>   To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>>>>>>>>
>>>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>     ------------------------------------------------------------
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> ---------
>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>   ------------------------------------------------------------
>>>>>>>
>>>>>>> ---------
>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to