[Debian-med-packaging] Problems understanding maven rules to package qualimap

Emmanuel Bourg ebourg at apache.org
Mon Nov 16 16:49:58 UTC 2015


Le 16/11/2015 17:22, Andreas Tille a écrit :

> While I know that these classes are part of BioJava I fail to understand
> how to craft these magical regexps maven wants me to provide.

biojava probably doesn't install the Maven artifacts , that's why
mh_make can't find bioinfo-ngs. If it does install the artifacts but
under a different name, then you need a replacement rule. If the Maven
coordinates of the jar equivalent to bioinfo-ngs is foo:bar, then you
need this rule:

    s/org.bioinfo/foo/ s/bioinfo-ngs/bar/ * s/.*/debian/ * *


> In pom.xml: This plugin cannot be found in the Debian Maven repository. Ignore this plugin?  org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.7
> [y/N] > 

Install libmaven-dependency-plugin-java and try again.


> In pom.xml: This dependency cannot be found in the Debian Maven repository. Ignore this dependency?  net.sf.picard:picard:jar:1.70

The Maven artifacts for net.sf.picard:picard are not installed by
picard-tools. You should extract a libpicard-java package from the
binary package picard-tools and add the artifacts there.


> but what the hell are groupID and artifactId.  This looks like pure magic to me.

Let's start with some Maven basics then :)

Libraries in a Maven repository are uniquely identified by a group ID,
an artifact ID and a version (plus other subtleties, but let's keep
things simple).

The group identifier often relates to the author of the library, for
example the Apache Commons developers use the "org.apache.commons" groupId.

The artifact identifier names the library for this group. For Apache
commons it's commons-collections, commons-io, commons-lang, etc.

Maven expect the libraries to live in a repository, in Debian we use
/usr/share/maven-repo. For every library there should be two files (the
Maven artifacts) :

 /usr/share/maven-repo/groupId/artifactId/version/artifactId-version.jar
 /usr/share/maven-repo/groupId/artifactId/version/artifactId-version.pom

If these files do not exist, Maven can't find them (that's what happens
with picard-tools). maven-debian-helper install them automatically. For
Ant and Gradle based packages you have to use maven-repo-helper to get
them installed.

Sometimes the coordinates (groupId+artifactId) of a library change, if
your project uses the old coordinates and the Debian package uses the
new one you have to replace them. That's where the rules comes into
play. A rule is just a space separated list of regular expressions to
replace the groupId, the artifactId, the type (rarely changed), the
version (often s/.*/debian/) and the classifier (rare).

I hope it's clearer now :)

Emmanuel Bourg




More information about the Debian-med-packaging mailing list