Hi Alix,

Why not stick with the old version of maven-assembly-plugin until you have
to refactor your build more thoroughly?

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden


On Tue, Mar 14, 2017 at 1:06 PM, Alix Lourme <alix.lou...@gmail.com> wrote:

> Hello,
>
> Even if using aggregator is not a good practice in this case ... if there
> is a technical possibility to force the aggregation for a goal by pom
> configuration, I'll take it.
> Because after continuing to dig, I am in a dead-end ^^
>
> Many thanks.
> Best regards
>
> 2017-03-14 10:45 GMT+01:00 Alix Lourme <alix.lou...@gmail.com>:
>
> > Hi Karl Heinz,
> >
> > Thanks for your answer (and sorry for mine late).
> >
> > the best thing to create a separate module in your build with packaging
> >> pom and only put the maven-assembly-plugin in it and bind it to the life
> >> cycle
> >> This is simply a good way of following single responsibility principle.
> >>
> > try to get it as simple as possible which will result in just: mvn clean
> >> package.
> >>
> >
> > I'm fully agree with you (there is no debate), and this is an objective
> to
> > achieve in the future ...
> >
> > But ... when you have many projects (multiple hundred) using this bad
> way (*mvn
> > install assembly:attached*):
> > * Upgrading a parent (company pom) & changing a 'goal' is simple
> > * Reviewing completely the archive generation process (new module,
> > descriptor content) is a little bit more complicated
> >
> > So I hoped for a consensus to accompagn the transition
> > (maven-assembly-plugin v3.0.0) without project structure change :-).
> > I will affine pro & cons and ruling on the possibilities.
> >
> >
> > What I don't understand is your reference to maven-release-plugin and
> >> maven-invoker-plugin ?
> >>
> >
> > When you are using the previous (bad) way on maven-release-plugin, you
> > could define goals
> > <https://maven.apache.org/maven-release/maven-release-
> plugin/perform-mojo.html#goals>
> > with: *-Dgoals="install assembly:attached".* The result is "one Maven
> > command" like:
> > ------------------
> >
> > [DEBUG] Executing: cmd.exe /X /C ""C:\[...]\mvn.bat" -B -X -D
> > maven.repo.local=C:\[...]\.m2\repository -f myApp -s
> > C:\[...]\AppData\Local\Temp\release-settingsXXX.xml -D
> > performRelease=true -P someProfiles install assembly:attached"
> > ------------------
> > This reference to maven-release-plugin or invoker was just an argument
> for
> > a "only one Maven command" need ; avoiding ideas like: "*Just do two step
> > command, 'mvn install' and after 'mvn assembly:attached*'"
> >
> > Thanks
> > Best regards
> >
> > 2017-03-11 16:31 GMT+01:00 Karl Heinz Marbaise <khmarba...@gmx.de>:
> >
> >> Hi,
> >>
> >> If you like to produce a package (zip/tar/whatever kind of
> >> archive/bundle) which contains some modules/artifacts etc. from your
> multi
> >> module build it is the best thing to create a separate module in your
> build
> >> with packaging pom and only put the maven-assembly-plugin in it and
> bind it
> >> to the life cycle. This project contains all the needed dependencies in
> >> your assembly project pom...which should be packaged into your resulting
> >> archive (zip/tar/whatever).
> >>
> >> The assembly descriptor contains the appropriate
> >> dependencySets/moduleSets/sources etc. entries as needed.
> >>
> >> This makes it absolutely sure that using a simple:
> >>
> >> mvn clean package
> >>
> >> or
> >>
> >> mvn install
> >>
> >> everything is correctly packaged into the resulting bundle you would
> like
> >> to build.
> >>
> >> This is simply a good way of following single responsibility principle.
> >>
> >>
> >> This produces each time a correct and the same result in contradiction
> to
> >> your supplemental goal calling from command line (you just simply miss
> it?).
> >>
> >> Apart from that using fileSets is usually not the correct way cause it
> >> relies on the content which is on the file system which might sometimes
> not
> >> what you really like if you don't do:
> >>
> >> mvn clean
> >>
> >> before.
> >>
> >> If you do things like this:
> >>
> >> mvn install
> >> ...Doing something here...
> >> mvn install assembly:attached
> >>
> >> The resulting bundle which has been produced by using assembly:attached
> >> could contain artifacts which are not part of the build..
> >>
> >> This is also an problem in reproducibility of builds.
> >>
> >> From my point of view a single command like this:
> >>
> >>
> >> mvn clean package
> >>
> >> is easier and more in the paradigm of Maven. Use conventions...
> >>
> >> Adding a supplemental call to a plugin goal does not make it easier..
> >>
> >> I will rely on just the build as it...without using supplemental goals
> or
> >> using some properties needed to be defined on the command line which I
> >> often see in other projects where you need to call some goals of plugins
> >> before or after things. I will alway try to get it as simple as possible
> >> which will result in just: mvn clean package.
> >>
> >> What I don't understand is your reference to maven-release-plugin and
> >> maven-invoker-plugin ?
> >>
> >>
> >> Kind regards
> >> Karl Heinz Marbaise
> >>
> >>
> >> On 11/03/17 15:56, Alix Lourme wrote:
> >>
> >>> Hello,
> >>>
> >>> Since maven-assembly-plugin v3.3.0, the *attached* goal has been
> removed
> >>> (
> >>> MASSEMBLY-704 <https://issues.apache.org/jira/browse/MASSEMBLY-704>).
> >>>
> >>> This *attached* goal was an aggregator (v2.6 source
> >>> <https://svn.apache.org/repos/asf/maven/plugins/tags/maven-a
> >>> ssembly-plugin-2.6/src/main/java/org/apache/maven/plugin/ass
> >>> embly/mojos/AttachedAssemblyMojo.java>)
> >>> but not the *single* goal (v3.0.0 source
> >>> <https://svn.apache.org/repos/asf/maven/plugins/tags/maven-a
> >>> ssembly-plugin-3.0.0/src/main/java/org/apache/maven/plugins/
> >>> assembly/mojos/SingleAssemblyMojo.java>
> >>> ).
> >>>
> >>> Even *attached* goal "*leads to non-standard builds*", it was very
> useful
> >>> on a multi modules project to generate a bundle with some modules items
> >>> (artifacts, anything produced on *package* phase, ...) when the
> >>> descriptor
> >>> contains only *fileSets* definitions, using only one Maven command
> >>> (e.g.: "*mvn
> >>> install assembly:attached*") ; because assembly executed after
> >>> package/install/deploy phase in each modules.
> >>>
> >>> With module binaries
> >>> <https://maven.apache.org/plugins/maven-assembly-plugin/faq.
> >>> html#module-binaries>
> >>> configuration, this job could be done ; but forces reviewing all
> assembly
> >>> descriptors (usage of *moduleSet* in addition of *fileSet*), or using
> two
> >>> steps Maven command.
> >>> If you consider that using one command is a prerequisite (
> >>> *maven-release-plugin* plugin usage or some jobs with *maven-invoker*),
> >>> the
> >>> v2.x -> v3.x *maven-assembly-plugin* migration could be a little
> tricky.
> >>>
> >>> => Is there a way to execute single goal as an aggregator, via pom
> >>> configuration (inheritable from a super/company parent pom) ? With
> >>> that the *migration
> >>> *could be just to replace *attached* by *single*.
> >>>
> >>> Many thanks in advance for tips or idea
> >>> Best regards
> >>>
> >>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> >> For additional commands, e-mail: users-h...@maven.apache.org
> >>
> >>
> >
> >
> > --
> > Alix Lourme
> >
>
>
>
> --
> Alix Lourme
>

Reply via email to