[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: maven depends question

Hello Boris,

There are two distinct sets of constraints here:

- the build constraints, which you have manually created,

- the runtime constraints, which are created during the build and
injected as part of the ${maven:Depends} substitution variable.

An easy solution would be to replace in your control file
${maven:Depends} with the exact list of dependencies and their
constraints that you wish to have for your package.

Another solution, more useful in my opinion, is to collaborate with the
maintainers of the dependent packages. But first, you need to understand
how ${maven:Depends} is constructed:

${maven:Depends} is build from the information provided by the POM files
in your project. A list of external dependencies and their versions is
constructed, then those dependencies are matched with the information
stored in /usr/share/maven-repo and transformed into a list of packages.
When a package signals that its Debian version (the major part of the
version) matches its Maven version, then a constraint is added.

For example, liblog4j-java has the Debian version 1.2.16-3, and in its
POM the Maven version is 1.2.16. If you look at the packaging for
liblog4j-java, then you will see in debian/liblog4j-java.poms this line:

pom.xml --has-package-version --java-lib --usj-name=log4j-1.2

Notice --has-package-version. This option tells maven-repo-helper that
the Maven version is linked to the Debian version of the containing package.

So to get back to your problem, you need to ask all dependent project
where you wish to see a version constraint to add the
--has-package-version option in their .poms file and to release a new
version of their package.


On 08/28/2012 06:38 AM, Boris Ribalkin wrote:
> Hi,
> I have maven based package which depends on other packages with version
> restriction (libsqljet-java (>= 1.1.1)):
> Build-Depends-Indep: libmaven-replacer-plugin-java, libcommons-cli-java,
> libcommons-codec-java,  
>  libcommons-io-java, libcommons-lang-java, libgoogle-api-client-java,
> libjetty-java,  
>  libjson-java, liblog4j1.2-java (>= 1.2.16), libqtjambi-snapshot,
> *libsqljet-java (>= 1.1.1)*,
>  libmaven-assembly-plugin-java
> but when I install the package only log4j version restriction is left:
> sudo apt-cache show libsyncloud-core-java
> Package: libsyncloud-core-java
> Source: syncloud-core
> Priority: optional
> Section: java
> Installed-Size: 423
> Maintainer: Debian Java Maintainers
> <pkg-java-maintainers@lists.alioth.debian.org
> <mailto:pkg-java-maintainers@lists.alioth.debian.org>>
> Architecture: all
> Version: 0.1-7~1~precise1
> Depends: libcommons-codec-java, libcommons-io-java,
> libcommons-lang-java, libjetty-java, libjson-java, liblog4j1.2-java (>=
> 1.2.16), *libsqljet-java*, libqtjambi-snapshot
> Could you help me?
> Pacakge:
> bazaar.launchpad.net/~ribalkin/syncloud/syncloud-core-debian/view/ahead:/debian/control
> <http://bazaar.launchpad.net/~ribalkin/syncloud/syncloud-core-debian/view/ahead:/debian/control>
> Thanks.
> --
> Boris Rybalkin
> ribalkin@gmail.com <mailto:ribalkin@gmail.com>

Reply to: