2019-11-14 1:35 UTC+01:00, Alex Herbert <alex.d.herb...@gmail.com>:
>
>
>> On 13 Nov 2019, at 23:53, Gilles Sadowski <gillese...@gmail.com> wrote:
>>
>> Hello.
>>
>> Le mer. 13 nov. 2019 à 18:29, Alex Herbert <alex.d.herb...@gmail.com
>> <mailto:alex.d.herb...@gmail.com>> a écrit :
>>>
>>>
>>> On 13/11/2019 13:09, Gilles Sadowski wrote:
>>>> Hi.
>>>>
>>>> Do you think that it would be feasible to have all those fixes applied
>>>> to other modular components (that were based on the [RNG] layout)
>>>> through a common layer (another POM) between those components
>>>> and "commons-parent"?
>>>
>>> Most of the fixes have been in the module site descriptors or items that
>>> should be moved up to commons parent. It may be possible to put the site
>>> descriptors into a parent. IIUC the site descriptors are merged together
>>> before the maven site plugin creates the site. So the fix for the top
>>> right banner could be moved into a common parent. Each child module
>>> would also want to enumerate the past releases of the javadocs. Thus
>>> they would require a site descriptor anyway and the banner fix would
>>> only save 5 lines per site.xml for the banner.
>>
>> Well, I was thinking of whether a multi-layered POM could be more
>> flexible and robust in handling the different type of components (e.g.
>> "multi-module" or not).
>
> I think this would take a bit more reading on exactly how Maven thinks a
> multi-module project should work...

Probably. :-/

>>
>>> I did a big change to the use of svn to checkout the current site. This
>>> was required as the archived javadocs are not in a top level directory.
>>> So each module has to be checked out, the archived javadocs set to be
>>> excluded and then the rest of the site can be checked out.
>>
>> Sorry, I don't follow.
>> Didn't links to the Javadoc of previous versions exist prior to those
>> changes?
>
> Yes. Take a look at the pom.xml on line 464 for prepare-checkout.
>
> This entire section was and is a mystery to me. I don’t know why it is
> required to create a copy of the site locally.

Oh, I seem to remember now that I was hit by this nonsense of
svn checking out the web site when the "site-content" did not
exist!

> The previous code in this maven target was created on the assumption that it
> was a single module project and the archived javadocs for every previous
> version were in a javadocs directory under the top level directory. The same
> code is present in lang, io, text, etc.
>
> The way it works for those projects is incorrect for a multi-module site as
> the archived javadocs are in a different place. It also is a target run in
> every module and so for a full site build with the examples modules you
> ended up with 14 full checkout copies of the RNG site, including the old
> archived javadocs.

Not sure I get what you mean; but I don't think that anything related
to svn should be necessary in the POM file, excerpt perhaps to automate
the creation of an *empty* "site-content" directory (in every module)
in order to prevent downloading the web site.

>
> Anyway I fixed it to work as it should. It checks out the site and ignores
> the old javadocs. I added a fix so child modules copy the parent site
> checkout. This only works if invoked in two stages on a clean git checkout:
>
> mvn -N pre-site && mvn pre-site
>
> This in itself is annoying as you cannot do:
>
> git clone …
> cd commons-rng && mvn site
>
> Without the checkout of the site in each module. I think I can fix this by
> using an external ant build.xml file where you can do if-else logic. But I
> was wondering if I even had to. Perhaps the goal only needs to run in the
> parent, or the dist-archive module for a release.

Not even there (IIUC whet you mean).
What I do is something along the lines:
 $ mvn site site:stage
 $ cd site-content
 $ rm -rf *
 $ cd target/staging
 $ cp -r . ../../site-content
Then
 $ cd ../../site-content
 $ svn add ... the new files (shown with "?" by "svn status")
 $ svn del ... the old files (shown with "!" by "svn status")
 $ svn commit

>
> What I would like to know is:
>
> 1. Do the child modules need this?

I don't think so.

> 2. What is it used for? If it is only for a release then it should be in the
> release profile. Or maybe the commons-release plugin. Using ant to do this
> external execution is just poor (I spent a while fighting ant and it is not
> a programming language, so not suitable for the decisions required for the
> multi-module recursive processing).

I'd favour dropping anything which is not working properly. ;-)

> 3. The top level checkout is used in the release process for manually
> updating the site. But why all the others?

Indeed.
I just created (locally) empty "site-content" and never put anything in
them.  [Would be nice to automate; IIRC, Eric too had some mishaps
with "site-content"...]

>
> If I go to for example commons-rng-client-api and empty the site-content
> folder ‘mvn clean package site’ still creates a site that looks fine.

Sure.
As you state above, why all the svn trickery appears in the POM is
a mistery...

>
> Another bug with multi-module builds is that the following reports are in
> each child module and are duplicates of that in the top level page:
>
> Project information
> - Team
> - SCM
> - Issue Management
> - Mailing lists
> - CI management
> - Distribution management

That's probably because, lacking sufficient knowledge, I copied everything
to each module (using the non-modular Commons Math as a template).
OTOH, I don't think that having the above in each "sub-site" is bad.

> Project reports
> - jira
>
> The ones in the project information menu are harmless and fast to create.
> The jira report takes a long time to generate. I think at least this one
> should be disabled in child modules.

+1
[The more so that it refers to all the issues, not only those that pertain
to the module at hand.]

>
> My motivation is to reduce bloat and and speed up the process of a site
> build. It was annoying when doing the release as you use clean checkouts and
> the download of 14 copies of the full site was slow.

Waiting for the upload is already painful enough: All files are transmitted at
each web site update because of some tag, or date, has changed. :-(

>>>
>>> Since this process is repeated for every module it can get very slow. I
>>> changed the site checkout to copy the directory from the parent if it
>>> was present. There was no solution I could find to fix this to run in a
>>> single maven command as profile activation for all modules is done by
>>> the reactor before any work is performed. Thus if the parent does the
>>> checkout there is no way for all the child modules to know the parent
>>> checkout exists in their profiles: when the profiles are initialised the
>>> parent checkout may not exist.
>>>
>>> There may be a better way to do this but it is all done in an antrun
>>> plugin. Ant has limited if-else capability in the antrun plugin as it
>>> only allows 1 <target> tag per execution. You require multiple <target>
>>> tags in the same ant build to have conditional dependencies between
>>> them, i.e. check for parent folder checkout and copy, otherwise do a svn
>>> checkout.
>>>
>>> I am going to try moving all this to a build.xml file and call that. It
>>> should allow more powerful use of ant. It also separates the ant config
>>> from the maven config.
>>>
>>> If this works the build.xml for ant to checkout the site recursively
>>> could be put into a parent.
>>>
>>> I am still unclear on why this site checkout is required for all the
>>> child modules. It is used in the maven-scm-publish-plugin but that
>>> should be used on the top level module during a release process. So a
>>> simpler fix is to not checkout the site in all the children.
>>>
>>> A simple test would be to set the poms to not copy the directory for all
>>> the child modules and do a dummy release.
>>>
>>> It's a work in progress...
>>
>> I'm lost; what's the purpose?
>
> Removing all these copies of the live site. I think I need to look at the
> code for the commons-release plugin to understand what this folder it used
> for. It seems to me that it is not used for general development.

Sure, as mentioned above, an existing but empty "site-content" and
everything works fine.

Regards,
Gilles

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

Reply via email to