Merge pull request #2220 from rymndhng/add-deploy-classifier

Infer classifier when deploying adhoc files
This commit is contained in:
Jean Niklas L'orange 2016-11-05 12:22:17 +01:00 committed by GitHub
commit 6e83ea2651
5 changed files with 47 additions and 3 deletions

View file

@ -155,6 +155,16 @@
"pom"
(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]
(when-not (:root project)
(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)
repo (repo-for project repository)
artifacts (for [f files]
[[:extension (extension f)] f])]
[[:extension (extension f)
:classifier (classifier version f)] f])]
(main/debug "Deploying" files "to" repo)
(aether/deploy
:coordinates [(symbol group-id artifact-id) version]

View file

@ -3,7 +3,8 @@
[clojure.java.io :only [file]]
[leiningen.deploy]
[leiningen.test.helper :only [delete-file-recursively
tmp-dir sample-project]]))
tmp-dir sample-project
sample-deploy-project]]))
(defn- repo-path
[relative-repo-path]
@ -45,6 +46,21 @@
repo-path repo-url)}})
"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
(testing "GPG invocation"
(is (= (signing-args "foo.jar" nil)
@ -67,4 +83,12 @@
(testing "Fail if project data is missing"
(is (thrown? clojure.lang.ExceptionInfo (deploy nil))))
(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"))

View file

@ -50,6 +50,8 @@
(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 native-project (read-test-project "native"))

View file

@ -0,0 +1 @@
I am a teapot!

View 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"]])