Changeset 13841
- Timestamp:
- 02/01/12 13:25:05 (10 years ago)
- Location:
- trunk/abcl/contrib/abcl-asdf
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/contrib/abcl-asdf/abcl-asdf.asd
r13808 r13841 4 4 (defsystem :abcl-asdf 5 5 :author "Mark Evenson" 6 :version "0. 5.0"6 :version "0.6.0" 7 7 :depends-on (jss) 8 8 :components -
trunk/abcl/contrib/abcl-asdf/maven-embedder.lisp
r13836 r13841 1 ;;; Use the Aether system in a default mavendistribution to download1 ;;; Use the Aether system in a default Maven3 distribution to download 2 2 ;;; and install dependencies. 3 3 ;;; 4 ;;; https://docs.sonatype.org/display/AETHER/Home 5 ;;; 4 ;;; References: 5 ;;; -- javadoc 6 ;;; http://sonatype.github.com/sonatype-aether/apidocs/overview-summary.html 7 ;;; -- incomplete, seemingly often wrong 8 ;;; https://docs.sonatype.org/display/AETHER/Home 6 9 7 10 (in-package :abcl-asdf) … … 17 20 |# 18 21 19 (defvar *mavens* '("/opt/local/bin/mvn3" "mvn3" "mvn" "mvn.bat") 22 (defparameter *maven-verbose* t 23 "Stream to send output from the Maven Aether subsystem to, or NIL to muffle output") 24 25 (defvar *mavens* '("/opt/local/bin/mvn3" "mvn3" "mvn" "mvn3.bat" "mvn.bat") 20 26 "Locations to search for the Maven executable.") 21 27 … … 26 32 (handler-case 27 33 (truename (read-line (sys::process-output 28 (sys::run-program "which" `(,mvn-path))))) 34 (sys::run-program "which" `(,mvn-path))))) ;; TODO equivalent for MSDOS 29 35 (end-of-file () nil)))) 30 36 (when mvn … … 45 51 46 52 (defun mvn-version () 53 "Return the Maven version used by the Aether connector." 47 54 (let* ((line 48 55 (read-line (sys::process-output … … 76 83 (defparameter *init* nil) 77 84 78 (defun init ( )85 (defun init (&optional &key (force nil)) 79 86 "Run the initialization strategy to bootstrap a Maven dependency node." 80 (unless *mvn-libs-directory*87 (unless (or force *mvn-libs-directory*) 81 88 (setf *mvn-libs-directory* (find-mvn-libs))) 82 89 (unless (probe-file *mvn-libs-directory*) … … 111 118 (declare (ignore wagon))))) 112 119 113 (defun repository-system ()120 (defun make-repository-system () 114 121 (unless *init* (init)) 115 122 (let ((locator … … 135 142 repository-system-class))) 136 143 137 (defun new-session (repository-system) 144 (defun make-session (repository-system) 145 "Construct a new org.sonatype.aether.RepositorySystemSession from REPOSITORY-SYSTEM" 138 146 (let ((session 139 147 (java:jnew (jss:find-java-class "MavenRepositorySystemSession"))) … … 146 154 (#"newLocalRepositoryManager" repository-system local-repository)))) 147 155 148 (defparameter *session* nil149 "Reference to the Maven RepositorySystemSession")150 151 156 (defparameter *maven-http-proxy* nil 152 157 "A string containing the URI of an http proxy for Maven to use.") 153 154 (defparameter *repository-system* nil)155 156 (defun ensure-repository-system ()157 (unless *repository-system*158 (setf *repository-system* (repository-system)))159 *repository-system*)160 158 161 159 (defun make-proxy () … … 177 175 scheme host port authentication))) 178 176 177 (defparameter *repository-system* nil 178 "The org.sonatype.aether.RepositorySystem used by the Maeven Aether connector.") 179 (defun ensure-repository-system () 180 (unless *repository-system* 181 (setf *repository-system* (make-repository-system))) 182 *repository-system*) 183 184 (defparameter *session* nil 185 "Reference to the Maven RepositorySystemSession") 179 186 (defun ensure-session () 180 187 "Ensure that the RepositorySystemSession has been created. … … 183 190 (unless *session* 184 191 (ensure-repository-system) 185 (setf *session* ( new-session *repository-system*))192 (setf *session* (make-session *repository-system*)) 186 193 (#"setRepositoryListener" *session* (make-repository-listener)) 187 194 (when *maven-http-proxy* … … 192 199 java:+null+)))) 193 200 *session*) 194 195 201 202 ;;; TODO change this to work on artifact strings like log4j:log4j:jar:1.2.16 196 203 (defun resolve-artifact (group-id artifact-id &optional (version "LATEST" versionp)) 197 204 "Directly resolve Maven dependencies for item with GROUP-ID and ARTIFACT-ID at VERSION, ignoring dependencies. … … 201 208 If unspecified, the string \"LATEST\" will be used for the VERSION. 202 209 203 Returns a string containing the necessary jvm classpath entries packed 204 in Java CLASSPATH representation." 205 210 Returns the Maven specific string for the artifact " 206 211 (unless versionp 207 212 (warn "Using LATEST for unspecified version.")) 208 (let* ((system 209 (repository-system)) 210 (session 211 (new-session system)) 212 (repository 213 (jss:new "org.sonatype.aether.repository.RemoteRepository" 214 "central" "default" "http://repo1.maven.org/maven2/")) 215 (artifact-string (format nil "~A:~A:~A" 216 group-id artifact-id version)) 213 (unless *init* (init)) 214 (let* ((artifact-string (format nil "~A:~A:~A" group-id artifact-id version)) 217 215 (artifact 218 216 (jss:new "org.sonatype.aether.util.artifact.DefaultArtifact" artifact-string)) … … 220 218 (java:jnew "org.sonatype.aether.resolution.ArtifactRequest"))) 221 219 (#"setArtifact" artifact-request artifact) 222 (#"addRepository" artifact-request repository) 223 (#"resolveArtifact" system session artifact-request))) 224 225 (defparameter *aether-remote-repository* nil) ;;; TODO 220 (#"addRepository" artifact-request (ensure-remote-repository)) 221 (#"toString" (#"resolveArtifact" (ensure-repository-system) (ensure-session) artifact-request)))) 222 223 (defun make-remote-repository (id type url) 224 (jss:new 'aether.repository.RemoteRepository id type url)) 225 226 (defparameter *maven-remote-repository* nil 227 "The remote repository used by the Maven Aether embedder.") 228 (defun ensure-remote-repository () 229 (unless *init* (init)) 230 (unless *maven-remote-repository* 231 (let ((r (make-remote-repository "central" "default" "http://repo1.maven.org/maven2/"))) 232 (when *maven-http-proxy* 233 (#"setProxy" r (make-proxy))) 234 (setf *maven-remote-repository* r))) 235 *maven-remote-repository*) 226 236 227 237 (defun resolve-dependencies (group-id artifact-id &optional (version "LATEST" versionp)) … … 237 247 (unless versionp 238 248 (warn "Using LATEST for unspecified version.")) 239 (let* ;;((system 240 ;; (repository-system)) 241 ;; (session 242 ;; (new-session system)) 243 ((artifact 249 (let* ((artifact 244 250 (java:jnew (jss:find-java-class "aether.util.artifact.DefaultArtifact") 245 251 (format nil "~A:~A:~A" … … 248 254 (java:jnew (jss:find-java-class "aether.graph.Dependency") 249 255 artifact "compile")) 250 (central251 (java:jnew (jss:find-java-class "RemoteRepository")252 "central" "default" "http://repo1.maven.org/maven2/"))253 256 (collect-request (java:jnew (jss:find-java-class "CollectRequest")))) 254 257 (#"setRoot" collect-request dependency) 255 (when *maven-http-proxy* 256 (#"setProxy" central (make-proxy))) 257 (#"addRepository" collect-request central) 258 (#"addRepository" collect-request (ensure-remote-repository)) 258 259 (let* ((node 259 260 (#"getRoot" (#"collectDependencies" (ensure-repository-system) (ensure-session) collect-request))) … … 267 268 (#"getClassPath" nlg)))) 268 269 269 (defparameter *maven-verbose* t270 "Stream to send output from the Maven Aether subsystem to, or NIL to muffle output")271 272 270 (defun make-repository-listener () 273 ;;; XXX why does the (flet ((log (e) ...)) (java:jinterface-implementation ...) version not work? 274 (java:jinterface-implementation 275 "org.sonatype.aether.RepositoryListener" 276 "artifactDeployed" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 277 "artifactDeploying" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 278 "artifactDescriptorInvalid" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 279 "artifactDescriptorMissing" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 280 "artifactDownloaded" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 281 "artifactDownloading" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 282 "artifactInstalled" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 283 "artifactInstalling" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 284 "artifactResolved" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 285 "artifactResolving" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 286 "metadataDeployed" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 287 "metadataDeploying" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 288 "metadataDownloaded" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 289 "metadataDownloading" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 290 "metadataInstalled" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 291 "metadataInstalling" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 292 "metadataInvalid" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 293 "metadataResolved" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))) 294 "metadataResolving" (lambda (e) (format *maven-verbose* "~&transfer-listener: ~A~%" (#"toString" e))))) 271 (flet ((log (e) 272 (format *maven-verbose* "~&~A~%" (#"toString" e)))) 273 (java:jinterface-implementation 274 "org.sonatype.aether.RepositoryListener" 275 "artifactDeployed" 276 #'log 277 "artifactDeploying" 278 #'log 279 "artifactDescriptorInvalid" 280 #'log 281 "artifactDescriptorMissing" 282 #'log 283 "artifactDownloaded" 284 #'log 285 "artifactDownloading" 286 #'log 287 "artifactInstalled" 288 #'log 289 "artifactInstalling" 290 #'log 291 "artifactResolved" 292 #'log 293 "artifactResolving" 294 #'log 295 "metadataDeployed" 296 #'log 297 "metadataDeploying" 298 #'log 299 "metadataDownloaded" 300 #'log 301 "metadataDownloading" 302 #'log 303 "metadataInstalled" 304 #'log 305 "metadataInstalling" 306 #'log 307 "metadataInvalid" 308 #'log 309 "metadataResolved" 310 #'log 311 "metadataResolving" 312 #'log))) 295 313 296 314 -
trunk/abcl/contrib/abcl-asdf/packages.lisp
r13836 r13841 16 16 #:*mvn-libs-directory* 17 17 #:*maven-http-proxy* 18 #:make-remote-repository 19 #:*maven-remote-repository* 18 20 #:*maven-verbose* 21 22 #:resolve-artifact 23 #:resolve-dependencies 19 24 20 25 #:satisfy 21 26 #:as-classpath 22 23 #:resolve-artifact24 27 25 28 #:add-directory-jars-to-class-path
Note: See TracChangeset
for help on using the changeset viewer.