Merge pull request #2220 from rymndhng/add-deploy-classifier
Infer classifier when deploying adhoc files
This commit is contained in:
commit
6e83ea2651
5 changed files with 47 additions and 3 deletions
|
@ -155,6 +155,16 @@
|
||||||
"pom"
|
"pom"
|
||||||
(last (.split f "\\.")))))
|
(last (.split f "\\.")))))
|
||||||
|
|
||||||
|
(defn classifier
|
||||||
|
"The classifier is be located between the version and extension name of the artifact.
|
||||||
|
|
||||||
|
See http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-with-classifiers.html "
|
||||||
|
[version f]
|
||||||
|
(let [pattern (re-pattern (format "%s-(.*)\\.%s" version (extension f)))
|
||||||
|
[_ classifier-of] (re-find pattern f)]
|
||||||
|
(when-not (empty? classifier-of)
|
||||||
|
classifier-of)))
|
||||||
|
|
||||||
(defn- fail-on-empty-project [project]
|
(defn- fail-on-empty-project [project]
|
||||||
(when-not (:root project)
|
(when-not (:root project)
|
||||||
(main/abort "Couldn't find project.clj, which is needed for deploy task")))
|
(main/abort "Couldn't find project.clj, which is needed for deploy task")))
|
||||||
|
@ -213,7 +223,8 @@ be able to depend on jars that are deployed without a pom."
|
||||||
group-id (namespace identifier)
|
group-id (namespace identifier)
|
||||||
repo (repo-for project repository)
|
repo (repo-for project repository)
|
||||||
artifacts (for [f files]
|
artifacts (for [f files]
|
||||||
[[:extension (extension f)] f])]
|
[[:extension (extension f)
|
||||||
|
:classifier (classifier version f)] f])]
|
||||||
(main/debug "Deploying" files "to" repo)
|
(main/debug "Deploying" files "to" repo)
|
||||||
(aether/deploy
|
(aether/deploy
|
||||||
:coordinates [(symbol group-id artifact-id) version]
|
:coordinates [(symbol group-id artifact-id) version]
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
[clojure.java.io :only [file]]
|
[clojure.java.io :only [file]]
|
||||||
[leiningen.deploy]
|
[leiningen.deploy]
|
||||||
[leiningen.test.helper :only [delete-file-recursively
|
[leiningen.test.helper :only [delete-file-recursively
|
||||||
tmp-dir sample-project]]))
|
tmp-dir sample-project
|
||||||
|
sample-deploy-project]]))
|
||||||
|
|
||||||
(defn- repo-path
|
(defn- repo-path
|
||||||
[relative-repo-path]
|
[relative-repo-path]
|
||||||
|
@ -45,6 +46,21 @@
|
||||||
repo-path repo-url)}})
|
repo-path repo-url)}})
|
||||||
"deploy-only-repo")))
|
"deploy-only-repo")))
|
||||||
|
|
||||||
|
(deftest ^:online test-deploy-classifier
|
||||||
|
(testing "deployment with explicit file names uploads classifiers to repo"
|
||||||
|
(let [deploy-dir (repo-path "deploy-classifier")
|
||||||
|
project (assoc sample-deploy-project
|
||||||
|
:deploy-repositories
|
||||||
|
{"snapshots" {:url (repo-url deploy-dir)}})]
|
||||||
|
(delete-file-recursively deploy-dir :silently)
|
||||||
|
(deploy project "snapshots"
|
||||||
|
"deploy-me/deploy-me"
|
||||||
|
(:version project)
|
||||||
|
(str (:root project) "/deploy-me-0.1.0-SNAPSHOT-fat.jarr"))
|
||||||
|
(let [dir (file deploy-dir "deploy-me/deploy-me/0.1.0-SNAPSHOT/")
|
||||||
|
files (.list dir)]
|
||||||
|
(is (seq (filter #(re-find #"deploy-me-0.1.0-[\d.]+-\d+-fat.jarr$" %) files)))))))
|
||||||
|
|
||||||
(deftest signing
|
(deftest signing
|
||||||
(testing "GPG invocation"
|
(testing "GPG invocation"
|
||||||
(is (= (signing-args "foo.jar" nil)
|
(is (= (signing-args "foo.jar" nil)
|
||||||
|
@ -67,4 +83,12 @@
|
||||||
(testing "Fail if project data is missing"
|
(testing "Fail if project data is missing"
|
||||||
(is (thrown? clojure.lang.ExceptionInfo (deploy nil))))
|
(is (thrown? clojure.lang.ExceptionInfo (deploy nil))))
|
||||||
(testing "Fail if project data is missing"
|
(testing "Fail if project data is missing"
|
||||||
(is (thrown? clojure.lang.ExceptionInfo (deploy nil "snapshots")))))
|
(is (thrown? clojure.lang.ExceptionInfo (deploy nil "snapshots")))))
|
||||||
|
|
||||||
|
(deftest classifiying
|
||||||
|
(are [expected version file] (= expected (classifier version file))
|
||||||
|
"fat" "1.2.3" "some-project-1.2.3-fat.jar"
|
||||||
|
"fat" "1.2.3-alpha6" "some-project-1.2.3-alpha6-fat.jar"
|
||||||
|
"fat" "1.2.3-SNAPSHOT" "some-project-1.2.3-SNAPSHOT-fat.jar"
|
||||||
|
nil "1.2.3" "some-project-1.2.3-.jar"
|
||||||
|
nil "1.2.3" "some-project-1.2.3.jar"))
|
||||||
|
|
|
@ -50,6 +50,8 @@
|
||||||
|
|
||||||
(def sample-fixture-error-project (read-test-project "sample-fixture-error"))
|
(def sample-fixture-error-project (read-test-project "sample-fixture-error"))
|
||||||
|
|
||||||
|
(def sample-deploy-project (read-test-project "sample-deploy"))
|
||||||
|
|
||||||
(def tricky-name-project (read-test-project "tricky-name"))
|
(def tricky-name-project (read-test-project "tricky-name"))
|
||||||
|
|
||||||
(def native-project (read-test-project "native"))
|
(def native-project (read-test-project "native"))
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
I am a teapot!
|
6
test_projects/sample-deploy/project.clj
Normal file
6
test_projects/sample-deploy/project.clj
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
(defproject deploy-me "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"]])
|
Loading…
Reference in a new issue