Fork me on GitHub
Alex Miller (Clojure team)00:01:25

maven versions are generally prefixes of major.minor.increment-qualifier but there are a lot of special rules about how qualifiers work and are compared, and they changed a bit from maven 2 to 3 to fix some problems. some useful links: •


not just versions, but like when i declare a/b {:mvn/version "1.2.3"} what is the procedure for fetching it?


apologies if that doesn’t make much sense as a question


like from the perspective of if i wanted to make a ring server that worked as a maven repository i guess


Maven repos are pretty dumb file stores


Wagons are what maven calls the plugins that interact with the file stores


The main protocol this happens over is http(s) and the main API call wagons provide is just "download this file"


Here is a maven wagon for s3 written in clojure there is some stub java code in the main repo that calls into it


You can see the only thing it does is get objects


ah yeah - thats pretty basic


i wish there was an equivalent place for a java community where “things happened”


might help me get some more of these ideas off the ground


(or shot down so they dont live rent free in my head)

Alex Miller (Clojure team)02:01:24

wagons are the old protocol, the newer protocol are transporters

Alex Miller (Clojure team)02:01:48

that one above is only a partial impl (the full protocol does uploads too)


     * Create zip file containing contents of src dirs.
     * @param srcDirs coll of source directories to include in zip
     * @param zipFile zip file to create
    public void zip(List<String> srcDirs, String zipFile) {
      ":src-dirs"), SEQ.invoke(srcDirs),
      ":zip-file"), zipFile

Mutasem Hidmi11:01:37

Hi Everyone. I have a small question. Is this the best library to integrate datadog with a clojure web application?


I like to use Java clients directly most of the time, since it gives you mor control and has no limitations. Where as a wrapper might not have wrapped everything yet and so might not expose all options. But it means you need a bit more familiarity with Clojure interop and Java APIs.


     * Copy the contents of the src-dirs to the target-dir, optionally do text replacement.
     * @param targetDir dir to write files, will be created if it doesn't exist
     * @param srcDirs coll of dirs to copy from
     * @param options options
    public void copyDir(String targetDir, List<String> srcDirs, CopyDirOptions options) {

        var args = HASH_MAP.invoke(
      ":target-dir"), targetDir,
      ":src-dirs"), SEQ.invoke(srcDirs)
        if (options.include != null) {
            args = ASSOC.invoke(args,":include"), options.include);
        if (options.ignores != null) {
            args = ASSOC.invoke(args,":ignores"), SEQ.invoke(options.ignores));
        if (options.replace != null) {
            args = ASSOC.invoke(args,":replace"), INTO.invoke("{}"), options.replace));
        if (options.nonReplacedExts != null) {
            args = ASSOC.invoke(args,":non-replaced-exts"), SEQ.invoke(options.nonReplacedExts));