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)
@ -68,3 +84,11 @@
(is (thrown? clojure.lang.ExceptionInfo (deploy nil))))
(testing "Fail if project data is missing"
(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"]])