ninjudd / cake

A tasty build tool for Clojure.
clojure-cake.org
Eclipse Public License 1.0
171 stars 12 forks source link

Subproject dependencies do not work #130

Closed pepijndevos closed 12 years ago

pepijndevos commented 13 years ago

https://github.com/flatland/cake/wiki/Subproject-Dependencies

ubuntu:Downloads pepijndevos$ mkdir caketest
ubuntu:Downloads pepijndevos$ cd caketest/
ubuntu:caketest pepijndevos$ cake new aproj
      [new] Creating template directory: ~/.cake/templates/default
      [new] Created dir: /Users/pepijndevos/.cake/templates/default
      [new] Created dir: /Users/pepijndevos/.cake/templates/default/src/+project+
      [new] Created template file: src/+project+/core.clj
      [new] Created dir: /Users/pepijndevos/.cake/templates/default/test
      [new] Created template file: project.clj
      [new] Created template file: .gitignore
      [new] Created template LICENSE file (Eclipse Public License)
      [new] Creating a new project based on ~/.cake/templates/default
      [new] Copying 4 files to /Users/pepijndevos/Downloads/caketest/aproj
      [new] Copied 4 empty directories to 1 empty directory under /Users/pepijndevos/Downloads/caketest/aproj
      [new] Renaming directories with +project+ in their name
      [new] Replacing +project+ with 'aproj' in all files.
ubuntu:caketest pepijndevos$ cake new bproj
      [new] Creating a new project based on ~/.cake/templates/default
      [new] Copying 4 files to /Users/pepijndevos/Downloads/caketest/bproj
      [new] Copied 4 empty directories to 1 empty directory under /Users/pepijndevos/Downloads/caketest/bproj
      [new] Renaming directories with +project+ in their name
      [new] Replacing +project+ with 'bproj' in all files.
ubuntu:caketest pepijndevos$ pwd
/Users/pepijndevos/Downloads/caketest
ubuntu:caketest pepijndevos$ cd aproj/
ubuntu:aproj pepijndevos$ mkdir .cake
ubuntu:aproj pepijndevos$ echo "subproject.bproj = /Users/pepijndevos/Downloads/caketest/bproj" > .cake/config
ubuntu:aproj pepijndevos$ cake deps
Fetching dependencies...
Fetching dependencies...

dependencies:
  clojure-1.2.0.jar

ubuntu:aproj pepijndevos$ mvim project.clj
ubuntu:aproj pepijndevos$ cat project.clj
(defproject aproj "0.0.1-SNAPSHOT"
  :description "TODO: add summary of your project"
  :dependencies [[clojure "1.2.0"]
         [bproj "0.0.1-SNAPSHOT"]])
ubuntu:aproj pepijndevos$ cake deps
Fetching dependencies...
     [deps] An error has occurred while processing the Maven artifact tasks.
     [deps]  Diagnosis:
     [deps] 
     [deps] Unable to resolve artifact: Missing:
     [deps] ----------
     [deps] 1) bproj:bproj:jar:0.0.1-SNAPSHOT
     [deps] 
     [deps]   Try downloading the file manually from the project website.
     [deps] 
     [deps]   Then, install it using the command: 
     [deps]       mvn install:install-file -DgroupId=bproj -DartifactId=bproj -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
     [deps] 
     [deps]   Alternatively, if you host your own repository you can deploy the file there: 
     [deps]       mvn deploy:deploy-file -DgroupId=bproj -DartifactId=bproj -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
     [deps] 
     [deps]   Path to dependency: 
     [deps]     1) org.apache.maven:super-pom:jar:2.0
     [deps]     2) bproj:bproj:jar:0.0.1-SNAPSHOT
     [deps] 
     [deps] ----------
     [deps] 1 required artifact is missing.
     [deps] 
     [deps] for artifact: 
     [deps]   org.apache.maven:super-pom:jar:2.0
     [deps] 
     [deps] from the specified remote repositories:
     [deps]   maven (http://repo1.maven.org/maven2),
     [deps]   central (http://repo1.maven.org/maven2),
     [deps]   clojars (http://clojars.org/repo),
     [deps]   clojure-snapshots (http://build.clojure.org/snapshots),
     [deps]   clojure (http://build.clojure.org/releases)
     [deps] 
     [deps] 

Unable to resolve the following dependencies:

1) bproj:bproj:jar:0.0.1-SNAPSHOT

java.lang.RuntimeException: java.lang.ClassNotFoundException: clojure.lang.RT
 at clojure.lang.LazySeq.sval (LazySeq.java:47)
    clojure.lang.LazySeq.seq (LazySeq.java:56)
    clojure.lang.RT.seq (RT.java:450)
    clojure.core$seq.invoke (core.clj:122)
    clojure.core$dorun.invoke (core.clj:2450)
    clojure.core$doall.invoke (core.clj:2465)
    cake.task$run_actions.invoke (task.clj:147)
    cake.task$run_task$fn__1063.invoke (task.clj:181)
    cake.task$run_task.invoke (task.clj:176)
    cake.task$run_task.invoke (task.clj:169)
    cake.main$process_command.invoke (main.clj:29)
    cake.server$create$fn__4776.invoke (server.clj:69)
    cake.utils.server_socket$accept_fn$fn__4511$fn__4514.invoke (server_socket.clj:39)
    cake.utils.server_socket$accept_fn$fn__4511.invoke (server_socket.clj:38)
    clojure.lang.AFn.run (AFn.java:24)
    java.lang.Thread.run (Thread.java:722)
Caused by: java.lang.ClassNotFoundException: clojure.lang.RT
 at java.net.URLClassLoader$1.run (URLClassLoader.java:366)
    java.net.URLClassLoader$1.run (URLClassLoader.java:355)
    java.security.AccessController.doPrivileged (AccessController.java:-2)
    java.net.URLClassLoader.findClass (URLClassLoader.java:354)
    java.lang.ClassLoader.loadClass (ClassLoader.java:423)
    java.lang.ClassLoader.loadClass (ClassLoader.java:356)
    sun.reflect.GeneratedMethodAccessor30.invoke (:-1)
    sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke (Method.java:601)
    clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:90)
    clojure.lang.Reflector.invokeInstanceMethod (Reflector.java:28)
    classlojure$classlojure.doInvoke (classlojure.clj:32)
    clojure.lang.RestFn.invoke (RestFn.java:409)
    cake.project$make_classloader.doInvoke (project.clj:52)
    clojure.lang.RestFn.invoke (RestFn.java:398)
    cake.project$reset_classloader_BANG_$fn__1177.invoke (project.clj:73)
    clojure.lang.AFn.applyToHelper (AFn.java:163)
    clojure.lang.AFn.applyTo (AFn.java:151)
    clojure.lang.Var.alterRoot (Var.java:272)
    clojure.core$alter_var_root.doInvoke (core.clj:4351)
    clojure.lang.RestFn.invoke (RestFn.java:426)
    cake.project$reset_classloader_BANG_.invoke (project.clj:70)
    cake.project$reset_classloaders_BANG_.invoke (project.clj:82)
    cake.tasks.deps$eval3666$fn__3668.invoke (deps.clj:21)
    cake.task$run_actions$iter__1036__1040$fn__1041$fn__1042.invoke (task.clj:148)
    cake.task$run_actions$iter__1036__1040$fn__1041.invoke (task.clj:147)
    clojure.lang.LazySeq.sval (LazySeq.java:42)
    clojure.lang.LazySeq.seq (LazySeq.java:56)
    clojure.lang.RT.seq (RT.java:450)
    clojure.core$seq.invoke (core.clj:122)
    clojure.core$dorun.invoke (core.clj:2450)
    clojure.core$doall.invoke (core.clj:2465)
    cake.task$run_actions.invoke (task.clj:147)
    cake.task$run_task$fn__1063.invoke (task.clj:181)
    cake.task$run_task.invoke (task.clj:176)
    cake.task$run_task.invoke (task.clj:169)
    cake.main$process_command.invoke (main.clj:29)
    cake.server$create$fn__4776.invoke (server.clj:69)
    cake.utils.server_socket$accept_fn$fn__4511$fn__4514.invoke (server_socket.clj:39)
    cake.utils.server_socket$accept_fn$fn__4511.invoke (server_socket.clj:38)
    clojure.lang.AFn.run (AFn.java:24)
    java.lang.Thread.run (Thread.java:722)
jwr commented 13 years ago

Indeed they do not. Additionally, is it really necessary to specify the full path?

ninjudd commented 13 years ago

I checked it a fix for this in develop. I'd also be happy to change the code to not require a full path (or accept a patch).

benekastah commented 12 years ago

Is this fix in stable yet?

I tried to use the dev version, but I ran into other errors. What's the best way to get subprojects working?

EDIT: Nevermind. I was just doing it wrong. It seems like this is working in stable, for anyone who is curious.

ninjudd commented 12 years ago

Yes. This is in stable.