[fedora-java] Why no Class-Path manifest attribute?

Mikolaj Izdebski mizdebsk at redhat.com
Thu Feb 6 12:04:00 UTC 2014


On 02/06/2014 12:54 PM, Florian Weimer wrote:
> On 02/06/2014 12:34 PM, Aleksandar Kurtakov wrote:
> 
>>> The spec file is here:
>>>
>>> <https://github.com/victims/victims-client-java/blob/master/victims-client-java.spec>
>>>
>>>
>>> As you can see, I use the usual Maven packaging framework.
>>
>> Bundling (and this is what your example is) is entirely forbidden -
>> not just for Java but for everything.
>>
>> https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
> 
> Even though Maven calls this dependency type "bundle", it is not
> bundling in the sense of the quoted page.  The *sources* do not contain
> copies of the library dependencies, neither in source form nor as
> compiled classes.  The guidelines cited above deal with what is
> contained in source RPMsā€”it does not even mention static linking.
> 
>> Do we need to add special link to that page in java guidelines? I
> don't think that adding links to all the generic guidelines would make
> the java one better it would just make it bigger and harder to digest.
> 
> I see two problems: The guidelines do not explicitly deal with copying
> class files between JARs (jarjar would be another option in this space).
>  Contrast this with static linking, which is covered here:
> 
> <https://fedoraproject.org/wiki/Packaging:Guidelines#Statically_Linking_Executables>
> 
> 
> The other aspect is that the maven-local tools silently create
> applications which are not complying with this (implicit so far) policy.

maven-local builds packages using upstream POMs.  If they are using
techniques inappropriate for Fedora (like maven-jajjar-plugin,
maven-shade-plugin, maven-assembly-plugin) then its packager
responsibility to modify POMs in %prep so that they conform to our
policy and standards.  There are even specialised RPM macros to help
with that (for example %pom_remove_plugin, see man pom_remove_plugin).

Besides that maven-local has support for blacklists, for example you can
globally exclude maven-jajjar-plugin from all builds.  That's only
matter of agreeing on list of excluded plugins and adding appropriate
config entry.

-- 
Mikolaj Izdebski
IRC: mizdebsk


More information about the java-devel mailing list