Skip to content

bnert-land/publicize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

publicize

Clojars Project

Micro-library for publishing to clojars from deps.edn + tools.build.

This library is scoped to be for library authors which utilize tools.build in their workflow.

Overview

I wanted a more "bare-bones" library for publishing to clojars which I can hook into tools.build. This is "bare-bones" as it get's, given it is a single function which wraps pomegranate and provides some basic checks against inputs.

If you need extra functionality, or want more of a "batteries included" solution, check out the Alternatives at the bottom of the README.

Getting Started

Install

Add dependency to deps.edn :build alias (may differ for your project):

{:aliases
 {:build
  {:extra-deps {io.github.clojure/tools.build {:mvn/version "..."}
                ; Add as an extra dep to :build alias
                land.bnert/publicize {:mvn/version "0.4.0"}}
   :ns-default build}}}

Usage

Add the following to your build.clj file (or the equivalent in your project):

(ns build
  (:require
    [clojure.tools.build.api :as b]
    [publicize.core :as p]))

(defn clean [_]
  (b/delete {:path "target"}))

(defn jar [_]
  (clean nil)
  (let [b (b/create-basis {:project "deps.edn"})
        ; Optional, though recommended.
        ;
        ; Will clean clojure version from deps,
        ; which in turn will exclude the clojure version from the
        ; generated pom.xml
        b (p/clean-clojure-dep b)]
    (b/write-pom
      {:basis     basis
       :class-dir "target/classes"
       :lib       'myorg.mygroup/mylib
       :src-dirs  (get basis :paths ["src"])
       :version   "0.1.0"
       :pom-data  [[:licenses
                    [:license
                     [:name "Name of license"]
                     [:url  "https://..."]]]]}
       ; Optional
       :scm       {:url "https://..."})
    (b/copy-dir
      {:src-dirs   (get basis :paths ["src"])
       :target-dir "target/classes"})
    (b/jar
      {:class-dir class-dir
       :jar-file  "target/mylib.jar"})))

(defn publicize [_]
  (let [pom-path (b/pom-path
                   {:class-dir "", :lib 'myorg.mygroup/mylib})]
    (jar nil)
    (p/publicize
      {:lib      'myorg.mygroup/mylib
       :version  "0.1.0"
       :jar-file "target/mylib.jar"
       :pom-path pom-path})))

Then, call via cli:

$ CLOJARS_USERNAME=... CLOJARS_PASSWORD=... clj -T:build publicize

Alternatives/Prior Work

  • slipset/deps-deploy
    • More of a "bundled" approach which handles jar packaging for you.
  • applied-science/deps-library
    • Is a super-set of deps-deploy with some nifty features (if I am interpretting the README correctly). Check it out if you need more functionailty than what is here.

About

Publish your deps.edn based clojure project to clojars.

Topics

Resources

License

Stars

Watchers

Forks

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy