Re: preferred location for jars vs. symlinks
Hello Tony,
This package is build with Maven, and it uses the <package>.poms file to
control the installation of the jars in the Maven repository.
Here, it's missing an option to install the jar in /usr/share/java and
create only links for /usr/share/maven-repo
So it should be:
debian/libtiger-types-java.pom:
pom.xml --java-lib
I have sent a patch to the maintainer of the package.
In general, I would recommand people to use the mh_make utility when
creating new packages using Maven as the build system, as there are
quite a few tricky options which are easily forgotten, plus mh_make is
getting really good nowadays (I would do the full packaging for such a
simple library in less than 5 minutes thanks to mh_make).
Ludovic
On 08/06/2011 06:42, tony mancill wrote:
> On 06/07/2011 03:36 PM, Ludovic Claude wrote:
>>
>> On 06/06/2011 15:20, Vincent Fourmond wrote:
>>>
>>> On Mon, Jun 6, 2011 at 3:13 PM, Onkar Shinde <onkarshinde@gmail.com> wrote:
>>>> On Mon, Jun 6, 2011 at 12:26 AM, tony mancill <tmancill@debian.org> wrote:
>>>>> I've noticed that some of the more recent CDBS packages are installing jars
>>>>> under /usr/share/maven-repo/$class-hierarchy/$upstream-version/$library.jar, and
>>>>> then symlinks in /usr/share/java/ over to ../maven-repo/...
>>>>>
>>>>> By contrast, javahelper packages will install the jar under /usr/share/java/,
>>>>> which is what I think was intended in section 2.3 of Java Policy [0].
>>>>>
>>>>> Is this an area where we should clarify the policy? It seems like the actual
>>>>> jars should consistently be in one location or another, although maybe there's a
>>>>> good reason to do it the other way around when we're dealing with the maven
>>>>> repo. Thoughts?
>>>>
>>>> In my opinion the jars should be installed to /usr/share/java always.
>>>> In case of dealing with local maven repo the symlinks should be
>>>> created in /usr/share/maven-repo/.
>>>
>>> I agree with that. Placing a JAR file in /usr/share/java means: this
>>> library is for public use. Not doing so implies that the library is
>>> private. I don't think that maven-built libraries are systematically
>>> private, are they ?
>>>
>>
>> @Vincent: Jars built with Maven are always installed into the
>> /usr/share/maven-repo repository. If you choose to make the jar public,
>> use mh_installjar with the -l or --java-lib option, the jar will be
>> installed in /usr/share/java and symlinks created in /usr/share/maven-repo.
>>
>> @Onkar: can you be more specific and provide an example of such package?
>>
>> Ludovic
>
> Thanks for the explanation for why it's happening.
>
> tiger-types is an example of a simple package very recently built on unstable
> that places the JARs in /usr/share/maven-repo and symlinks in /usr/share/java.
>
> The contents of debian/rules are merely:
>
> include /usr/share/cdbs/1/rules/debhelper.mk
> include /usr/share/cdbs/1/class/maven.mk
>
> JAVA_HOME := /usr/lib/jvm/default-java
>
> In cases like this, it would be convenient mh_installjar was required for
> private libraries instead of the other way around - that is, by default it would
> assume that the library is public.
>
> Again, I'm not sure it's all that important. The main reason for asking was
> with respect to policy. Perhaps a lintian warning when the JAR appears both in
> the maven-repo and as a symlink in /usr/share/java would be reasonable if
> changing the default behavior of mh_installjar would cause a lot of issues or
> rework?
>
> tony
>
Reply to: