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]

Reply via email to