Jar plugin is used more often than shade plugin.  (I dis-recommend shade since 
provenance of classes is difficult or impossible to trace.). If module version 
is required to make jar useful, then jar plugin appears more appropriate. 
Chas

> On Aug 22, 2017, at 6:10 PM, Olivier Lamy <ol...@apache.org> wrote:
> 
> +1 for shade plugin looks to be the most appropriate location to do this.
> 
>> On 23 August 2017 at 06:03, Robert Scholte <rfscho...@apache.org> wrote:
>> 
>> On Tue, 22 Aug 2017 21:23:10 +0200, Plamen Totev <
>> plamen.iv.to...@gmail.com> wrote:
>> 
>> Hi,
>>> 
>>> I've experimented with Maven and Java 9 the last weekend and actually one
>>> of the things I noticed is that currently I could not set the module
>>> version.
>>> 
>>> I do agree that the packaging should be stupid action and the module-info
>>> transformation should happen before that. But I'm not sure why the Maven
>>> Shade plug-in is the place to do that. Probably I'm missing something,
>>> would you explain a bit?
>> 
>> The maven-shade-plugin has the ability to re-package a jar and manipulate
>> any type of file, including class files. The best example is relocation,
>> where you give a set of classes a different package to prevent potential
>> class collisions when the original dependency (probably with other version)
>> is added again.
>> So this is a good match for the module-info.class adjustments.
>> 
>> 
>> 
>>> Or should these extra (basic?) features require an extra setup of a
>>> maven-plugin so all transformations are done by one plugin only.
>>> 
>>> My thoughts exactly. While it makes sense to have separate plugin for that
>>> (maybe in the future the module-info.class will contain more
>>> information?),
>>> I'm not sure it's worth to have separate plugin just for that. And if we
>>> don't have separate plugin then I think the Jar plugin is the better place
>>> because:
>>> 1. this way it's consistent with the JDK tools
>>> 2. up until Java 9 the usual place to put meta-information about the
>>> package was to place in in the META-INF directory and package it. Of
>>> course
>>> the processing
>>> 
>>> An interesting question (no matter which plugin does the transformation)
>>> is
>>> that if the module-version should be added by default? I feel a bit
>>> uncomfortable about the idea to enable it by default but on other hand
>>> the module-info is a new class so it's unlikely to break anything and it
>>> may prove tiresome to have to set the version explicitly. I mean why would
>>> you want not to have the version set? I personally think that the majority
>>> of the projects would like to have the version set.
>>> 
>>> Regards,
>>> Plamen Totev
>>> 
>>> On Tue, Aug 22, 2017 at 8:17 PM, Robert Scholte <rfscho...@apache.org>
>>> wrote:
>>> 
>>> Hi,
>>>> 
>>>> The JDK 9 jar packager comes with 2 extra options: main-class and
>>>> module-version.
>>>> The first one is used in case of an executable modular jar, the latter is
>>>> just for display/analysis to show which version of a specific module is
>>>> used.
>>>> To support these 2 values, the module-info.class must be adjusted (yes,
>>>> the bytecode!).
>>>> 
>>>> It is not that hard to support this as well with a little help from ASM,
>>>> but the question is: which plugin should do this: maven-jar-plugin or
>>>> maven-shade-plugin?
>>>> If you consider this kind of information to be part of the packaging
>>>> process, maven-jar-plugin seems to be the best fit.
>>>> However, if you consider this as a resource transformation, then
>>>> maven-shade-plugin seems better.
>>>> 
>>>> Personally I think packaging should be quite a stupid action: making a
>>>> jar
>>>> from a set of files. And it should be very reliable, since it is part of
>>>> the lifecycle of the most used packaging type. Of course you can control
>>>> this when exposed as parameters...
>>>> 
>>>> Or should these extra (basic?) features require an extra setup of a
>>>> maven-plugin so all transformations are done by one plugin only.
>>>> 
>>>> WDYT?
>>>> Robert
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>> For additional commands, e-mail: dev-h...@maven.apache.org
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>> For additional commands, e-mail: dev-h...@maven.apache.org
> 
> 
> -- 
> Olivier Lamy
> http://twitter.com/olamy | http://linkedin.com/in/olamy


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

Reply via email to