<div dir="ltr">Here's a (perhaps hacky) fix for the moment. <div><a href="https://github.com/alanruttenberg/abcl/commit/fab11a1b35ff143ed28d4c2f08f4fcff0d304c62">https://github.com/alanruttenberg/abcl/commit/fab11a1b35ff143ed28d4c2f08f4fcff0d304c62</a><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Lets me write:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra"><font face="monospace, monospace">(asdf:defsystem owl2libs-mvn2</font></div><div class="gmail_extra"><font face="monospace, monospace">  :description "Non-Lisp dependencies necessary for OWL to function."</font></div><div class="gmail_extra"><font face="monospace, monospace">  :components</font></div><div class="gmail_extra"><font face="monospace, monospace">  ((:mvn-module "maven"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">              </span>:dependencies </font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">           </span>("net.sourceforge.owlapi/pellet-cli-ignazio1977/2.4.0-ignazio1977"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">              </span> Â "org.semanticweb.elk/elk-reasoner/0.4.3"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">             </span> Â "net.sourceforge.owlapi/org.semanticweb.hermit/1.3.8.413"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">            </span> Â "net.sourceforge.owlapi/owlapi-distribution/4.2.6"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">           </span> Â "net.sourceforge.owlapi/owlexplanation/2.0.0"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">                </span> Â "de.sciss/prefuse-core/1.0.1"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">                </span> Â "de.sciss/prefuse-demos/1.0.1")</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">              </span>:managed-dependencies</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">             </span>("org.slf4j/slf4j-api/1.7.21"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">           </span> "net.sourceforge.owlapi:owlapi-distribution:4.2.6")</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">            </span>:exclusions</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">               </span>("net.sourceforge.owlapi:owlapi-osgidistribution"</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">               </span> "edu.stanford.protege:org.protege.editor.owl"))</font></div><div class="gmail_extra"><font face="monospace, monospace">  Â (:module rest :pathname "lib" :components</font></div><div class="gmail_extra"><font face="monospace, monospace">  Â  Â  Â  Â  Â  ((:jar-file "factplusplus-1.6.4-SNAPSHOT")</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">  </span> Â  Â  (:jar-file "LSWTreeview-1.0.0")</font></div><div class="gmail_extra"><font face="monospace, monospace"><span class="gmail-Apple-tab-span" style="white-space:pre">  </span> Â  Â  (:jar-file "QuotedStringAnnotationVisitor-1.0.0")))</font></div><div class="gmail_extra"><font face="monospace, monospace">  Â (:module lib :pathname "lib"</font></div><div class="gmail_extra"><font face="monospace, monospace">  Â  :depends-on ("maven" rest))))</font></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">It doesn't address what to do about potentially conflicting maven artifacts loaded by distinct asdf systems.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 7, 2017 at 11:50 AM, Alan Ruttenberg <span dir="ltr"><<a href="mailto:alanruttenberg@gmail.com" target="_blank">alanruttenberg@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I'm using :mvn ASDF components and ran into a problem with having multiple versions of the same library. The issue boils down to the fact that ABCL currently processes dependencies for :mvn components one at a time, which doesn't take into account mutual dependencies. Attached is a function resolve-multiple-<wbr>maven-dependencies, which takes a set of maven components and computes the dependencies. As an example, here is a comparison of treating the dependencies individually vs at once.<div><br></div><div><div>(length (mapcan 'resolve-multiple-maven-<wbr>dependencies</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">          </span> '(("net.sourceforge.owlapi:<wbr>owlapi-distribution:4.2.6")</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">               </span> Â  ("net.sourceforge.owlapi:org.<wbr>semanticweb.hermit:1.3.8.413")</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">           </span> Â  ("org.semanticweb.elk/elk-<wbr>reasoner/0.4.3")</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">            </span> Â  ("net.sourceforge.owlapi/<wbr>pellet-cli-ignazio1977/2.4.0-<wbr>ignazio1977")</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">                </span> Â  ("net.sourceforge.owlapi/<wbr>owlexplanation/2.0.0"))))</div><div>-> 210</div></div><div><br></div><div><div>(length (mapcan 'resolve-multiple-maven-<wbr>dependencies</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">          </span> '(("net.sourceforge.owlapi:<wbr>owlapi-distribution:4.2.6"</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">                </span> Â  Â "net.sourceforge.owlapi:org.<wbr>semanticweb.hermit:1.3.8.413"</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">           </span> Â  Â "org.semanticweb.elk/elk-<wbr>reasoner/0.4.3"</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">            </span> Â  Â "net.sourceforge.owlapi/<wbr>pellet-cli-ignazio1977/2.4.0-<wbr>ignazio1977"</div><div><span class="gmail-m_-717849282999983767gmail-Apple-tab-span" style="white-space:pre-wrap">                </span> Â  Â "net.sourceforge.owlapi/<wbr>owlexplanation/2.0.0"))))</div></div><div><br></div><div>-> 90</div><div><br></div><div>In particular there are several versions of owlapi-distribution that are put on the classpath. Which one is actually used is not easily predictable. In my case even though I specified version 4.2.6 in my system definition, 4.1.3 was actually used. Â </div><div><br></div><div>The attached code also has features not yet supported by the :mvn syntax that are really needed: The ability to override versions of a particular dependency that a downstream dependency specifies, and the ability to exclude certain artifacts altogether.</div><div><br></div><div>Mark has suggested that the maven resolution could be moved to the ASDF planning stage, which sounds like a good idea. However there is still an issue regarding maven dependencies in different loaded ASDF systems. One idea is to remember dependencies Â across systems and then uses them as constraints on subsequent maven resolutions. </div><div><br></div><div>Comments and ideas would be appreciated.</div><span class="gmail-HOEnZb"><font color="#888888"><div><br></div><div>Alan</div></font></span></div>
</blockquote></div><br></div></div>