1(in-package :asdf) 2 3 ;; dependencies: a list of maven artifacts. color or slash separated 4 ;; components groupid:artifactid:versionid 5 6 ;; managed-dependencies: a list of maven artifacts. If an dependency 7 ;; with same groupid and artifactid are encountered, the version 8 ;; specified here overrides. 9 10 ;; exclusions: a list of partial maven artifacts 11 ;; groupid:artifactid. Dependencies with same groupid and artifactid are 12 ;; exluded 13 14(defclass mvn-module (component) 15 ((depends :initarg :dependencies :initform nil :accessor mvn-module-depends) 16 (excludes :initarg :exclusions :initform nil :accessor mvn-module-excludes) 17 (managed :initarg :managed-dependencies :initform nil :accessor mvn-module-managed))) 18 19(defmethod component-children ((c mvn-module)) 20 nil) 21 22;;; ASDF problems: method is deprecated. How do we define MVN-MODULE, 23;;; a subclass of ASDF:COMPONENT, which has no corresponding pathname? 24(defmethod source-file-type ((c mvn-module) (system parent-component)) :directory) 25 26(defmethod perform ((op compile-op) (c mvn-module))) 27 28(defmethod perform ((op prepare-op) (c mvn-module))) 29 30(defmethod perform ((operation load-op) (c mvn-module)) 31 (loop for path in (abcl-asdf:resolve-multiple-maven-dependencies 32 (mvn-module-depends c) (mvn-module-managed c) (mvn-module-excludes c)) 33 do 34 (unless (member path abcl-asdf::*added-to-classpath* :test 'equalp) 35 (jss::add-to-classpath path)))) 36 37