A Clojure library to deploy your stuff to clojars with clj
or clojure
. It's a very thin wrapper around
Chas Emericks pomegranate library.
It will read your Clojars username/token from the environment variables CLOJARS_USERNAME
and CLOJARS_PASSWORD
, and it will get your artifact-name and version from the pom.xml
To deploy to Clojars, simply merge
{:deploy {:extra-deps {slipset/deps-deploy {:mvn/version "RELEASE"}}
:exec-fn deps-deploy.deps-deploy/deploy
:exec-args {:installer :remote
:sign-releases? true
:artifact "deps-deploy.jar"}}}
into your deps.edn
, have a pom.xml
handy (you can generate one with clj -Spom
), and deploy with
$ env CLOJARS_USERNAME=username CLOJARS_PASSWORD=clojars-token clj -X:deploy
to deploy to Clojars.
It is also possible to override the default Clojars URL by supplying your own. For example:
$ env CLOJARS_URL=https://internal/repository/maven-releases CLOJARS_USERNAME=username CLOJARS_PASSWORD=password clj -A:deploy
This facilitates deploying artefacts to an internal repository - perhaps a proxy service that is running locally that is used to hold private JARs etc...
To deploy to private s3 buckets, you first need to specify the :repository
key in your deps.edn
alias with :exec-args
as:
:exec-args {:repository {"releases" {:url "s3p://my/bucket/"}}}
Then, when deploying, you need to provide credentials which is done either by:
-
setting the env vars:
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
-
providing them via java system properties
aws.accessKeyId
andaws.secretKey
or -
via an AWS credential profile, in the file
~/.aws/credentials
with theAWS_PROIFLE
env var used to specify which profile to use (or the[default]
profile).
[default]
aws_access_key_id = AKIAXXXXX
aws_secret_access_key = SECRET_KEY
For more details see s3-wagon-provider and if you need to know how to configure an S3 bucket see here.
As of 2020-06-27, Clojars will no longer accept your Clojars password when deploying. You will have to use a token instead. Please read more about this here
Long story short, just go find yourself a token and use it in lieu of your password and you're done.
deps-deploy
also supports installing to your local .m2
repo, by invoking install
instead of deploy
:
{:install {:extra-deps {slipset/deps-deploy {:mvn/version "RELEASE"}}
:exec-args {:installer :local
:artifact "deps-deploy.jar"}}
If you want to have your artifacts signed, add "true"
as the last element of the :main-opts
vector like so:
:main-opts ["-m" "deps-deploy.deps-deploy" "install"
"path/to/my.jar" "true"]
Copyright © 2018-2021 Erik Assum
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.