├── .github └── workflows │ ├── test.yml │ ├── snapshot.yml │ └── release.yml ├── .gitignore ├── example-project-pom.xml ├── README.md └── pom.xml /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [push] 4 | 5 | jobs: 6 | call-test: 7 | uses: clojure/build.ci/.github/workflows/test.yml@master 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # emacs + vi backup files 2 | *~ 3 | .*.sw* 4 | 5 | # various IDE junk 6 | *.ipr 7 | *.iml 8 | *.iws 9 | .project 10 | .classpath 11 | .settings 12 | 13 | target 14 | -------------------------------------------------------------------------------- /.github/workflows/snapshot.yml: -------------------------------------------------------------------------------- 1 | name: Snapshot on demand 2 | 3 | on: [workflow_dispatch] 4 | 5 | jobs: 6 | call-snapshot: 7 | uses: clojure/build.ci/.github/workflows/snapshot.yml@master 8 | secrets: inherit 9 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release on demand 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | releaseVersion: 7 | description: "Version to release" 8 | required: true 9 | snapshotVersion: 10 | description: "Snapshot version after release" 11 | required: true 12 | 13 | jobs: 14 | call-release: 15 | uses: clojure/build.ci/.github/workflows/release.yml@master 16 | with: 17 | releaseVersion: ${{ github.event.inputs.releaseVersion }} 18 | snapshotVersion: ${{ github.event.inputs.snapshotVersion }} 19 | secrets: inherit -------------------------------------------------------------------------------- /example-project-pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | 7 | 8 | https://github.com/clojure/ 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | org.clojure 21 | pom.contrib 22 | 23 | 24 | 25 | 26 | scm:git:git@github.com:clojure/.git 27 | scm:git:git@github.com:clojure/.git 28 | git@github.com:clojure/.git 29 | 30 | 31 | 40 | 46 | 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | org.clojure parent POMs 2 | ======================================== 3 | 4 | This project defines a parent Maven Project Object Model (POM) for 5 | projects contributed to Clojure and built at 6 | [build.clojure.org](http://build.clojure.org). 7 | 8 | 9 | What does this POM do? 10 | ======================================== 11 | 12 | The pom.xml file of this project defines a common configuration 13 | baseline for libraries contributed to Clojure, including: 14 | 15 | * Build properties 16 | * `clojure.version` defined to be the most recent release of Clojure 17 | * This may be an alpha or beta release 18 | * This may be changed on the Maven command line to test with different versions 19 | * `clojure.warnOnReflection` sets the `*warn-on-reflection*` flag during compilation 20 | * Defaults to false 21 | * This may be changed on the Maven command line to test with `*warn-on-reflection*` true 22 | * `project.build.sourceEncoding` set to UTF-8 23 | * License set to EPL 1.0 24 | * Build plugin configuration 25 | * build-helper-maven-plugin 26 | * Adds src/main/clojure to the source and resource directories for the project 27 | * Adds src/test/clojure to the test source and test resource directories for the project 28 | * Ensures sources will be recognized by other plugins and copied to the output JAR 29 | * com.theoryinpractise:clojure-maven-plugin 30 | * AOT-compiles all .clj sources as a syntax check 31 | * Does *not* include any AOT-compiled .class files in the output JAR 32 | * Runs tests defined with clojure.test 33 | * Does *not* AOT-compile test .clj sources 34 | * maven-compiler-plugin 35 | * Sets Java source and target version to 1.9 36 | * Sets Java source file encoding to UTF-8 37 | * maven-release-plugin 38 | * Prevents tags and other changes from being pushed to Git when a release build fails 39 | * nexus-staging-maven-plugin 40 | * Deploy to Nexus repo (in this case, the sonatype repo) 41 | * maven-gpg-plugin 42 | * Sign artifacts prior to deployment 43 | * Dependencies 44 | * Adds dependency on a Clojure release defined by the `clojure.version` property 45 | 46 | 47 | What do contrib projects need to do? 48 | ======================================== 49 | 50 | Unless they have special build requirements such as `gen-class`, 51 | contrib projects should only require three things: 52 | 53 | * Clojure sources in `src/main/clojure/` 54 | * Test sources using clojure.test in `src/test/clojure/` 55 | * A pom.xml file that looks like example-project-pom.xml 56 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | org.clojure 5 | pom.contrib 6 | pom 7 | 1.3.1-SNAPSHOT 8 | pom.contrib 9 | Parent POM for projects contributed to Clojure 10 | https://github.com/clojure/build.poms 11 | 12 | 13 | 15 | 1.9.0 16 | 18 | false 19 | 20 | src/main/clojure 21 | src/test/clojure 22 | UTF-8 23 | 24 | 25 | 26 | scm:git:git@github.com:clojure/build.poms.git 27 | scm:git:git@github.com:clojure/build.poms.git 28 | git@github.com:clojure/build.poms.git 29 | HEAD 30 | 31 | 32 | 33 | 34 | Eclipse Public License 1.0 35 | https://opensource.org/licenses/eclipse-1.0.php 36 | repo 37 | 38 | 39 | 40 | 41 | 42 | stuartsierra 43 | Stuart Sierra 44 | https://github.com/stuartsierra 45 | 46 | 47 | alexmiller 48 | Alex Miller 49 | https://github.com/puredanger 50 | 51 | 52 | 53 | 54 | 55 | org.clojure 56 | clojure 57 | ${clojure.version} 58 | 59 | 60 | 61 | 62 | 63 | central 64 | https://central.sonatype.com 65 | 66 | 67 | central-snapshot 68 | https://central.sonatype.com/repository/maven-snapshots/ 69 | 70 | 71 | 72 | 73 | 74 | 75 | org.apache.maven.plugins 76 | maven-source-plugin 77 | 3.3.1 78 | 79 | 80 | 81 | 82 | org.codehaus.mojo 83 | build-helper-maven-plugin 84 | 3.0.0 85 | 86 | 87 | add-clojure-source-dirs 88 | generate-sources 89 | 90 | add-source 91 | add-resource 92 | 93 | 94 | 95 | ${clojure.source.dir} 96 | 97 | 98 | 99 | ${clojure.source.dir} 100 | 101 | 102 | 103 | 104 | 105 | add-clojure-test-source-dirs 106 | generate-sources 107 | 108 | add-test-source 109 | add-test-resource 110 | 111 | 112 | 113 | ${clojure.testSource.dir} 114 | 115 | 116 | 117 | ${clojure.testSource.dir} 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 129 | com.theoryinpractise 130 | clojure-maven-plugin 131 | 1.7.1 132 | true 133 | 134 | ${clojure.warnOnReflection} 135 | true 136 | 137 | 138 | 139 | clojure-compile 140 | compile 141 | 142 | compile 143 | 144 | 145 | 146 | clojure-test 147 | test 148 | 149 | test 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | org.apache.maven.plugins 158 | maven-compiler-plugin 159 | 3.8.1 160 | 161 | 1.8 162 | 1.8 163 | ${project.build.sourceEncoding} 164 | 165 | 166 | 167 | 168 | 172 | org.apache.maven.plugins 173 | maven-release-plugin 174 | 2.5.3 175 | 176 | false 177 | true 178 | v@{project.version} 179 | 180 | 181 | 182 | 183 | 184 | org.sonatype.central 185 | central-publishing-maven-plugin 186 | 0.7.0 187 | true 188 | 189 | central 190 | true 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | sign 199 | 200 | 201 | 202 | 203 | org.apache.maven.plugins 204 | maven-gpg-plugin 205 | 1.5 206 | 207 | 208 | sign-artifacts 209 | verify 210 | 211 | sign 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | --------------------------------------------------------------------------------