Hi Bas, I decided to switch back to the list to make these helpful hints available for web search. I guess you will not mind the proof that you are just very helpful. ;-)
For those who are missing context: Bas is helping me getting git://git.debian.org/git/debian-med/qualimap.git into shape. On Tue, Nov 24, 2015 at 01:04:55PM +0100, Bas Couwenberg wrote: > On 2015-11-24 12:42, Andreas Tille wrote: > >On Tue, Nov 24, 2015 at 12:59:48AM +0100, Sebastiaan Couwenberg wrote: > >>samtools.jar is not available in the maven repository, so you'll need to > >>install it manually in d/rules like elasticsearch did for jts: > >> > >>https://sources.debian.net/src/elasticsearch/1.7.3%2Bdfsg-2/debian/rules/#L34 > >>https://sources.debian.net/src/elasticsearch/1.7.3%2Bdfsg-2/debian/maven.rules/#L10 > >> > >>miglayout.jar is likewise also not in the maven repository, but you may > >>be able to use miglayout-parent instead. > > > >I added libmiglayout-java as Build-Depends. I do not understand the hint > >to miglayout-parent. Any example? > > Maven can only use the packaged JARs if they're available in the local Maven > repository, to check if a Java package registers the JARs it builds with > Maven (using maven-repo-helper) I check the package content with apt-file, > eg.: > > $ apt-file show libmiglayout-java > libmiglayout-java: /usr/share/doc/libmiglayout-java/changelog.Debian.gz > libmiglayout-java: /usr/share/doc/libmiglayout-java/copyright > libmiglayout-java: /usr/share/java/miglayout-4.2.jar > libmiglayout-java: /usr/share/java/miglayout-core-4.2.jar > libmiglayout-java: /usr/share/java/miglayout-core.jar > libmiglayout-java: /usr/share/java/miglayout-ideutil-4.2.jar > libmiglayout-java: /usr/share/java/miglayout-ideutil.jar > libmiglayout-java: /usr/share/java/miglayout-swing-4.2.jar > libmiglayout-java: /usr/share/java/miglayout-swing.jar > libmiglayout-java: /usr/share/java/miglayout-swt-4.2.jar > libmiglayout-java: /usr/share/java/miglayout-swt.jar > libmiglayout-java: /usr/share/java/miglayout.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-core/4.2/miglayout-core-4.2.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-core/4.2/miglayout-core-4.2.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-core/debian/miglayout-core-debian.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-core/debian/miglayout-core-debian.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-ideutil/4.2/miglayout-ideutil-4.2.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-ideutil/4.2/miglayout-ideutil-4.2.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-ideutil/debian/miglayout-ideutil-debian.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-ideutil/debian/miglayout-ideutil-debian.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-parent/4.2/miglayout-parent-4.2.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-parent/debian/miglayout-parent-debian.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swing/4.2/miglayout-swing-4.2.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swing/4.2/miglayout-swing-4.2.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swing/debian/miglayout-swing-debian.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swing/debian/miglayout-swing-debian.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swt/4.2/miglayout-swt-4.2.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swt/4.2/miglayout-swt-4.2.pom > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swt/debian/miglayout-swt-debian.jar > libmiglayout-java: > /usr/share/maven-repo/com/miglayout/miglayout-swt/debian/miglayout-swt-debian.pom > > As you can see there is no entry in the maven-repo for the miglayout > artifact, only the -core, -ideutil, -swing & -swg JARs. > > The miglayout-parent artifact is the only one not matching a JAR by the same > name, so I suspect it's for miglayout.jar. > > To use miglayout-parent for the miglayout dependency you need to add the > following to maven.rules to mangle the dependency defined in pom.xml: > > com.miglayout s/miglayout/miglayout-parent/ * s/.*/debian/ * * > > Because the pom.xml has this dependency: > > <dependency> > <groupId>com.miglayout</groupId> > <artifactId>miglayout</artifactId> > <version>3.7.4</version> > </dependency> > > It will cause maven to check for > /usr/share/maven-repo/com/miglayout/miglayout/3.7.4/miglayout-3.7.4.{jar,pom}, > but that isn't provided by libmiglayout-java. You need to mangle the version > to check for > /usr/share/maven-repo/com/miglayout/miglayout/debian/miglayout-debian.{jar,pom} > at least, but that still leaves the missing artifact (miglayout vs > miglayout-parent). With the suggested entry in maven.rules, maven will check > for > /usr/share/maven-repo/com/miglayout/miglayout-parent/debian/miglayout-parent-debian.{jar,pom} > instead. Thanks for your patience in explaining. The fog becomes a bit clearer even if it has not fully settled. ;-) > If the -parent artifact doesn't provide the classes required for qualimap, > they're probably provided by miglayout-core for which you'd need this entry > in maven.rules: > > com.miglayout s/miglayout/miglayout-core/ * s/.*/debian/ * * > > >>picard.jar is in the same boat as samtools.jar, and needs to be manually > >>installed into the local maven repository. Just to prove that I did not fully understood the principle I have now: ... mvn --offline install:install-file \ -Dmaven.repo.local=/build/qualimap-2.1.3+dfsg/debian/maven-repo \ -Dfile=/usr/share/java/sam.jar \ -DgroupId=net/sf \ -DartifactId=samtools \ -Dversion=fake \ -Dpackaging=jar [INFO] NOTE: Maven is executing in offline mode. Any artifacts not already in your local repository will be inaccessible. [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'install'. [INFO] ------------------------------------------------------------------------ [INFO] Building qualimap [INFO] task-segment: [install:install-file] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] [install:install-file {execution: default-cli}] [INFO] pom.xml not found in sam.jar [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] The artifact information is incomplete or not valid: [0] 'groupId' with value 'net/sf' does not match a valid id pattern. ... I'm afraid that it might be due to the fact that in sam.jar two directories (or should I say groupIds?) reside next to each other. I might have choosen the wrong one or any other thing was wrong. > This just shows that you also need to build depend on > libmaven-install-plugin-java, because it wasn't found in the local maven > repository used for the packaged JARs. Damn, this was a simple one which I should have found myself ... > >is not specifically connected to the maven override rules. > > > >I'm afraid I keep on doing things terribly wrong. :-( > > You'll get the hang of it eventually :-) I do not give up the hope. ;-) Thanks a lot for your private support Andreas. -- http://fam-tille.de

