Commits

Meikel Brandmeyer committed 7d03880

Split plugin for finer grained modularity

Comments (0)

Files changed (7)

clojuresque-extras/src/main/groovy/clojuresque/ClojureExtrasDepsPlugin.groovy

+/*-
+ * Copyright 2013 © Meikel Brandmeyer.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+package clojuresque
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.tasks.Copy
+
+public class ClojureExtrasDepsPlugin implements Plugin<Project> {
+    public void apply(Project project) {
+        project.task("deps", type: Copy) {
+            description =
+                'Copy runtime dependencies into the "lib" directory'
+            group = "other"
+            into 'lib'
+            from project.configurations.runtime
+        }
+    }
+}

clojuresque-extras/src/main/groovy/clojuresque/ClojureExtrasPlugin.groovy

 
 package clojuresque
 
-import clojuresque.tasks.TaskWatcher
-
 import org.gradle.api.Plugin
 import org.gradle.api.Project
-import org.gradle.api.tasks.Copy
-import org.gradle.api.tasks.bundling.Jar
 
 public class ClojureExtrasPlugin implements Plugin<Project> {
     public void apply(Project project) {
-        configureUberjar(project)
-        configureDepsTask(project)
-        configureTaskWatcher(project)
-    }
-
-    private void configureUberjar(Project project) {
-        project.tasks.withType(Jar).asMap.each { name, jar ->
-            project.task("uber" + name, type: Jar) {
-                description =
-                    'Constructs a jar with all runtime dependencies included'
-                group = "other"
-                dependsOn jar.source, project.configurations.runtime
-                baseName = jar.baseName + "-standalone"
-                enabled = false
-                doFirst {
-                    project.configurations.runtime.each {
-                        from project.zipTree(it)
-                        exclude 'META-INF/MANIFEST.MF'
-                        exclude 'META-INF/*.SF'
-                        exclude 'META-INF/*.DSA'
-                        exclude 'META-INF/*.RSA'
-                    }
-                    from jar.source
-                }
-            }
-        }
-    }
-
-    private void configureDepsTask(Project project) {
-        project.task("deps", type: Copy) {
-            description =
-                'Copy runtime dependencies into the "lib" directory'
-            group = "other"
-            into 'lib'
-            from project.configurations.runtime
-        }
-    }
-
-    private void configureTaskWatcher(Project project) {
-        project.task("watchTasks", type: TaskWatcher) {
-            description = "Run watched tasks continually"
-            group = "other"
-        }
+        project.apply plugin: "clojure-extras-uberjar"
+        project.apply plugin: "clojure-extras-deps"
+        project.apply plugin: "clojure-extras-taskwatcher"
     }
 }

clojuresque-extras/src/main/groovy/clojuresque/ClojureExtrasTaskWatcherPlugin.groovy

+/*-
+ * Copyright 2013 © Meikel Brandmeyer.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+package clojuresque
+
+import clojuresque.tasks.TaskWatcher
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+
+public class ClojureExtrasTaskWatcherPlugin implements Plugin<Project> {
+    public void apply(Project project) {
+        project.task("watchTasks", type: TaskWatcher) {
+            description = "Run watched tasks continually"
+            group = "other"
+        }
+    }
+}

clojuresque-extras/src/main/groovy/clojuresque/ClojureExtrasUberJarPlugin.groovy

+/*-
+ * Copyright 2013 © Meikel Brandmeyer.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+package clojuresque
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.tasks.bundling.Jar
+
+public class ClojureExtrasUberJarPlugin implements Plugin<Project> {
+    public void apply(Project project) {
+        project.tasks.withType(Jar).asMap.each { name, jar ->
+            project.task("uber" + name, type: Jar) {
+                description =
+                    'Constructs a jar with all runtime dependencies included'
+                group = "other"
+                dependsOn jar.source, project.configurations.runtime
+                baseName = jar.baseName + "-standalone"
+                enabled = false
+                doFirst {
+                    project.configurations.runtime.each {
+                        from project.zipTree(it)
+                        exclude 'META-INF/MANIFEST.MF'
+                        exclude 'META-INF/*.SF'
+                        exclude 'META-INF/*.DSA'
+                        exclude 'META-INF/*.RSA'
+                    }
+                    from jar.source
+                }
+            }
+        }
+    }
+}

clojuresque-extras/src/main/resources/META-INF/gradle-plugins/clojure-extras-deps.properties

+implementation-class=clojuresque.ClojureExtrasDepsPlugin

clojuresque-extras/src/main/resources/META-INF/gradle-plugins/clojure-extras-taskwatcher.properties

+implementation-class=clojuresque.ClojureExtrasTaskWatcherPlugin

clojuresque-extras/src/main/resources/META-INF/gradle-plugins/clojure-extras-uberjar.properties

+implementation-class=clojuresque.ClojureExtrasUberJarPlugin