├── script ├── closure-library-release │ ├── .gitignore │ ├── google-closure-library.pom.template │ ├── google-closure-library-third-party.pom.template │ └── closure-library-release.sh ├── closure_deps_graph.sh └── closure_deps_graph.clj ├── README.md ├── .github └── workflows │ └── closure.yml └── pom.template.xml /script/closure-library-release/.gitignore: -------------------------------------------------------------------------------- 1 | closure-library/ 2 | tmp-build/ 3 | -------------------------------------------------------------------------------- /script/closure_deps_graph.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | if [[ -z "$CLJS_SCRIPT_QUIET" ]]; then 6 | set -x 7 | fi 8 | 9 | FILE_SEP='/' 10 | PATH_SEP=':' 11 | OS_ID=`uname | tr [:upper:] [:lower:]` 12 | CLJS_SCRIPT_MVN_OPTS=${CLJS_SCRIPT_MVN_OPTS:-""} 13 | 14 | if [[ $OS_ID == *mingw* ]] 15 | then 16 | echo "MINGW detected" 17 | # Refer to http://www.mingw.org/wiki/Posix_path_conversion 18 | FILE_SEP='//' 19 | PATH_SEP=';' 20 | fi 21 | 22 | CP_FILE=`mktemp /tmp/cljs_cp.txt.XXXXXXXXXXX` 23 | 24 | mvn -ntp -B -f ../../pom.template.xml dependency:build-classpath -Dmdep.outputFile=$CP_FILE -Dmdep.fileSeparator=$FILE_SEP -Dmdep.pathSeparator=$PATH_SEP $CLJS_SCRIPT_MVN_OPTS 25 | 26 | CLJS_CP=`cat $CP_FILE` 27 | 28 | # For Hudson server 29 | if [ "$HUDSON" = "true" ]; then 30 | $JAVA_HOME/bin/java -server -cp "$CLJS_CP""$PATH_SEP""src/main/clojure" clojure.main ../closure_deps_graph.clj 31 | else 32 | java -server -cp "$CLJS_CP""$PATH_SEP""src/main/clojure" clojure.main ../closure_deps_graph.clj 33 | fi 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # build.closure 2 | 3 | ClojureScript depends on the Google Closure JavaScript Libraries, 4 | but Google does not publish those libraries in a Maven repository. 5 | The github action in this repo generates Maven projects for the 6 | Google Closure Library and, optionally, deploys them. 7 | 8 | The Google Closure Libraries are divided into two parts: the main 9 | library and third-party extensions. The main library is Apache 10 | licensed; the third-party extensions have a variety of different 11 | licenses. However, code in the main library depends on the 12 | third-party extensions, not the other way around. See CLJS-418 for 13 | details. 14 | 15 | To manage this, we build two JARs, google-closure-library and 16 | google-closure-library-third-party, with the former declaring an 17 | explicit dependency on the latter. This permits consumers to exclude 18 | the third-party libraries (and their various licenses) if they know 19 | they don't need them. 20 | 21 | To match this structure, we need to alter the deps.js file that the 22 | Google Closure Compiler uses to resolve dependencies. See CLJS-276 23 | for details. 24 | 25 | The last release ZIP made by Google was 20130212-95c19e7f0f5f. To 26 | get newer versions, we have to go to the Git repository. 27 | 28 | 29 | -------------------------------------------------------------------------------- /.github/workflows/closure.yml: -------------------------------------------------------------------------------- 1 | name: Build Google closure library 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | deploy: 7 | description: "Deploy to Maven Central" 8 | required: true 9 | default: false 10 | type: boolean 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Check out 17 | uses: actions/checkout@v3 18 | - name: Set Github identity 19 | run: | 20 | git config --global user.name clojure-build 21 | git config --global user.email "clojure-build@users.noreply.github.com" 22 | - name: Set up Java 23 | uses: actions/setup-java@v3 24 | with: 25 | java-version: 8 26 | distribution: 'temurin' 27 | server-id: sonatype-nexus-staging 28 | server-username: MAVEN_USERNAME 29 | server-password: MAVEN_PASSWORD 30 | gpg-private-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }} 31 | gpg-passphrase: GPG_PASSPHRASE 32 | - name: Release 33 | run: | 34 | cd script/closure-library-release 35 | ./closure-library-release.sh 36 | env: 37 | MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} 38 | MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} 39 | GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} 40 | HUDSON: ${{ github.event.inputs.deploy }} -------------------------------------------------------------------------------- /script/closure_deps_graph.clj: -------------------------------------------------------------------------------- 1 | (ns closure-deps-graph 2 | (:require [clojure.java.io :as io]) 3 | (:import [java.io File] 4 | [com.google.javascript.jscomp SourceFile BasicErrorManager] 5 | [com.google.javascript.jscomp.deps 6 | BrowserModuleResolver 7 | DepsGenerator DepsGenerator$InclusionStrategy ModuleLoader 8 | ModuleLoader$PathResolver])) 9 | 10 | (defn js-files-in 11 | "Return a sequence of all .js files in the given directory." 12 | [dir] 13 | (filter 14 | #(let [name (.getName ^File %)] 15 | (and (.endsWith name ".js") 16 | (not= \. (first name)))) 17 | (file-seq dir))) 18 | 19 | (spit (io/file "closure-library/closure/goog/deps.js") 20 | (.computeDependencyCalls 21 | (DepsGenerator. 22 | [] 23 | (map #(SourceFile/fromFile (.getAbsolutePath %)) 24 | (mapcat (comp js-files-in io/file) 25 | ["closure-library/closure/goog" "closure-library/third_party/closure/goog"])) 26 | DepsGenerator$InclusionStrategy/ALWAYS 27 | (.getAbsolutePath (io/file "closure-library/closure/goog")) 28 | (proxy [BasicErrorManager] [] 29 | (report [level error] 30 | (println error)) 31 | (println [level error] 32 | (println error))) 33 | (-> (ModuleLoader/builder) 34 | (.setErrorHandler nil) 35 | (.setModuleRoots []) 36 | (.setInputs []) 37 | (.setFactory BrowserModuleResolver/FACTORY) 38 | (.setPathResolver ModuleLoader$PathResolver/ABSOLUTE) 39 | (.build))))) 40 | -------------------------------------------------------------------------------- /script/closure-library-release/google-closure-library.pom.template: -------------------------------------------------------------------------------- 1 | 4 | 4.0.0 5 | org.clojure 6 | google-closure-library 7 | RELEASE_VERSION 8 | jar 9 | Google Closure Library 10 | 11 | 12 | org.clojure 13 | pom.contrib 14 | 1.3.0 15 | 16 | 17 | https://github.com/google/closure-library 18 | 19 | 20 | The Google Closure Library is a collection of JavaScript code 21 | designed for use with the Google Closure JavaScript Compiler. 22 | 23 | This non-official distribution was prepared by the ClojureScript 24 | team at https://clojure.org/ 25 | 26 | 27 | 28 | 29 | org.clojure 30 | google-closure-library-third-party 31 | RELEASE_VERSION 32 | 33 | 34 | 35 | 36 | 37 | The Apache Software License, Version 2.0 38 | https://www.apache.org/licenses/LICENSE-2.0.html 39 | repo 40 | 41 | 42 | 43 | 44 | Google 45 | https://www.google.com 46 | 47 | 48 | 49 | 50 | Google, Inc. 51 | 52 | 53 | Mohamed Mansour 54 | hello@mohamedmansour.com 55 | 56 | 57 | Bjorn Tipling 58 | bjorn.tipling@gmail.com 59 | 60 | 61 | SameGoal LLC 62 | help@samegoal.com 63 | 64 | 65 | Guido Tapia 66 | guido.tapia@gmail.com 67 | 68 | 69 | Andrew Mattie 70 | amattie@gmail.com 71 | 72 | 73 | Ilia Mirkin 74 | ibmirkin@gmail.com 75 | 76 | 77 | Ivan Kozik 78 | ivan.kozik@gmail.com 79 | 80 | 81 | Rich Dougherty 82 | rich@rd.gen.nz 83 | 84 | 85 | 86 | 87 | scm:https://github.com/google/closure-library.git 88 | 89 | 90 | scm:git:https://github.com/google/closure-library.git 91 | 92 | https://github.com/google/closure-library 93 | 94 | 95 | 96 | code.google.com 97 | https://github.com/google/closure-library/issues 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /script/closure-library-release/google-closure-library-third-party.pom.template: -------------------------------------------------------------------------------- 1 | 4 | 4.0.0 5 | org.clojure 6 | google-closure-library-third-party 7 | RELEASE_VERSION 8 | jar 9 | Google Closure Library Third-Party Extensions 10 | 11 | 12 | org.clojure 13 | pom.contrib 14 | 1.3.0 15 | 16 | 17 | https://github.com/google/closure-library 18 | 19 | 20 | The Google Closure Library is a collection of JavaScript code 21 | designed for use with the Google Closure JavaScript Compiler. 22 | 23 | This non-official distribution was prepared by the ClojureScript 24 | team at https://clojure.org/ 25 | 26 | This package contains extensions to the Google Closure Library 27 | using third-party components, which may be distributed under 28 | licenses other than the Apache license. Licenses for individual 29 | library components may be found in source-code comments. 30 | 31 | 32 | 33 | 34 | The Apache Software License, Version 2.0 35 | https://www.apache.org/licenses/LICENSE-2.0.html 36 | repo 37 | 38 | Note: the Google Closure library third-party extensions 39 | contain code under a variety of licenses, which may be found 40 | in source-code comments in each file. 41 | 42 | 43 | 44 | 45 | 46 | Google 47 | https://www.google.com 48 | 49 | 50 | 51 | 52 | Google, Inc. 53 | 54 | 55 | Mohamed Mansour 56 | hello@mohamedmansour.com 57 | 58 | 59 | Bjorn Tipling 60 | bjorn.tipling@gmail.com 61 | 62 | 63 | SameGoal LLC 64 | help@samegoal.com 65 | 66 | 67 | Guido Tapia 68 | guido.tapia@gmail.com 69 | 70 | 71 | Andrew Mattie 72 | amattie@gmail.com 73 | 74 | 75 | Ilia Mirkin 76 | ibmirkin@gmail.com 77 | 78 | 79 | Ivan Kozik 80 | ivan.kozik@gmail.com 81 | 82 | 83 | Rich Dougherty 84 | rich@rd.gen.nz 85 | 86 | 87 | 88 | 89 | scm:https://github.com/google/closure-library.git 90 | 91 | 92 | scm:git:https://github.com/google/closure-library.git 93 | 94 | https://github.com/google/closure-library 95 | 96 | 97 | 98 | code.google.com 99 | https://github.com/google/closure-library/issues 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /script/closure-library-release/closure-library-release.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | ### Constants 6 | 7 | POM_TEMPLATE_FILE="google-closure-library.pom.template" 8 | THIRD_PARTY_POM_TEMPLATE_FILE="google-closure-library-third-party.pom.template" 9 | GIT_CLONE_URL="https://github.com/clojure/closure-library.git" 10 | 11 | ### Functions 12 | 13 | function print_usage { 14 | echo "Usage: ./make-closure-library-jars.sh 15 | 16 | is the root directory of the Google Closure library 17 | Git repository." 18 | } 19 | 20 | ### MAIN SCRIPT BEGINS HERE 21 | 22 | ## Command-line validation 23 | 24 | if [[ ! -e $POM_TEMPLATE_FILE || ! -e $THIRD_PARTY_POM_TEMPLATE_FILE ]]; then 25 | echo "This script must be run from the directory containing 26 | google-closure-library.pom.template and 27 | google-closure-library-third-party.pom.template" 28 | exit 1 29 | fi 30 | 31 | ## Fetch the Git repo 32 | 33 | closure_library_dir="closure-library" 34 | 35 | if [[ ! -d $closure_library_dir ]]; then 36 | git clone "$GIT_CLONE_URL" "$closure_library_dir" 37 | fi 38 | 39 | ( 40 | cd "$closure_library_dir" 41 | git clean -fdx 42 | git checkout master 43 | git pull 44 | ) 45 | 46 | closure_library_base="$closure_library_dir/closure" 47 | third_party_base="$closure_library_dir/third_party/closure" 48 | 49 | if [[ ! -d $closure_library_base || ! -d $third_party_base ]]; then 50 | echo "$closure_library_dir does not look like the Closure library" 51 | exit 1 52 | fi 53 | 54 | ## Working directory 55 | 56 | now=$(date "+%Y%m%d%H%M%S") 57 | work_dir="tmp-build" 58 | 59 | echo "Working directory: $work_dir" 60 | 61 | rm -rf "$work_dir" 62 | mkdir "$work_dir" 63 | 64 | ## Git parsing for release version 65 | 66 | commit_details=$(cd "$closure_library_dir"; git log -n 1 '--pretty=format:%H %ci') 67 | 68 | commit_short_sha=${commit_details:0:8} 69 | commit_date="${commit_details:41:4}${commit_details:46:2}${commit_details:49:2}" 70 | release_version="0.0-${commit_date}-${commit_short_sha}" 71 | 72 | echo "HEAD commit: $commit_details" 73 | echo "Date: $commit_date" 74 | echo "Short SHA: $commit_short_sha" 75 | echo "Release version: $release_version" 76 | 77 | ## Creating directories 78 | 79 | project_dir="$work_dir/google-closure-library" 80 | src_dir="$project_dir/src/main/resources" 81 | 82 | third_party_project_dir="$work_dir/google-closure-library-third-party" 83 | third_party_src_dir="$third_party_project_dir/src/main/resources" 84 | 85 | mkdir -p "$src_dir" "$third_party_src_dir" 86 | 87 | ## Generate deps.js 88 | ../closure_deps_graph.sh 89 | 90 | ## Normalize deps.js 91 | perl -p -i -e 's/\]\);/\], \{\}\);/go' \ 92 | "$closure_library_base/goog/deps.js" 93 | 94 | perl -p -i -e 's/..\/..\/third_party\/closure\/goog\///go' \ 95 | "$closure_library_base/goog/deps.js" 96 | 97 | perl -p -i -e "s/goog.addDependency\('base.js', \[\], \[\], \{\}\);/goog.addDependency\(\'base.js\', \[\'goog\'\], \[\], \{\}\);/go" \ 98 | "$closure_library_base/goog/deps.js" 99 | 100 | ## Copy Closure sources 101 | 102 | cp -r \ 103 | "$closure_library_dir/AUTHORS" \ 104 | "$closure_library_dir/LICENSE" \ 105 | "$closure_library_dir/README.md" \ 106 | "$closure_library_dir/closure/goog" \ 107 | "$src_dir" 108 | 109 | cp -r \ 110 | "$closure_library_dir/AUTHORS" \ 111 | "$closure_library_dir/LICENSE" \ 112 | "$closure_library_dir/README.md" \ 113 | "$closure_library_dir/third_party/closure/goog" \ 114 | "$third_party_src_dir" 115 | 116 | ## Modify main deps.js for third-party JAR; see CLJS-276: 117 | 118 | perl -p -i -e 's/..\/..\/third_party\/closure\/goog\///go' \ 119 | "$src_dir/goog/deps.js" 120 | 121 | ## Remove empty third-party deps.js and base.js 122 | 123 | rm -f \ 124 | "$third_party_src_dir/goog/deps.js" \ 125 | "$third_party_src_dir/goog/base.js" 126 | 127 | ## Generate the POM files: 128 | 129 | perl -p -e "s/RELEASE_VERSION/$release_version/go" \ 130 | "$POM_TEMPLATE_FILE" \ 131 | > "$project_dir/pom.xml" 132 | 133 | perl -p -e "s/RELEASE_VERSION/$release_version/go" \ 134 | "$THIRD_PARTY_POM_TEMPLATE_FILE" \ 135 | > "$third_party_project_dir/pom.xml" 136 | 137 | ## Deploy the files if we are on Hudson 138 | 139 | if [ "$HUDSON" = "true" ]; then 140 | ( 141 | cd "$third_party_project_dir" 142 | mvn -ntp -B --fail-at-end \ 143 | -Psonatype-oss-release \ 144 | -Dsource.skip=true \ 145 | clean deploy 146 | ) 147 | 148 | ( 149 | cd "$project_dir" 150 | mvn -ntp -B --fail-at-end \ 151 | -Psonatype-oss-release \ 152 | -Dsource.skip=true \ 153 | clean deploy 154 | ) 155 | 156 | echo "Now log in to https://oss.sonatype.org/ to release" 157 | echo "the staging repository." 158 | else 159 | echo "Not on Hudson, local Maven install" 160 | ( 161 | cd "$third_party_project_dir" 162 | mvn clean 163 | mvn -ntp -B package 164 | mvn -B install:install-file -Dfile=./target/google-closure-library-third-party-$release_version.jar -DpomFile=pom.xml 165 | ) 166 | ( 167 | cd "$project_dir" 168 | mvn clean 169 | mvn -ntp -B package 170 | mvn -B install:install-file -Dfile=./target/google-closure-library-$release_version.jar -DpomFile=pom.xml 171 | ) 172 | fi 173 | -------------------------------------------------------------------------------- /pom.template.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | org.clojure 4 | clojurescript 5 | 6 | CLOJURESCRIPT_VERSION 7 | jar 8 | ClojureScript 9 | 10 | https://github.com/clojure/clojurescript 11 | 12 | 13 | ClojureScript compiler and core runtime library. 14 | 15 | 16 | 17 | 18 | Eclipse Public License 1.0 19 | http://opensource.org/licenses/eclipse-1.0.php 20 | repo 21 | 22 | 23 | 24 | 25 | 26 | org.clojure 27 | clojure 28 | 1.10.0 29 | 30 | 31 | com.google.javascript 32 | closure-compiler-unshaded 33 | v20220502 34 | 35 | 36 | org.clojure 37 | google-closure-library 38 | 0.0-20230227-c7c0a541 39 | 40 | 41 | org.clojure 42 | tools.reader 43 | 1.3.6 44 | 45 | 46 | com.cognitect 47 | transit-java 48 | 1.0.362 49 | 50 | 51 | org.clojure 52 | clojure 53 | 54 | 55 | 56 | 57 | org.clojure 58 | test.check 59 | 1.1.1 60 | test 61 | 62 | 63 | org.clojure 64 | clojure 65 | 66 | 67 | 68 | 69 | 70 | 71 | Aaron Bedra 72 | Alan Dipert 73 | Alex Dowad 74 | Alan Malloy 75 | Alen Ribic 76 | Alex Redington 77 | Ambrose Bonnaire-Sergeant 78 | Andrew Rosa 79 | Antonin Hildebrand 80 | Ben Moss 81 | Benjamin Meyer 82 | Bo Jeanes 83 | Bobby Calderwood 84 | Brandon Bloom 85 | Brenton Ashworth 86 | Brian Jenkins 87 | Brian Kim 88 | Brian Taylor 89 | Bruce Hauman 90 | Chad Taylor 91 | Chas Emerick 92 | Charles Duffy 93 | Chris Granger 94 | Chris Pickard 95 | Chris Houser 96 | Chris Truter 97 | Christopher Redinger 98 | Colin Jones 99 | Creighton Kirkendall 100 | David Nolen 101 | Daniel Compton 102 | Daniel Skarda 103 | Dave Sann 104 | Devin Walters 105 | Dylan Butman 106 | Edward Tsech 107 | Eric Normand 108 | Eric Thorsen 109 | Erik Ouchterlony 110 | Evan Mezeske 111 | Francis Avila 112 | Frank Failla 113 | Francoise De Serre 114 | Gary Fredericks 115 | Gary Trakhman 116 | Herwig Hochleitner 117 | Hubert Iwaniuk 118 | Hugo Duncan 119 | Immo Heikkinen 120 | Ivan Willig 121 | J. Pablo Fernandez 122 | Jamie Brandon 123 | Jeff Dik 124 | Jess Martin 125 | Joel Holdbrooks 126 | Joel Martin 127 | John Li 128 | Jonas De Vuyst 129 | Jonas Enlund 130 | Jonathan Boston 131 | Jozef Wagner 132 | Juergen Hoetzel 133 | Juho Teperi 134 | Julian Eluard 135 | Justin Tirrell 136 | Kovas Boguta 137 | Kevin J. Lynagh 138 | Laszlo Toeroek 139 | Leon Grapenthin 140 | Luke VanderHart 141 | Maria Geller 142 | Martin Klepsch 143 | Matjaz Gregoric 144 | Max Gonzih 145 | Max Penet 146 | Max Veytsman 147 | Michael Ballantyne 148 | Michael Fogus 149 | Michael Glaesemann 150 | Michael Griffiths 151 | Michael O. Church 152 | Michał Marczyk 153 | Michiel Borkent 154 | Mike Fikes 155 | Moritz Ulrich 156 | Murphy McMahon 157 | Nelson Morris 158 | Nicola Mometto 159 | Nikita Prokopov 160 | Osbert Feng 161 | Paul Michael Bauer 162 | Paul deGrandis 163 | Peter Schuck 164 | Peter Stephens 165 | Peter Taoussanis 166 | Pieter van Prooijen 167 | Raphaël Amiard 168 | Raymond Huang 169 | Rich Hickey 170 | Roman Gonzalez 171 | Roman Scherer 172 | Rupa Shankar 173 | Russ Olsen 174 | Sam Umbach 175 | Samuel Miller 176 | Sean Grove 177 | Sebastien Bensusan 178 | Sean LeBron 179 | Steven Kallstrom 180 | Stuart Halloway 181 | Stuart Mitchell 182 | Stuart Sierra 183 | Takahiro Hozumi 184 | Thomas Heller 185 | Thomas Scheiblauer 186 | Tim Griesser 187 | Timothy Pratley 188 | Toby Crawley 189 | Tom Hickey 190 | Tom Jack 191 | Tom Marble 192 | Travis Thieman 193 | Travis Vachon 194 | Wilkes Joiner 195 | Zachary Allaun 196 | Zach Oakes 197 | Zubair Quraishi 198 | 199 | 200 | 201 | scm:git:git://github.com/clojure/clojurescript.git 202 | scm:git:git@github.com:clojure/clojurescript.git 203 | https://github.com/clojure/clojurescript 204 | 205 | 206 | 207 | UTF-8 208 | src/main/clojure 209 | src/main/cljs 210 | src/main/cljs 211 | resources 212 | true 213 | 214 | 215 | 216 | 217 | central 218 | https://central.sonatype.com 219 | 220 | 221 | central-snapshot 222 | https://central.sonatype.com/repository/maven-snapshots/ 223 | 224 | 225 | 226 | 227 | 228 | 229 | org.apache.maven.plugins 230 | maven-source-plugin 231 | 3.3.1 232 | 233 | 234 | attach-sources 235 | package 236 | 237 | jar 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | org.codehaus.mojo 246 | build-helper-maven-plugin 247 | 3.0.0 248 | 249 | 250 | add-clojure-source-dirs 251 | generate-sources 252 | 253 | add-source 254 | add-resource 255 | 256 | 257 | 258 | ${clojure.source.dir} 259 | ${cljs.source.dir} 260 | 261 | 262 | 263 | ${clojure.source.dir} 264 | 265 | 266 | ${cljs.source.dir} 267 | 268 | 269 | ${resources.dir} 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | com.theoryinpractise 278 | clojure-maven-plugin 279 | 1.8.3 280 | 281 | false 282 | 283 | 284 | 285 | clojure-compile 286 | compile 287 | 288 | compile 289 | 290 | 291 | true 292 | 293 | !cljs.vendor.bridge 294 | 295 | 296 | 297 | 298 | 299 | 300 | maven-jar-plugin 301 | 3.4.2 302 | 303 | 304 | 305 | cljs.main 306 | 307 | 308 | 309 | 310 | 311 | default-jar 312 | package 313 | 314 | jar 315 | 316 | 317 | 318 | **/*.clj 319 | **/*.cljc 320 | **/*.cljs 321 | **/*.js 322 | **/*.map 323 | **/*.edn 324 | **/*.svg 325 | **/*.png 326 | 327 | 328 | 329 | 330 | javadoc-jar 331 | package 332 | 333 | jar 334 | 335 | 336 | 337 | ** 338 | 339 | javadoc 340 | 341 | 342 | 343 | 344 | 345 | maven-assembly-plugin 346 | 3.7.1 347 | 348 | 349 | aot-jar 350 | package 351 | 352 | single 353 | 354 | 355 | false 356 | 357 | src/assembly/aot.xml 358 | 359 | 360 | 361 | 362 | slim-jar 363 | package 364 | 365 | single 366 | 367 | 368 | 369 | src/assembly/slim.xml 370 | 371 | 372 | 373 | 374 | 375 | 376 | org.apache.maven.plugins 377 | maven-gpg-plugin 378 | 3.1.0 379 | 380 | 381 | --pinentry-mode 382 | loopback 383 | 384 | 385 | 386 | 387 | org.apache.maven.plugins 388 | maven-compiler-plugin 389 | 3.8.1 390 | 391 | 21 392 | 21 393 | 394 | 395 | 396 | 397 | 401 | org.apache.maven.plugins 402 | maven-release-plugin 403 | 2.5.3 404 | 405 | 406 | 407 | 408 | 409 | 410 | org.sonatype.central 411 | central-publishing-maven-plugin 412 | 0.7.0 413 | true 414 | 415 | central 416 | true 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | sign 426 | 427 | 428 | 429 | 430 | org.apache.maven.plugins 431 | maven-gpg-plugin 432 | 1.5 433 | 434 | 435 | sign-artifacts 436 | verify 437 | 438 | sign 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | --------------------------------------------------------------------------------