Request for comments:
How should I go about designing a NullSoft Installer plugin so that it works
well with the assembly paradigm?
The assembly plugin seems to have been designed to operate in a stand-alone
fashion, firing off the project's package build, rather than cooperate
within the existing lifecycle (@execute package declaration)
This design choice confuses me a little as i would have thought that an
'assembled' project should just be considered another type of 'packaging'
and should therefore be invoked by the normal project build plugin setup,
ie.:-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions><execution><phase>package</phase></execution></executions>
<configuration>...</configuration>
</plugin>
As is detailed in MNG-1311 the above will result in an endless loop as the
assembly Mojo's are not designed to be launched from another lifecycle
phase.
I guess the thinking was that assembly was something that you'd do rarely
and would only be invoked via '#mvn assembly:assembly' explicit invocation
and the resulting 'assembly-packaged' distribution artifact
(.zip/gzip/bzip), would not be consumed by, or of use to, any other build
lifecycle component.
I think that this assumption is a bit restrictive considering the fact that
the assembly plugin performs the very useful job of preparing a distribution
area and is exactly the kind of thing a thirdparty installer will need done
before it will generate its custom distribution archive (say an installer
exe).
Which leads me to the design questions regarding NSIS plugin.
Why should the assembly zip or tar be any different to the NSIS-exe archive?
Semantically they are the same, a package that is interpreted by an external
tool (winzip/OS)
I see the steps for building a distribution to be:
build required distribution artifacts
prepare a distribution area (layout the directory structure, copy in deps
etc)
compile the distriubution into the target distribution media (zip, bzip,
NSIS-exe)
If we are to keep the existing assmbly:assembly package forking
functionality should the NSIS just be a complex archiver thats configured as
part of the assemby plugin?
Or should assembly be made so its a lifecycle cooperating Mojo and one
builds a distribution assemby by simply running the package phase (mvn
package)?
Or should a NSIS generated exe be a project packaging type in its own right,
and a separate project be used to assemble and generate the resulting exe
(in which case the assembly:directory functionality would still be required
to layout the NSIS 'source' directory to be compiled into the exe but that
can be easily done via new assembly facade mojo (MNG-1462 has done this)).
So...
Whats the thinking behind the assembly plugin and its @execution package
design?
And how shall we integrate it with other distribution packagers?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]