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...
If you want to sign using another key than the default key, you can specify the signing key id:
{:deploy {:extra-deps {slipset/deps-deploy {:mvn/version "RELEASE"}}
:exec-fn deps-deploy.deps-deploy/deploy
:exec-args {:installer :remote
:sign-releases? true
:sign-key-id "1C33430999AA1C3C243A302689CACBAD9979E3C5"
:artifact "deps-deploy.jar"}}}
You can use gpg --list-secret-keys --with-subkey-fingerprints
to find the key ids that are
known on your system.
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
and AWS_SECRET_ACCESS_KEY
providing them via java system properties aws.accessKeyId
and aws.secretKey
or
via an AWS credential profile, in the file ~/.aws/credentials
with the AWS_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-fn deps-deploy.deps-deploy/deploy
: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"]
If you don't want to use the default key for signing, you can specify the key id:
:main-opts ["-m" "deps-deploy.deps-deploy" "install"
"path/to/my.jar" "true" "1C33430999AA1C3C243A302689CACBAD9979E3C5"]
Copyright © 2018-2021 Erik Assum
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.