multimodule aggregate javadoc jar

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

multimodule aggregate javadoc jar

Jon Harper
Hi list,

I would like to package a multimodule project (jar of each submodule)
and then create one aggregated javadoc jar attached to root pom.
The best solution I came up with is using the following command line

$ mvn package javadoc:aggregate-jar

It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
true )", so when the goal is explicitly called on the command line it
executes only once on the root pom. (if the goal is bound to a phase
of the lifecycle of the root pom, it will execute before the children
which I don't want)

One downside of this approach is that aggregate-jar forks the
lifecycle and so everything gets recompiled (which takes a long time
if you have many modules, or if you use features that prevent avoiding
recompiling, like having a package-info.java or using
maven-templating-plugin to insert build timestamps in your sources)

It seems like adding a javadoc:aggregate-jar-no-fork would solve the problem.

Is my understanding correct, and can we add the aggregate-jar-no-fork
goal ? Or what is everyone doing to generate aggregated javadocs
without recompiling everything

Thanks,
Jon

PS: another downside is that you must not forget to add the explicit
goal on the command line, but I can't see a solution for that, except
for the proposed lifecycle redesign with pre and post phases, which we
will get in the far future as far as I understand.

PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
people who generate their aggregated javadoc on a "distribution"
submodule which has dependencies to everything instead of the root
pom. Currently they can make it work by using aggregate-no-fork and
then maven-jar-plugin but it's a bit complicated.

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

rfscholte
Hi Jon,

it is bothering me for a while that Maven is not yet capable to see that a fork is not required (in most cases) when it is executed as part of a lifecycle.
Introducing x-no-fork goals is a fast workaround, but it is probably time to do this properly.

Also plugins should be improved to see if they should do their action, e.g.:
Consider using the following flag in for the java compiler:

-Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files 

Maybe this will already improve your buildtime.

thanks,
Robert

On 2-2-2020 17:56:15, Jon Harper <[hidden email]> wrote:
Hi list,

I would like to package a multimodule project (jar of each submodule)
and then create one aggregated javadoc jar attached to root pom.
The best solution I came up with is using the following command line

$ mvn package javadoc:aggregate-jar

It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
true )", so when the goal is explicitly called on the command line it
executes only once on the root pom. (if the goal is bound to a phase
of the lifecycle of the root pom, it will execute before the children
which I don't want)

One downside of this approach is that aggregate-jar forks the
lifecycle and so everything gets recompiled (which takes a long time
if you have many modules, or if you use features that prevent avoiding
recompiling, like having a package-info.java or using
maven-templating-plugin to insert build timestamps in your sources)

It seems like adding a javadoc:aggregate-jar-no-fork would solve the problem.

Is my understanding correct, and can we add the aggregate-jar-no-fork
goal ? Or what is everyone doing to generate aggregated javadocs
without recompiling everything

Thanks,
Jon

PS: another downside is that you must not forget to add the explicit
goal on the command line, but I can't see a solution for that, except
for the proposed lifecycle redesign with pre and post phases, which we
will get in the far future as far as I understand.

PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
people who generate their aggregated javadoc on a "distribution"
submodule which has dependencies to everything instead of the root
pom. Currently they can make it work by using aggregate-no-fork and
then maven-jar-plugin but it's a bit complicated.

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

Jon Harper
Hi Robert,
thanks for you reply. I'll keep an eye out for these improvements.

Another obstacle to my use case is that when running
$ mvn package javadoc:aggregate-jar install
the install phase doesn't continue where package finished, instead it
starts over.

Is there a way to tell maven to run the lifecycle only once and
continue from the previous phase ?

Note:
The same thing happens when running
$ mvn package install
or even
$ mvn package package
everything is done twice.

thanks in advance,
Jon

On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte <[hidden email]> wrote:

>
> Hi Jon,
>
> it is bothering me for a while that Maven is not yet capable to see that a fork is not required (in most cases) when it is executed as part of a lifecycle.
> Introducing x-no-fork goals is a fast workaround, but it is probably time to do this properly.
>
> Also plugins should be improved to see if they should do their action, e.g.:
> Consider using the following flag in for the java compiler:
>
> -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files
>
> Maybe this will already improve your buildtime.
>
> thanks,
> Robert
>
> On 2-2-2020 17:56:15, Jon Harper <[hidden email]> wrote:
> Hi list,
>
> I would like to package a multimodule project (jar of each submodule)
> and then create one aggregated javadoc jar attached to root pom.
> The best solution I came up with is using the following command line
>
> $ mvn package javadoc:aggregate-jar
>
> It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> true )", so when the goal is explicitly called on the command line it
> executes only once on the root pom. (if the goal is bound to a phase
> of the lifecycle of the root pom, it will execute before the children
> which I don't want)
>
> One downside of this approach is that aggregate-jar forks the
> lifecycle and so everything gets recompiled (which takes a long time
> if you have many modules, or if you use features that prevent avoiding
> recompiling, like having a package-info.java or using
> maven-templating-plugin to insert build timestamps in your sources)
>
> It seems like adding a javadoc:aggregate-jar-no-fork would solve the problem.
>
> Is my understanding correct, and can we add the aggregate-jar-no-fork
> goal ? Or what is everyone doing to generate aggregated javadocs
> without recompiling everything
>
> Thanks,
> Jon
>
> PS: another downside is that you must not forget to add the explicit
> goal on the command line, but I can't see a solution for that, except
> for the proposed lifecycle redesign with pre and post phases, which we
> will get in the far future as far as I understand.
>
> PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> people who generate their aggregated javadoc on a "distribution"
> submodule which has dependencies to everything instead of the root
> pom. Currently they can make it work by using aggregate-no-fork and
> then maven-jar-plugin but it's a bit complicated.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

Jon Harper
Also a "funny" thing is that running an aggregator mojo between 2
phases in a multimodule project shows the wrong build step numbers:
(In this example I generated a quick project setup with mvn archetype:
a parent pom with 2 children)

# javadoc:jar is *not* an aggregator mojo, this looks correct
$ mvn package javadoc:jar install
[INFO] Building my-aggrega 1.0-SNAPSHOT                                   [1/3]
[INFO] Building my-app3 1.0-SNAPSHOT                                      [2/3]
[INFO] Building my-app2 1.0-SNAPSHOT                                      [3/3]


$ mvn package javadoc:aggregate-jar install
[INFO] Building my-aggrega 1.0-SNAPSHOT                                   [1/3]
[INFO] Building my-app3 1.0-SNAPSHOT                                      [2/3]
[INFO] Building my-app2 1.0-SNAPSHOT                                      [3/3]
[INFO] Building my-aggrega 1.0-SNAPSHOT                                   [4/3]
[INFO] Building my-aggrega 1.0-SNAPSHOT                                   [5/3]
[INFO] Building my-app3 1.0-SNAPSHOT                                      [6/3]
[INFO] Building my-app2 1.0-SNAPSHOT                                      [7/3]


Jon

On Tue, Feb 4, 2020 at 8:58 AM Jon Harper <[hidden email]> wrote:

>
> Hi Robert,
> thanks for you reply. I'll keep an eye out for these improvements.
>
> Another obstacle to my use case is that when running
> $ mvn package javadoc:aggregate-jar install
> the install phase doesn't continue where package finished, instead it
> starts over.
>
> Is there a way to tell maven to run the lifecycle only once and
> continue from the previous phase ?
>
> Note:
> The same thing happens when running
> $ mvn package install
> or even
> $ mvn package package
> everything is done twice.
>
> thanks in advance,
> Jon
>
> On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte <[hidden email]> wrote:
> >
> > Hi Jon,
> >
> > it is bothering me for a while that Maven is not yet capable to see that a fork is not required (in most cases) when it is executed as part of a lifecycle.
> > Introducing x-no-fork goals is a fast workaround, but it is probably time to do this properly.
> >
> > Also plugins should be improved to see if they should do their action, e.g.:
> > Consider using the following flag in for the java compiler:
> >
> > -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files
> >
> > Maybe this will already improve your buildtime.
> >
> > thanks,
> > Robert
> >
> > On 2-2-2020 17:56:15, Jon Harper <[hidden email]> wrote:
> > Hi list,
> >
> > I would like to package a multimodule project (jar of each submodule)
> > and then create one aggregated javadoc jar attached to root pom.
> > The best solution I came up with is using the following command line
> >
> > $ mvn package javadoc:aggregate-jar
> >
> > It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> > true )", so when the goal is explicitly called on the command line it
> > executes only once on the root pom. (if the goal is bound to a phase
> > of the lifecycle of the root pom, it will execute before the children
> > which I don't want)
> >
> > One downside of this approach is that aggregate-jar forks the
> > lifecycle and so everything gets recompiled (which takes a long time
> > if you have many modules, or if you use features that prevent avoiding
> > recompiling, like having a package-info.java or using
> > maven-templating-plugin to insert build timestamps in your sources)
> >
> > It seems like adding a javadoc:aggregate-jar-no-fork would solve the problem.
> >
> > Is my understanding correct, and can we add the aggregate-jar-no-fork
> > goal ? Or what is everyone doing to generate aggregated javadocs
> > without recompiling everything
> >
> > Thanks,
> > Jon
> >
> > PS: another downside is that you must not forget to add the explicit
> > goal on the command line, but I can't see a solution for that, except
> > for the proposed lifecycle redesign with pre and post phases, which we
> > will get in the far future as far as I understand.
> >
> > PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> > people who generate their aggregated javadoc on a "distribution"
> > submodule which has dependencies to everything instead of the root
> > pom. Currently they can make it work by using aggregate-no-fork and
> > then maven-jar-plugin but it's a bit complicated.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

rfscholte
In reply to this post by Jon Harper
Hi Jon,

it is not possible so start a lifecycle from the middle.
In case of 'mvn package javadoc:aggregate-jar install' you should bind the  javadoc:aggregate-jar to the package-phase, and now you can run 'mvn install'.
If you don't want to run it all the time, consider putting the javadoc-plugin in a profile and activate it when wished.

You experience might improve if/when we implement MNG-5885

thanks,
Robert

https://issues.apache.org/jira/browse/MNG-5885
On 4-2-2020 08:58:18, Jon Harper <[hidden email]> wrote:
Hi Robert,
thanks for you reply. I'll keep an eye out for these improvements.

Another obstacle to my use case is that when running
$ mvn package javadoc:aggregate-jar install
the install phase doesn't continue where package finished, instead it
starts over.

Is there a way to tell maven to run the lifecycle only once and
continue from the previous phase ?

Note:
The same thing happens when running
$ mvn package install
or even
$ mvn package package
everything is done twice.

thanks in advance,
Jon

On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte wrote:

>
> Hi Jon,
>
> it is bothering me for a while that Maven is not yet capable to see that a fork is not required (in most cases) when it is executed as part of a lifecycle.
> Introducing x-no-fork goals is a fast workaround, but it is probably time to do this properly.
>
> Also plugins should be improved to see if they should do their action, e.g.:
> Consider using the following flag in for the java compiler:
>
> -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files
>
> Maybe this will already improve your buildtime.
>
> thanks,
> Robert
>
> On 2-2-2020 17:56:15, Jon Harper wrote:
> Hi list,
>
> I would like to package a multimodule project (jar of each submodule)
> and then create one aggregated javadoc jar attached to root pom.
> The best solution I came up with is using the following command line
>
> $ mvn package javadoc:aggregate-jar
>
> It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> true )", so when the goal is explicitly called on the command line it
> executes only once on the root pom. (if the goal is bound to a phase
> of the lifecycle of the root pom, it will execute before the children
> which I don't want)
>
> One downside of this approach is that aggregate-jar forks the
> lifecycle and so everything gets recompiled (which takes a long time
> if you have many modules, or if you use features that prevent avoiding
> recompiling, like having a package-info.java or using
> maven-templating-plugin to insert build timestamps in your sources)
>
> It seems like adding a javadoc:aggregate-jar-no-fork would solve the problem.
>
> Is my understanding correct, and can we add the aggregate-jar-no-fork
> goal ? Or what is everyone doing to generate aggregated javadocs
> without recompiling everything
>
> Thanks,
> Jon
>
> PS: another downside is that you must not forget to add the explicit
> goal on the command line, but I can't see a solution for that, except
> for the proposed lifecycle redesign with pre and post phases, which we
> will get in the far future as far as I understand.
>
> PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> people who generate their aggregated javadoc on a "distribution"
> submodule which has dependencies to everything instead of the root
> pom. Currently they can make it work by using aggregate-no-fork and
> then maven-jar-plugin but it's a bit complicated.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

rfscholte
In reply to this post by Jon Harper
Looks like a bug, please create a ticket for it at https://issues.apache.org/jira/browse/MNG

thanks,
Robert
On 4-2-2020 09:20:12, Jon Harper <[hidden email]> wrote:
Also a "funny" thing is that running an aggregator mojo between 2
phases in a multimodule project shows the wrong build step numbers:
(In this example I generated a quick project setup with mvn archetype:
a parent pom with 2 children)

# javadoc:jar is *not* an aggregator mojo, this looks correct
$ mvn package javadoc:jar install
[INFO] Building my-aggrega 1.0-SNAPSHOT [1/3]
[INFO] Building my-app3 1.0-SNAPSHOT [2/3]
[INFO] Building my-app2 1.0-SNAPSHOT [3/3]


$ mvn package javadoc:aggregate-jar install
[INFO] Building my-aggrega 1.0-SNAPSHOT [1/3]
[INFO] Building my-app3 1.0-SNAPSHOT [2/3]
[INFO] Building my-app2 1.0-SNAPSHOT [3/3]
[INFO] Building my-aggrega 1.0-SNAPSHOT [4/3]
[INFO] Building my-aggrega 1.0-SNAPSHOT [5/3]
[INFO] Building my-app3 1.0-SNAPSHOT [6/3]
[INFO] Building my-app2 1.0-SNAPSHOT [7/3]


Jon

On Tue, Feb 4, 2020 at 8:58 AM Jon Harper wrote:

>
> Hi Robert,
> thanks for you reply. I'll keep an eye out for these improvements.
>
> Another obstacle to my use case is that when running
> $ mvn package javadoc:aggregate-jar install
> the install phase doesn't continue where package finished, instead it
> starts over.
>
> Is there a way to tell maven to run the lifecycle only once and
> continue from the previous phase ?
>
> Note:
> The same thing happens when running
> $ mvn package install
> or even
> $ mvn package package
> everything is done twice.
>
> thanks in advance,
> Jon
>
> On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte wrote:
> >
> > Hi Jon,
> >
> > it is bothering me for a while that Maven is not yet capable to see that a fork is not required (in most cases) when it is executed as part of a lifecycle.
> > Introducing x-no-fork goals is a fast workaround, but it is probably time to do this properly.
> >
> > Also plugins should be improved to see if they should do their action, e.g.:
> > Consider using the following flag in for the java compiler:
> >
> > -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files
> >
> > Maybe this will already improve your buildtime.
> >
> > thanks,
> > Robert
> >
> > On 2-2-2020 17:56:15, Jon Harper wrote:
> > Hi list,
> >
> > I would like to package a multimodule project (jar of each submodule)
> > and then create one aggregated javadoc jar attached to root pom.
> > The best solution I came up with is using the following command line
> >
> > $ mvn package javadoc:aggregate-jar
> >
> > It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> > true )", so when the goal is explicitly called on the command line it
> > executes only once on the root pom. (if the goal is bound to a phase
> > of the lifecycle of the root pom, it will execute before the children
> > which I don't want)
> >
> > One downside of this approach is that aggregate-jar forks the
> > lifecycle and so everything gets recompiled (which takes a long time
> > if you have many modules, or if you use features that prevent avoiding
> > recompiling, like having a package-info.java or using
> > maven-templating-plugin to insert build timestamps in your sources)
> >
> > It seems like adding a javadoc:aggregate-jar-no-fork would solve the problem.
> >
> > Is my understanding correct, and can we add the aggregate-jar-no-fork
> > goal ? Or what is everyone doing to generate aggregated javadocs
> > without recompiling everything
> >
> > Thanks,
> > Jon
> >
> > PS: another downside is that you must not forget to add the explicit
> > goal on the command line, but I can't see a solution for that, except
> > for the proposed lifecycle redesign with pre and post phases, which we
> > will get in the far future as far as I understand.
> >
> > PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> > people who generate their aggregated javadoc on a "distribution"
> > submodule which has dependencies to everything instead of the root
> > pom. Currently they can make it work by using aggregate-no-fork and
> > then maven-jar-plugin but it's a bit complicated.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

Jon Harper
In reply to this post by rfscholte
Hi Robert, thanks again for your answers.

I can't bind the javadoc:aggregate-jar goal to the package phase because
goals with "@Mojo ( aggregator = true )" are only executed once (instead of
once per module) if they are invoked from the command line.

Cheers,
Jon

Le mar. 4 févr. 2020 à 18:48, Robert Scholte <[hidden email]> a
écrit :

> Hi Jon,
>
> it is not possible so start a lifecycle from the middle.
> In case of 'mvn package javadoc:aggregate-jar install' you should bind
> the  javadoc:aggregate-jar to the package-phase, and now you can run 'mvn
> install'.
> If you don't want to run it all the time, consider putting the
> javadoc-plugin in a profile and activate it when wished.
>
> You experience might improve if/when we implement MNG-5885
>
> thanks,
> Robert
>
> https://issues.apache.org/jira/browse/MNG-5885
> On 4-2-2020 08:58:18, Jon Harper <[hidden email]> wrote:
> Hi Robert,
> thanks for you reply. I'll keep an eye out for these improvements.
>
> Another obstacle to my use case is that when running
> $ mvn package javadoc:aggregate-jar install
> the install phase doesn't continue where package finished, instead it
> starts over.
>
> Is there a way to tell maven to run the lifecycle only once and
> continue from the previous phase ?
>
> Note:
> The same thing happens when running
> $ mvn package install
> or even
> $ mvn package package
> everything is done twice.
>
> thanks in advance,
> Jon
>
> On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte wrote:
> >
> > Hi Jon,
> >
> > it is bothering me for a while that Maven is not yet capable to see that
> a fork is not required (in most cases) when it is executed as part of a
> lifecycle.
> > Introducing x-no-fork goals is a fast workaround, but it is probably
> time to do this properly.
> >
> > Also plugins should be improved to see if they should do their action,
> e.g.:
> > Consider using the following flag in for the java compiler:
> >
> > -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files
> >
> > Maybe this will already improve your buildtime.
> >
> > thanks,
> > Robert
> >
> > On 2-2-2020 17:56:15, Jon Harper wrote:
> > Hi list,
> >
> > I would like to package a multimodule project (jar of each submodule)
> > and then create one aggregated javadoc jar attached to root pom.
> > The best solution I came up with is using the following command line
> >
> > $ mvn package javadoc:aggregate-jar
> >
> > It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> > true )", so when the goal is explicitly called on the command line it
> > executes only once on the root pom. (if the goal is bound to a phase
> > of the lifecycle of the root pom, it will execute before the children
> > which I don't want)
> >
> > One downside of this approach is that aggregate-jar forks the
> > lifecycle and so everything gets recompiled (which takes a long time
> > if you have many modules, or if you use features that prevent avoiding
> > recompiling, like having a package-info.java or using
> > maven-templating-plugin to insert build timestamps in your sources)
> >
> > It seems like adding a javadoc:aggregate-jar-no-fork would solve the
> problem.
> >
> > Is my understanding correct, and can we add the aggregate-jar-no-fork
> > goal ? Or what is everyone doing to generate aggregated javadocs
> > without recompiling everything
> >
> > Thanks,
> > Jon
> >
> > PS: another downside is that you must not forget to add the explicit
> > goal on the command line, but I can't see a solution for that, except
> > for the proposed lifecycle redesign with pre and post phases, which we
> > will get in the far future as far as I understand.
> >
> > PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> > people who generate their aggregated javadoc on a "distribution"
> > submodule which has dependencies to everything instead of the root
> > pom. Currently they can make it work by using aggregate-no-fork and
> > then maven-jar-plugin but it's a bit complicated.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

rfscholte
Well, so we're back to the missing javadoc:aggregate-jar-no-fork :)


On 4-2-2020 19:38:43, Jon Harper <[hidden email]> wrote:
Hi Robert, thanks again for your answers.

I can't bind the javadoc:aggregate-jar goal to the package phase because
goals with "@Mojo ( aggregator = true )" are only executed once (instead of
once per module) if they are invoked from the command line.

Cheers,
Jon

Le mar. 4 févr. 2020 à 18:48, Robert Scholte a
écrit :

> Hi Jon,
>
> it is not possible so start a lifecycle from the middle.
> In case of 'mvn package javadoc:aggregate-jar install' you should bind
> the javadoc:aggregate-jar to the package-phase, and now you can run 'mvn
> install'.
> If you don't want to run it all the time, consider putting the
> javadoc-plugin in a profile and activate it when wished.
>
> You experience might improve if/when we implement MNG-5885
>
> thanks,
> Robert
>
> https://issues.apache.org/jira/browse/MNG-5885
> On 4-2-2020 08:58:18, Jon Harper wrote:
> Hi Robert,
> thanks for you reply. I'll keep an eye out for these improvements.
>
> Another obstacle to my use case is that when running
> $ mvn package javadoc:aggregate-jar install
> the install phase doesn't continue where package finished, instead it
> starts over.
>
> Is there a way to tell maven to run the lifecycle only once and
> continue from the previous phase ?
>
> Note:
> The same thing happens when running
> $ mvn package install
> or even
> $ mvn package package
> everything is done twice.
>
> thanks in advance,
> Jon
>
> On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte wrote:
> >
> > Hi Jon,
> >
> > it is bothering me for a while that Maven is not yet capable to see that
> a fork is not required (in most cases) when it is executed as part of a
> lifecycle.
> > Introducing x-no-fork goals is a fast workaround, but it is probably
> time to do this properly.
> >
> > Also plugins should be improved to see if they should do their action,
> e.g.:
> > Consider using the following flag in for the java compiler:
> >
> > -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files
> >
> > Maybe this will already improve your buildtime.
> >
> > thanks,
> > Robert
> >
> > On 2-2-2020 17:56:15, Jon Harper wrote:
> > Hi list,
> >
> > I would like to package a multimodule project (jar of each submodule)
> > and then create one aggregated javadoc jar attached to root pom.
> > The best solution I came up with is using the following command line
> >
> > $ mvn package javadoc:aggregate-jar
> >
> > It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> > true )", so when the goal is explicitly called on the command line it
> > executes only once on the root pom. (if the goal is bound to a phase
> > of the lifecycle of the root pom, it will execute before the children
> > which I don't want)
> >
> > One downside of this approach is that aggregate-jar forks the
> > lifecycle and so everything gets recompiled (which takes a long time
> > if you have many modules, or if you use features that prevent avoiding
> > recompiling, like having a package-info.java or using
> > maven-templating-plugin to insert build timestamps in your sources)
> >
> > It seems like adding a javadoc:aggregate-jar-no-fork would solve the
> problem.
> >
> > Is my understanding correct, and can we add the aggregate-jar-no-fork
> > goal ? Or what is everyone doing to generate aggregated javadocs
> > without recompiling everything
> >
> > Thanks,
> > Jon
> >
> > PS: another downside is that you must not forget to add the explicit
> > goal on the command line, but I can't see a solution for that, except
> > for the proposed lifecycle redesign with pre and post phases, which we
> > will get in the far future as far as I understand.
> >
> > PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> > people who generate their aggregated javadoc on a "distribution"
> > submodule which has dependencies to everything instead of the root
> > pom. Currently they can make it work by using aggregate-no-fork and
> > then maven-jar-plugin but it's a bit complicated.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: multimodule aggregate javadoc jar

Jon Harper
Well almost, as far as I understand it's having aggregate-jar-no-fork and
binding it to a submodule that is after all other submodules in the build
plan (a "distribution"- like artifact, or an aggregator that is not the
parent). Unfortunately this changes the artifact in which clients look up
the javadocs (we used to put the aggregated javadocs in our parent pom) so
it's a bit confusing..

Thanks again for your time.
Jon

Le mar. 4 févr. 2020 à 22:10, Robert Scholte <[hidden email]> a
écrit :

> Well, so we're back to the missing javadoc:aggregate-jar-no-fork :)
>
>
> On 4-2-2020 19:38:43, Jon Harper <[hidden email]> wrote:
> Hi Robert, thanks again for your answers.
>
> I can't bind the javadoc:aggregate-jar goal to the package phase because
> goals with "@Mojo ( aggregator = true )" are only executed once (instead of
> once per module) if they are invoked from the command line.
>
> Cheers,
> Jon
>
> Le mar. 4 févr. 2020 à 18:48, Robert Scholte a
> écrit :
>
> > Hi Jon,
> >
> > it is not possible so start a lifecycle from the middle.
> > In case of 'mvn package javadoc:aggregate-jar install' you should bind
> > the javadoc:aggregate-jar to the package-phase, and now you can run 'mvn
> > install'.
> > If you don't want to run it all the time, consider putting the
> > javadoc-plugin in a profile and activate it when wished.
> >
> > You experience might improve if/when we implement MNG-5885
> >
> > thanks,
> > Robert
> >
> > https://issues.apache.org/jira/browse/MNG-5885
> > On 4-2-2020 08:58:18, Jon Harper wrote:
> > Hi Robert,
> > thanks for you reply. I'll keep an eye out for these improvements.
> >
> > Another obstacle to my use case is that when running
> > $ mvn package javadoc:aggregate-jar install
> > the install phase doesn't continue where package finished, instead it
> > starts over.
> >
> > Is there a way to tell maven to run the lifecycle only once and
> > continue from the previous phase ?
> >
> > Note:
> > The same thing happens when running
> > $ mvn package install
> > or even
> > $ mvn package package
> > everything is done twice.
> >
> > thanks in advance,
> > Jon
> >
> > On Mon, Feb 3, 2020 at 8:12 PM Robert Scholte wrote:
> > >
> > > Hi Jon,
> > >
> > > it is bothering me for a while that Maven is not yet capable to see
> that
> > a fork is not required (in most cases) when it is executed as part of a
> > lifecycle.
> > > Introducing x-no-fork goals is a fast workaround, but it is probably
> > time to do this properly.
> > >
> > > Also plugins should be improved to see if they should do their action,
> > e.g.:
> > > Consider using the following flag in for the java compiler:
> > >
> > > -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info
> files
> > >
> > > Maybe this will already improve your buildtime.
> > >
> > > thanks,
> > > Robert
> > >
> > > On 2-2-2020 17:56:15, Jon Harper wrote:
> > > Hi list,
> > >
> > > I would like to package a multimodule project (jar of each submodule)
> > > and then create one aggregated javadoc jar attached to root pom.
> > > The best solution I came up with is using the following command line
> > >
> > > $ mvn package javadoc:aggregate-jar
> > >
> > > It uses the fact that aggregate-jar is declared "@Mojo ( aggregator =
> > > true )", so when the goal is explicitly called on the command line it
> > > executes only once on the root pom. (if the goal is bound to a phase
> > > of the lifecycle of the root pom, it will execute before the children
> > > which I don't want)
> > >
> > > One downside of this approach is that aggregate-jar forks the
> > > lifecycle and so everything gets recompiled (which takes a long time
> > > if you have many modules, or if you use features that prevent avoiding
> > > recompiling, like having a package-info.java or using
> > > maven-templating-plugin to insert build timestamps in your sources)
> > >
> > > It seems like adding a javadoc:aggregate-jar-no-fork would solve the
> > problem.
> > >
> > > Is my understanding correct, and can we add the aggregate-jar-no-fork
> > > goal ? Or what is everyone doing to generate aggregated javadocs
> > > without recompiling everything
> > >
> > > Thanks,
> > > Jon
> > >
> > > PS: another downside is that you must not forget to add the explicit
> > > goal on the command line, but I can't see a solution for that, except
> > > for the proposed lifecycle redesign with pre and post phases, which we
> > > will get in the far future as far as I understand.
> > >
> > > PS2: adding javadoc:aggregate-jar-no-fork would also be useful for
> > > people who generate their aggregated javadoc on a "distribution"
> > > submodule which has dependencies to everything instead of the root
> > > pom. Currently they can make it work by using aggregate-no-fork and
> > > then maven-jar-plugin but it's a bit complicated.
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [hidden email]
> > > For additional commands, e-mail: [hidden email]
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>