How to compile clojure modules that are not under “src” in a lein project
I built my project using lein new app hello, so I have this structure
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── ..
I want to add another helper module to my project such that I can use the code in both the tests and the src modules as I wanted it decoupled from the src directory.
So I added a helpers module
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── helpers
└──hello
└── helpers.clj
How can I change my project.clj file to make lein run
compile. lein run
does not compile and throws the following error when I try to require the helpers namespace.
Exception in thread "main" java.lang.ClassNotFoundException:
hello.helpers, compiling:(hello/core.clj:7:3)
My project.clj file looks like the default one :
(defproject hello "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license :name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"
:dependencies [[org.clojure/clojure "1.8.0"]]
:main ^:skip-aot hello.core
:target-path "target/%s"
:profiles :uberjar :aot :all)
However in the IDE(IntelliJ) it works fine in the REPL, without throwing the class not found exception.
clojure leiningen
add a comment |
I built my project using lein new app hello, so I have this structure
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── ..
I want to add another helper module to my project such that I can use the code in both the tests and the src modules as I wanted it decoupled from the src directory.
So I added a helpers module
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── helpers
└──hello
└── helpers.clj
How can I change my project.clj file to make lein run
compile. lein run
does not compile and throws the following error when I try to require the helpers namespace.
Exception in thread "main" java.lang.ClassNotFoundException:
hello.helpers, compiling:(hello/core.clj:7:3)
My project.clj file looks like the default one :
(defproject hello "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license :name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"
:dependencies [[org.clojure/clojure "1.8.0"]]
:main ^:skip-aot hello.core
:target-path "target/%s"
:profiles :uberjar :aot :all)
However in the IDE(IntelliJ) it works fine in the REPL, without throwing the class not found exception.
clojure leiningen
add a comment |
I built my project using lein new app hello, so I have this structure
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── ..
I want to add another helper module to my project such that I can use the code in both the tests and the src modules as I wanted it decoupled from the src directory.
So I added a helpers module
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── helpers
└──hello
└── helpers.clj
How can I change my project.clj file to make lein run
compile. lein run
does not compile and throws the following error when I try to require the helpers namespace.
Exception in thread "main" java.lang.ClassNotFoundException:
hello.helpers, compiling:(hello/core.clj:7:3)
My project.clj file looks like the default one :
(defproject hello "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license :name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"
:dependencies [[org.clojure/clojure "1.8.0"]]
:main ^:skip-aot hello.core
:target-path "target/%s"
:profiles :uberjar :aot :all)
However in the IDE(IntelliJ) it works fine in the REPL, without throwing the class not found exception.
clojure leiningen
I built my project using lein new app hello, so I have this structure
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── ..
I want to add another helper module to my project such that I can use the code in both the tests and the src modules as I wanted it decoupled from the src directory.
So I added a helpers module
.
└── src
└── hello
└── core.clj
└── project.clj
└── test
└── helpers
└──hello
└── helpers.clj
How can I change my project.clj file to make lein run
compile. lein run
does not compile and throws the following error when I try to require the helpers namespace.
Exception in thread "main" java.lang.ClassNotFoundException:
hello.helpers, compiling:(hello/core.clj:7:3)
My project.clj file looks like the default one :
(defproject hello "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license :name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"
:dependencies [[org.clojure/clojure "1.8.0"]]
:main ^:skip-aot hello.core
:target-path "target/%s"
:profiles :uberjar :aot :all)
However in the IDE(IntelliJ) it works fine in the REPL, without throwing the class not found exception.
clojure leiningen
clojure leiningen
asked Nov 15 '18 at 15:10
M.C.M.C.
1,1322130
1,1322130
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Add
:source-paths ["src" "helpers"]
to your project.clj
file.
using(:require [hello.helpers :as h])
is the correct way to require . I was just testing using(hello.helpers/test)
and that did not work
– M.C.
Nov 15 '18 at 15:41
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322429%2fhow-to-compile-clojure-modules-that-are-not-under-src-in-a-lein-project%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Add
:source-paths ["src" "helpers"]
to your project.clj
file.
using(:require [hello.helpers :as h])
is the correct way to require . I was just testing using(hello.helpers/test)
and that did not work
– M.C.
Nov 15 '18 at 15:41
add a comment |
Add
:source-paths ["src" "helpers"]
to your project.clj
file.
using(:require [hello.helpers :as h])
is the correct way to require . I was just testing using(hello.helpers/test)
and that did not work
– M.C.
Nov 15 '18 at 15:41
add a comment |
Add
:source-paths ["src" "helpers"]
to your project.clj
file.
Add
:source-paths ["src" "helpers"]
to your project.clj
file.
answered Nov 15 '18 at 15:16
akondakond
12.5k32849
12.5k32849
using(:require [hello.helpers :as h])
is the correct way to require . I was just testing using(hello.helpers/test)
and that did not work
– M.C.
Nov 15 '18 at 15:41
add a comment |
using(:require [hello.helpers :as h])
is the correct way to require . I was just testing using(hello.helpers/test)
and that did not work
– M.C.
Nov 15 '18 at 15:41
using
(:require [hello.helpers :as h])
is the correct way to require . I was just testing using (hello.helpers/test)
and that did not work– M.C.
Nov 15 '18 at 15:41
using
(:require [hello.helpers :as h])
is the correct way to require . I was just testing using (hello.helpers/test)
and that did not work– M.C.
Nov 15 '18 at 15:41
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322429%2fhow-to-compile-clojure-modules-that-are-not-under-src-in-a-lein-project%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown