Update ABCL-ASDF contrib to 0.4.1.

Document functions a bit better.  Include an example that can be used
without reference to ASDF.
parent 134cf26b
ABCL-ASDF
=========
To use:
CL-USER> (require 'abcl-contrib)
CL-USER> (require 'abcl-asdf)
ABCL specific contributions to ASDF system definition mainly concerned
with finding JVM artifiacts such as jar archives to be loaded.
with finding JVM artifacts such as jar archives to be dynamically loaded.
Examples
--------
......@@ -22,50 +24,66 @@ Examples
API
---
We define out API as consisting of the following ASDF classes:
We define an API as consisting of the following ASDF classes:
JAR-DIRECTORY, JAR-FILE, and CLASS-FILE-DIRECTORY for JVM artifacts
that have a currently valid pathname representation
mvn
And the MVN and IRI classes descend from ASDF-COMPONENT, but do not
directly have a filesystem location.
For use outside of ASDF, we currently define one method,
RESOLVE-DEPENDENCIES which locates, downloads, caches, and then loads
into the currently executing JVM process all recursive dependencies
annotated in the Maven pom.xml graph.
Example 2
---------
iri
Bypassing ASDF, one can directly issue requests for the Maven
artifacts to be downloaded
CL-USER> (abcl-asdf:resolve-dependencies "com.google.gwt" "gwt-user")
WARNING: Using LATEST for unspecified version.
"/Users/evenson/.m2/repository/com/google/gwt/gwt-user/2.4.0-rc1/gwt-user-2.4.0-rc1.jar:/Users/evenson/.m2/repository/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar:/Users/evenson/.m2/repository/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar"
Notice that all recursive dependencies have been located and installed
as well.
Example 2
Example 3
---------
For a filesystem of jar archives:
./lib/ext/flora2-reasoner/XSBFlora.jar
./lib/ext/iris-reasoner/iris/iris-0.58.jar
./lib/ext/iris-reasoner/jgrapht/jgrapht-jdk1.5-0.7.1.jar
./lib/ext/log4j/log4j-1.2.14.jar
./lib/ext/mandrax-reasoner/commons-collections-2.1.jar
./lib/ext/mandrax-reasoner/jdom-b10.jar
./lib/ext/mandrax-reasoner/log4j-1.2.8.jar
./lib/ext/mandrax-reasoner/mandarax-3.4.jar
./lib/ext/mins-reasoner/mins-v0_3.jar
./lib/ext/pellet-reasoner/aterm/1.6/aterm-java-1.6.jar
./lib/ext/pellet-reasoner/commons-logging/1.1/commons-logging-1.1.jar
./lib/ext/pellet-reasoner/kaon/1.2.9/rdfapi.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/abstractparser.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/io.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/rdfparser.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/validation.jar
./lib/ext/pellet-reasoner/owl-api/owl-api-econn/2006-04-27/api.jar
./lib/ext/pellet-reasoner/owl-api/owl-api-econn/2006-04-27/impl.jar
./lib/ext/pellet-reasoner/pellet/pellet.jar
./lib/ext/pellet-reasoner/relaxng/1.0/relaxngDatatype.jar
./lib/ext/pellet-reasoner/xsdlib/xsdlib.jar
./lib/ext/wsmo/WSML-grammar-20081202.jar
./lib/ext/wsmo/wsmo-api-0.6.2.jar
./lib/ext/wsmo/wsmo4j-0.6.2.jar
./lib/ext/xsb-system/interprolog.jar
./lib/ext/flora2-reasoner/XSBFlora.jar
./lib/ext/iris-reasoner/iris/iris-0.58.jar
./lib/ext/iris-reasoner/jgrapht/jgrapht-jdk1.5-0.7.1.jar
./lib/ext/log4j/log4j-1.2.14.jar
./lib/ext/mandrax-reasoner/commons-collections-2.1.jar
./lib/ext/mandrax-reasoner/jdom-b10.jar
./lib/ext/mandrax-reasoner/log4j-1.2.8.jar
./lib/ext/mandrax-reasoner/mandarax-3.4.jar
./lib/ext/mins-reasoner/mins-v0_3.jar
./lib/ext/pellet-reasoner/aterm/1.6/aterm-java-1.6.jar
./lib/ext/pellet-reasoner/commons-logging/1.1/commons-logging-1.1.jar
./lib/ext/pellet-reasoner/kaon/1.2.9/rdfapi.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/abstractparser.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/io.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/rdfparser.jar
./lib/ext/pellet-reasoner/owl-api/1.4.3/validation.jar
./lib/ext/pellet-reasoner/owl-api/owl-api-econn/2006-04-27/api.jar
./lib/ext/pellet-reasoner/owl-api/owl-api-econn/2006-04-27/impl.jar
./lib/ext/pellet-reasoner/pellet/pellet.jar
./lib/ext/pellet-reasoner/relaxng/1.0/relaxngDatatype.jar
./lib/ext/pellet-reasoner/xsdlib/xsdlib.jar
./lib/ext/wsmo/WSML-grammar-20081202.jar
./lib/ext/wsmo/wsmo-api-0.6.2.jar
./lib/ext/wsmo/wsmo4j-0.6.2.jar
./lib/ext/xsb-system/interprolog.jar
The following ASDF defintion loads enough JVM artifacts to use the
IRIS reasoner:
[IRIS reasoner][1]:
(defsystem :wsml2reasoner-jars
:version "0.6.4" ;; last sync with SVN
......@@ -87,3 +105,18 @@ IRIS reasoner:
(:module log4j-libs
:pathname "lib/ext/log4j/" :components
((:jar-file "log4j-1.2.14")))))
[1]: http://www.iris-reasoner.org/
Problems
-------
0.4.1 2011-09-06
o locating the proper Maven3 libraries could work in more places
o untested under Windows
o more information should be optionally available when downloading
as this process can potentially take a long time.
......@@ -3,7 +3,7 @@
(defsystem :abcl-asdf
:author "Mark Evenson"
:version "0.4.0"
:version "0.4.1"
:depends-on (jss)
:components
((:module packages :pathname ""
......
......@@ -52,12 +52,16 @@
(in-package #:abcl-asdf)
(defun satisfy (mvn-component)
"Resolve all runtime dependencies of MVN-COMPONENT.
Returns a string in JVM CLASSPATH format as entries delimited by classpath separator string."
(with-slots (asdf::group-id asdf::artifact-id asdf::version) mvn-component
(resolve-dependencies asdf::group-id asdf::artifact-id asdf::version)))
(defun as-classpath (classpath)
"For a given MVN entry, return a list of loadable archives
suitable for addition to the classpath."
"Break apart the JVM CLASSPATH string into a list of its consituents."
;;; XXX Maybe doesn't work under Windows?
(split-string classpath ":"))
(defun split-string (string split-char)
......
......@@ -132,7 +132,18 @@ Test:
session
(#"newLocalRepositoryManager" repository-system local-repository))))
(defun resolve-artifact (group-id artifact-id version)
(defun resolve-artifact (group-id artifact-id &optional (version "LATEST" versionp))
"Dynamically resolve Maven dependencies for item with GROUP-ID and ARTIFACT-ID at VERSION.
Declared dependencies are not attempted to be located.
If unspecified, the string \"LATEST\" will be used for the VERSION.
Returns a string containing the necessary jvm classpath entries packed
in Java CLASSPATH representation."
(unless versionp
(warn "Using LATEST for unspecified version."))
(let* ((system
(repository-system))
(session
......@@ -150,8 +161,18 @@ Test:
(#"addRepository" artifact-request repository)
(#"resolveArtifact" system session artifact-request)))
(defun resolve-dependencies (group-id artifact-id version)
(defun resolve-dependencies (group-id artifact-id &optional (version "LATEST" versionp))
"Dynamically resolve Maven dependencies for item with GROUP-ID and ARTIFACT-ID at VERSION.
All recursive dependencies will be visited before resolution is successful.
If unspecified, the string \"LATEST\" will be used for the VERSION.
Returns a string containing the necessary jvm classpath entries packed
in Java CLASSPATH representation."
(unless *init* (init))
(unless versionp
(warn "Using LATEST for unspecified version."))
(let* ((system
(repository-system))
(session
......
(defpackage #:abcl-asdf
(:use :cl)
(:export
;;; Public API
#:resolve-dependencies
;;; "Internal" API
#:satisfy
#:as-classpath
#:resolve-artifact
#:resolve-dependencies
#:add-directory-jars-to-class-path
#:need-to-add-directory-jar?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment