info: java: update workspace master
authorFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 16 Aug 2019 21:04:12 +0000 (23:04 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 16 Aug 2019 21:05:33 +0000 (23:05 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
18 files changed:
lib/info.java/.gradle-wrapper/gradle-wrapper.properties
lib/info.java/BUILDING
lib/info.java/Makefile
lib/info.java/cnf/findbugs/findbugs.exclude.xml [deleted file]
lib/info.java/cnf/gradle/custom/javaProject-post.gradle
lib/info.java/cnf/gradle/dependencies/README
lib/info.java/cnf/gradle/dependencies/com.github.spotbugs/spotbugs-gradle-plugin-2.0.0.jar [new file with mode: 0644]
lib/info.java/cnf/gradle/doc/BUILDING-GRADLE.md
lib/info.java/cnf/gradle/doc/CHANGELOG.md
lib/info.java/cnf/gradle/doc/template.dot
lib/info.java/cnf/gradle/doc/template.svg
lib/info.java/cnf/gradle/template/findbugs.gradle [deleted file]
lib/info.java/cnf/gradle/template/jacoco.gradle
lib/info.java/cnf/gradle/template/javaProject.gradle
lib/info.java/cnf/gradle/template/spotbugs.gradle [new file with mode: 0644]
lib/info.java/cnf/spotbugs/spotbugs.exclude.xml [moved from lib/info.java/cnf/findbugs/findbugs.include.xml with 100% similarity]
lib/info.java/cnf/spotbugs/spotbugs.include.xml [new file with mode: 0644]
lib/info.java/gradlew

index b0acbdc..ef9a9e0 100644 (file)
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
index 1a0ccfe..96adb2a 100644 (file)
@@ -45,4 +45,4 @@ Building on a build server
       -PCI -Djsse.enableSNIExtension=false \
       build \
       release \
-      findbugs
+      spotbugs
index 54f7844..a4f2e46 100644 (file)
@@ -67,7 +67,7 @@ java:
       build \
       javadoc \
       release \
-      findbugs
+      spotbugs
 
 clean:
        @./gradlew \
diff --git a/lib/info.java/cnf/findbugs/findbugs.exclude.xml b/lib/info.java/cnf/findbugs/findbugs.exclude.xml
deleted file mode 100644 (file)
index 31b34f6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<FindBugsFilter>
-    <Match>
-        <Class name="org.olsr.v1.info.proxy.api.InfoResult" />
-        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD" />
-    </Match>
-</FindBugsFilter>
index ad5a443..360d89f 100644 (file)
@@ -1,7 +1,7 @@
 assert(project != rootProject   )
 assert(hasProperty('sourceSets'))
 
-findbugs {
+spotbugs {
   effort      = "max" /* min, default, max  */
   reportLevel = "low" /* low, medium , high */
 }
index 3bd1817..cefd696 100644 (file)
@@ -6,3 +6,13 @@ This directory contains JAR file dependencies that are intended
 ONLY FOR BUILT-TIME usage by the Gradle build.
 
 None are intended to be used as bundles in any project.
+
+
+Get the jars here:
+
+biz.aQute.bnd.gradle : https://plugins.gradle.org/m2/biz/aQute/bnd/biz.aQute.bnd.gradle/
+                       https://search.maven.org/search?q=a:biz.aQute.bnd.gradle
+biz.aQute.bndlib     : https://search.maven.org/search?q=a:biz.aQute.bndlib
+biz.aQute.repository : https://search.maven.org/search?q=a:biz.aQute.repository
+biz.aQute.resolve    : https://search.maven.org/search?q=a:biz.aQute.resolve
+com.github.spotbugs  : https://plugins.gradle.org/m2/gradle/plugin/com/github/spotbugs/spotbugs-gradle-plugin/
diff --git a/lib/info.java/cnf/gradle/dependencies/com.github.spotbugs/spotbugs-gradle-plugin-2.0.0.jar b/lib/info.java/cnf/gradle/dependencies/com.github.spotbugs/spotbugs-gradle-plugin-2.0.0.jar
new file mode 100644 (file)
index 0000000..b186e62
Binary files /dev/null and b/lib/info.java/cnf/gradle/dependencies/com.github.spotbugs/spotbugs-gradle-plugin-2.0.0.jar differ
index dcb38d2..28e2d99 100644 (file)
@@ -23,7 +23,7 @@ setup that is delivered by Bndtools itself.
 
 Among other things it has the following extra features:
 
-* Support for FindBugs
+* Support for SpotBugs
 * Support for JUnit code coverage reports through Jacoco
 * An easily customisable setup
 * Documentation
@@ -107,12 +107,12 @@ Contributions are welcome!
     * [distClean](#BuildTasksDistClean)
     * [distcleanNeeded](#BuildTasksDistCleanNeeded)
   * [Java Projects](#BuildTasksJavaProjects)
-    * [Findbugs](#BuildTasksFindbugs)
-      * [findbugsMain](#BuildTasksFindbugsMain)
-      * [findbugsTest](#BuildTasksFindbugsTest)
-      * [findbugs](#BuildTasksfindbugs)
-      * [findbugstest](#BuildTasksfindbugstest)
-      * [Settings](#FindbugsSettings)
+    * [Spotbugs](#BuildTasksSpotbugs)
+      * [spotbugsMain](#BuildTasksSpotbugsMain)
+      * [spotbugsTest](#BuildTasksSpotbugsTest)
+      * [spotbugs](#BuildTasksSpotbugs)
+      * [spotbugstest](#BuildTasksSpotbugstest)
+      * [Settings](#SpotbugsSettings)
     * [Jacoco](#BuildTasksJacoco)
       * [Settings](#BuildTasksJacocoSettings)
     * [javadoc](#BuildTasksJavadoc)
@@ -123,7 +123,7 @@ Contributions are welcome!
       * [Settings](#BuildTasksRootProjectSettings)
 * [Build Options](#BuildOptions)
   * [Bnd Projects](#BuildOptionsBndProjects)
-  * [Findbugs](#BuildOptionsFindbugs)
+  * [Spotbugs](#BuildOptionsSpotbugs)
 * [Customising The Build](#CustomisingTheBuild)
   * [Gradle](#CustomisingTheBuildGradle)
   * [Bnd](#CustomisingTheBuildBnd)
@@ -537,7 +537,7 @@ The build has the following flow:
 
       * The javaDoc task is setup.
 
-      * The findbugs tasks are setup.
+      * The spotbugs tasks are setup.
 
       * The jacoco task is setup.
 
@@ -793,60 +793,60 @@ This section discusses tasks that are added to all Java projects (which
 includes Bnd projects).
 
 
-### <a name="BuildTasksFindbugs"/>Findbugs
+### <a name="BuildTasksSpotbugs"/>Spotbugs
 
-The findbugs plugin is applied to all Java projects. This plugin adds the
-tasks ```findbugsMain``` and ```findbugsTest```.
+The spotbugs plugin is applied to all Java projects. This plugin adds the
+tasks ```spotbugsMain``` and ```spotbugsTest```.
 
-These two tasks are disabled by default since running findbugs is an
+These two tasks are disabled by default since running spotbugs is an
 expensive operation and is not needed for most builds. Enabling these tasks
 is discussed below.
 
-**Note**: The reports that are generated by the findbugs tasks will only have
+**Note**: The reports that are generated by the spotbugs tasks will only have
 line numbers when the tasks are run on a build that produces artefacts with
 debug information.
 
-#### <a name="BuildTasksFindbugsMain"/>findbugsMain
+#### <a name="BuildTasksSpotbugsMain"/>spotbugsMain
 
-This task will run findbugs on the main source code.
+This task will run spotbugs on the main source code.
 
-#### <a name="BuildTasksFindbugsTest"/>findbugsTest
+#### <a name="BuildTasksSpotbugsTest"/>spotbugsTest
 
-This task will run findbugs on the test source code.
+This task will run spotbugs on the test source code.
 
-#### <a name="BuildTasksfindbugs"/>findbugs
+#### <a name="BuildTasksSpotbugs"/>spotbugs
 
-Specifying this (virtual) task will **enable** the ```findbugsMain``` task.
+Specifying this (virtual) task will **enable** the ```spotbugsMain``` task.
 
 **Note**: It is still required to specify a task that has a dependency on
-the ```findbugsMain``` task to actually run it. The tasks ```check```
+the ```spotbugsMain``` task to actually run it. The tasks ```check```
 and ```build``` are examples of such a task.
 
-#### <a name="BuildTasksfindbugstest"/>findbugstest
+#### <a name="BuildTasksSpotbugstest"/>spotbugstest
 
-Specifying this (virtual) task will **enable** the ```findbugsTest``` task.
+Specifying this (virtual) task will **enable** the ```spotbugsTest``` task.
 
 **Note**: it is still required to specify a task that has a dependency on
-the ```findbugsTest``` task to actually run it. The tasks ```check```
+the ```spotbugsTest``` task to actually run it. The tasks ```check```
 and ```build``` are examples of such a task.
 
-#### <a name="FindbugsSettings"/>Settings
+#### <a name="SpotbugsSettings"/>Settings
 
-* &nbsp;```findbugsReportXML```: The name of the property that must be defined
+* &nbsp;```spotbugsReportXML```: The name of the property that must be defined
                                  in order to generate XML reports instead of
-                                 HTML reports (since the findbugs plugin can't
+                                 HTML reports (since the spotbugs plugin can't
                                  create them both at the same time). Defaults
                                  to **CI**.
 
-* &nbsp;```findbugsIgnoreFailures```: **true** to ignore findbugs warning (to
+* &nbsp;```spotbugsIgnoreFailures```: **true** to ignore spotbugs warning (to
                                       **not** fail the build). Defaults
                                       to **true**.
 
-* &nbsp;```findbugsIncludesFile```: The file with include rules. Defaults
-                                    to ```${rootProject.rootDir}/${rootProject.bnd_cnf}/findbugs/findbugs.include.xml```.
+* &nbsp;```spotbugsIncludesFile```: The file with include rules. Defaults
+                                    to ```${rootProject.rootDir}/${rootProject.bnd_cnf}/spotbugs/spotbugs.include.xml```.
 
-* &nbsp;```findbugsExcludesFile```: The file with exclude rules. Defaults
-                                    to ```{rootProject.rootDir}/${rootProject.bnd_cnf}/findbugs/findbugs.exclude.xml```.
+* &nbsp;```spotbugsExcludesFile```: The file with exclude rules. Defaults
+                                    to ```{rootProject.rootDir}/${rootProject.bnd_cnf}/spotbugs/spotbugs.exclude.xml```.
 
 The defaults for the settings can be overridden by defining the settings in
 the project's ```build-settings.gradle``` file.
@@ -1128,9 +1128,9 @@ the project's ```build-settings.gradle``` file.
   * Absence of the ```-releaserepo``` instruction in any of the Bnd files.
 
 
-## <a name="BuildOptionsFindbugs"/>Findbugs
+## <a name="BuildOptionsSpotbugs"/>Spotbugs
 
-The findbugs tasks will - by default - generate HTML reports, but can be
+The spotbugs tasks will - by default - generate HTML reports, but can be
 instructed to generate XML reports by setting the ```CI``` Gradle system
 property (```-PCI``` on the command line).
 
@@ -1181,7 +1181,7 @@ see [Java Projects](#BuildTasksJavaProjects).
 
 The ```build-settings.gradle``` file shown below can be used as the basis.
 This will setup the Java project with the default Bnd layout and add tasks
-that are relevant to a Java project (```javadoc```, ```findbugs...```, etc.).
+that are relevant to a Java project (```javadoc```, ```spotbugs...```, etc.).
 
 ```
 /*
@@ -1281,7 +1281,7 @@ screenshot):
 
 * build timeout plugin
 * build-name-setter
-* FindBugs Plug-in
+* Warnings Next Generation Plug-in
 * Git Parameter Plug-In
 * GIT plugin
 * Gradle plugin
index 8bd89de..46c3df4 100644 (file)
@@ -9,7 +9,9 @@ This workspace is compatible with all bndtools versions since 3.3.0.REL.
 
 # Changes since bndtools 4.2.0 release
 
-* this: -
+* Replace findbugs by spotbugs.
+  Everything 'findbugs' is renamed to 'spotbugs', except for the
+  XML tags in the ```<cnf>/spotbugs/spotbugs.*.xml``` files.
 
 # Changes since bndtools 4.1.0 release
 
@@ -36,7 +38,7 @@ This workspace is compatible with all bndtools versions since 3.3.0.REL.
 
 # Changes since bndtools 3.3.0 release
 
-* Fix typos in cnf/ext/repositories.bnd
+* Fix typos in ```<cnf>/ext/repositories.bnd```
 
 * update build.bnd
   Main update is to compile with debug information for non-batch builds.
@@ -163,8 +165,8 @@ Below the changes that affect users are detailed.
   when they're invoked and the scope they affect.
 * Default tasks are no longer set up.
 * The build dependencies cache directory is no longer configurable and is fixed
-  to ```cnf/cache```.
-* The build properties in ```cnf/build.gradle.properties``` were moved
+  to ```<cnf>/cache```.
+* The build properties in ```<cnf>/build.gradle.properties``` were moved
   to ```gradle.properties```.
 * Build dependencies now only support '*.uri' properties (configured
   in ```gradle.properties```), support for the '*.location' properties was
@@ -172,7 +174,7 @@ Below the changes that affect users are detailed.
   name-change. It is also no longer needed to list the bnd jar in these
   properties because it is defined in the ```gradle.properties``` file.
 * The template now automatically applies the
-  buildscript ```cnf/gradle/template/javaProject.gradle``` to projects that
+  buildscript ```<cnf>/gradle/template/javaProject.gradle``` to projects that
   hava applied the Gradle Java plugin.
 * The bindex and repoindex properties for the jar and the main class are no
   longer configurable.
@@ -203,8 +205,8 @@ Below the changes that affect users are detailed.
     to ```javadoc...```.
   * The ```gradleBuildFindbugs...``` properties were renamed
     to ```findbugs...```.
-* The findbugs include and exclude files were moved from ```cnf```
-  to ```cnf/findbugs```.
+* The findbugs include and exclude files were moved from ```<cnf>```
+  to ```<cnf>/findbugs```.
 * The official bnd plugin as delivered by the bnd project is now used. This adds
   support for all features that it implements, like setting the Java 8 compiler
   profile (through ```javac.profile``` in a bnd file).
@@ -236,7 +238,7 @@ bndTestSrcBinDir
 bndTargetDir
 ```
 
-* The file ```cnf/gradle/bndLayout.gradle``` was removed. Projects usings it
+* The file ```<cnf>/gradle/bndLayout.gradle``` was removed. Projects usings it
   should manually setup their source sets
   (as described [here](BUILDING-GRADLE.md#AddingJavaProjectsToTheBuild)).
 * The property ```in.ant``` is no longer set to indicate a headless build.
@@ -244,8 +246,8 @@ bndTargetDir
   For example: setting a different release repository in the gradle build can
   be accomplished by
   setting ```-releaserepo:${if;${driver;gradle};ReleaseCI;Release}``` in the
-  file ```cnf/ext/repositories.bnd```.
+  file ```<cnf>/ext/repositories.bnd```.
 * The ```jsr14``` compiler target is no longer directly supported.
   Refer to the official bnd plugin for details.
 * Some task dependencies were adjusted, see
-  the ```cnf/gradle/doc/template.svg``` diagram for details.
+  the ```<cnf>/gradle/doc/template.svg``` diagram for details.
index f6e62ff..0c630cf 100644 (file)
@@ -101,8 +101,8 @@ digraph GradleSetup {
     subgraph cluster110 {
       label="";
       style=invis;
-      findbugsMain         [shape=box, style=filled, fillcolor=orange   , label="findbugsMain"        ]
-      findbugsTest         [shape=box, style=filled, fillcolor=orange   , label="findbugsTest"        ]
+      spotbugsMain         [shape=box, style=filled, fillcolor=orange   , label="spotbugsMain"        ]
+      spotbugsTest         [shape=box, style=filled, fillcolor=orange   , label="spotbugsTest"        ]
     }
 
     javadoc                [shape=box, style=filled, fillcolor=orange   , label="javadoc"             ]
@@ -150,10 +150,10 @@ digraph GradleSetup {
     clean                  -> cleanNeeded
     cleanNeeded            -> cleanNeeded        [color=red   ]
 
-    assemble               -> findbugsMain
-    test                   -> findbugsTest
-    findbugsMain           -> check              [color=green ]
-    findbugsTest           -> check              [color=green ]
+    assemble               -> spotbugsMain
+    test                   -> spotbugsTest
+    spotbugsMain           -> check              [color=green ]
+    spotbugsTest           -> check              [color=green ]
     test                   -> jacocoTestReport   [color=magenta]
     check                  -> jacocoTestReport   [color=magenta]
   }
index 699b7b0..d85a607 100644 (file)
@@ -4,16 +4,16 @@
 <!-- Generated by graphviz version 2.40.1 (0)
  -->
 <!-- Title: GradleSetup Pages: 1 -->
-<svg width="1712pt" height="752pt"
- viewBox="0.00 0.00 1712.00 752.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="1450pt" height="752pt"
+ viewBox="0.00 0.00 1450.00 752.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 748)">
 <title>GradleSetup</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-748 1708,-748 1708,4 -4,4"/>
-<text text-anchor="middle" x="76.5" y="-728.8" font-family="Times,serif" font-size="14.00" fill="#000000">Gradle Build Setup</text>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-748 1446,-748 1446,4 -4,4"/>
+<text text-anchor="middle" x="64" y="-728.8" font-family="Times,serif" font-size="14.00" fill="#000000">Gradle Build Setup</text>
 <g id="clust1" class="cluster">
 <title>cluster1</title>
-<polygon fill="#d3d3d3" stroke="#000000" points="8,-8 8,-713 1428,-713 1428,-8 8,-8"/>
-<text text-anchor="middle" x="116.5" y="-15.8" font-family="Times,serif" font-size="14.00" fill="#000000">Java Projects / Bnd Projects</text>
+<polygon fill="#d3d3d3" stroke="#000000" points="8,-8 8,-713 1202,-713 1202,-8 8,-8"/>
+<text text-anchor="middle" x="95.5" y="-15.8" font-family="Times,serif" font-size="14.00" fill="#000000">Java Projects / Bnd Projects</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster101</title>
 </g>
 <g id="clust12" class="cluster">
 <title>cluster2</title>
-<polygon fill="#d3d3d3" stroke="#000000" points="1436,-387 1436,-622 1696,-622 1696,-387 1436,-387"/>
-<text text-anchor="middle" x="1486" y="-394.8" font-family="Times,serif" font-size="14.00" fill="#000000">All Projects</text>
+<polygon fill="#d3d3d3" stroke="#000000" points="1210,-387 1210,-622 1434,-622 1434,-387 1210,-387"/>
+<text text-anchor="middle" x="1251.5" y="-394.8" font-family="Times,serif" font-size="14.00" fill="#000000">All Projects</text>
 </g>
 <g id="clust13" class="cluster">
 <title>cluster201</title>
 </g>
 <g id="clust14" class="cluster">
 <title>cluster3</title>
-<polygon fill="#d3d3d3" stroke="#000000" points="1483,-630 1483,-705 1649,-705 1649,-630 1483,-630"/>
-<text text-anchor="middle" x="1536" y="-637.8" font-family="Times,serif" font-size="14.00" fill="#000000">Root Project</text>
+<polygon fill="#d3d3d3" stroke="#000000" points="1246,-630 1246,-705 1398,-705 1398,-630 1246,-630"/>
+<text text-anchor="middle" x="1290.5" y="-637.8" font-family="Times,serif" font-size="14.00" fill="#000000">Root Project</text>
 </g>
 <!-- compileJava -->
 <g id="node1" class="node">
 <title>compileJava</title>
-<polygon fill="#e0ffff" stroke="#000000" points="698,-697 594,-697 594,-661 698,-661 698,-697"/>
-<text text-anchor="middle" x="646" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">compileJava</text>
+<polygon fill="#e0ffff" stroke="#000000" points="604.5,-697 517.5,-697 517.5,-661 604.5,-661 604.5,-697"/>
+<text text-anchor="middle" x="561" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">compileJava</text>
 </g>
 <!-- classes -->
 <g id="node3" class="node">
 <title>classes</title>
-<polygon fill="#e0ffff" stroke="#000000" points="537,-606 469,-606 469,-570 537,-570 537,-606"/>
-<text text-anchor="middle" x="503" y="-584.3" font-family="Times,serif" font-size="14.00" fill="#000000">classes</text>
+<polygon fill="#e0ffff" stroke="#000000" points="468,-606 414,-606 414,-570 468,-570 468,-606"/>
+<text text-anchor="middle" x="441" y="-584.3" font-family="Times,serif" font-size="14.00" fill="#000000">classes</text>
 </g>
 <!-- compileJava&#45;&gt;classes -->
 <g id="edge1" class="edge">
 <title>compileJava&#45;&gt;classes</title>
-<path fill="none" stroke="#000000" d="M625.6214,-660.8935C614.1264,-651.1339 599.2489,-639.2349 585,-630 572.9031,-622.1599 559.1606,-614.6345 546.4304,-608.174"/>
-<polygon fill="#000000" stroke="#000000" points="547.8898,-604.9909 537.3778,-603.6687 544.7709,-611.2577 547.8898,-604.9909"/>
+<path fill="none" stroke="#000000" d="M543.1017,-660.8828C533.1617,-651.2332 520.3413,-639.4418 508,-630 498.3019,-622.5804 487.2549,-615.2464 476.967,-608.8343"/>
+<polygon fill="#000000" stroke="#000000" points="478.5318,-605.6887 468.1745,-603.4578 474.88,-611.6607 478.5318,-605.6887"/>
 </g>
 <!-- processResources -->
 <g id="node2" class="node">
 <title>processResources</title>
-<polygon fill="#e0ffff" stroke="#000000" points="576,-697 430,-697 430,-661 576,-661 576,-697"/>
-<text text-anchor="middle" x="503" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">processResources</text>
+<polygon fill="#e0ffff" stroke="#000000" points="499,-697 383,-697 383,-661 499,-661 499,-697"/>
+<text text-anchor="middle" x="441" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">processResources</text>
 </g>
 <!-- processResources&#45;&gt;classes -->
 <g id="edge2" class="edge">
 <title>processResources&#45;&gt;classes</title>
-<path fill="none" stroke="#000000" d="M503,-660.5848C503,-647.9209 503,-630.8558 503,-616.4541"/>
-<polygon fill="#000000" stroke="#000000" points="506.5001,-616.0772 503,-606.0773 499.5001,-616.0773 506.5001,-616.0772"/>
+<path fill="none" stroke="#000000" d="M441,-660.5848C441,-647.9209 441,-630.8558 441,-616.4541"/>
+<polygon fill="#000000" stroke="#000000" points="444.5001,-616.0772 441,-606.0773 437.5001,-616.0773 444.5001,-616.0772"/>
 </g>
 <!-- jar -->
 <g id="node4" class="node">
 <title>jar</title>
-<polygon fill="#00ffff" stroke="#000000" points="634,-534 580,-534 580,-498 634,-498 634,-534"/>
-<text text-anchor="middle" x="607" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">jar</text>
+<polygon fill="#00ffff" stroke="#000000" points="551,-534 497,-534 497,-498 551,-498 551,-534"/>
+<text text-anchor="middle" x="524" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">jar</text>
 </g>
 <!-- classes&#45;&gt;jar -->
 <g id="edge4" class="edge">
 <title>classes&#45;&gt;jar</title>
-<path fill="none" stroke="#000000" d="M529.2436,-569.8314C542.2995,-560.7927 558.2535,-549.7476 572.3047,-540.0198"/>
-<polygon fill="#000000" stroke="#000000" points="574.5351,-542.7326 580.7648,-534.1628 570.5506,-536.9773 574.5351,-542.7326"/>
+<path fill="none" stroke="#000000" d="M461.9444,-569.8314C472.0691,-561.0485 484.3777,-550.3712 495.3548,-540.8489"/>
+<polygon fill="#000000" stroke="#000000" points="497.8019,-543.3595 503.0623,-534.1628 493.2149,-538.0718 497.8019,-543.3595"/>
 </g>
 <!-- compileTestJava -->
 <g id="node5" class="node">
 <title>compileTestJava</title>
-<polygon fill="#e0ffff" stroke="#000000" points="504,-534 370,-534 370,-498 504,-498 504,-534"/>
-<text text-anchor="middle" x="437" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">compileTestJava</text>
+<polygon fill="#e0ffff" stroke="#000000" points="431,-534 321,-534 321,-498 431,-498 431,-534"/>
+<text text-anchor="middle" x="376" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">compileTestJava</text>
 </g>
 <!-- classes&#45;&gt;compileTestJava -->
 <g id="edge3" class="edge">
 <title>classes&#45;&gt;compileTestJava</title>
-<path fill="none" stroke="#000000" d="M486.3454,-569.8314C478.5886,-561.3694 469.2198,-551.1489 460.739,-541.8971"/>
-<polygon fill="#000000" stroke="#000000" points="463.2162,-539.4198 453.8788,-534.4133 458.0561,-544.1499 463.2162,-539.4198"/>
+<path fill="none" stroke="#000000" d="M424.5978,-569.8314C416.9585,-561.3694 407.7317,-551.1489 399.3793,-541.8971"/>
+<polygon fill="#000000" stroke="#000000" points="401.9221,-539.4906 392.6231,-534.4133 396.7262,-544.1813 401.9221,-539.4906"/>
 </g>
 <!-- test -->
 <g id="node8" class="node">
 <title>test</title>
-<polygon fill="#e0ffff" stroke="#000000" points="138,-371 84,-371 84,-335 138,-335 138,-371"/>
-<text text-anchor="middle" x="111" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">test</text>
+<polygon fill="#e0ffff" stroke="#000000" points="129,-371 75,-371 75,-335 129,-335 129,-371"/>
+<text text-anchor="middle" x="102" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">test</text>
 </g>
 <!-- classes&#45;&gt;test -->
 <g id="edge5" class="edge">
 <title>classes&#45;&gt;test</title>
-<path fill="none" stroke="#000000" d="M468.739,-585.52C386.8442,-579.293 184.8353,-562.0548 162,-542 115.6047,-501.254 109.3756,-423.1475 109.6689,-381.2334"/>
-<polygon fill="#000000" stroke="#000000" points="113.1696,-381.2273 109.8715,-371.1589 106.171,-381.0864 113.1696,-381.2273"/>
+<path fill="none" stroke="#000000" d="M413.7825,-587.3739C349.213,-585.3267 189.3063,-576.782 151,-542 105.4051,-500.5999 99.8477,-422.7677 100.4634,-381.068"/>
+<polygon fill="#000000" stroke="#000000" points="103.9627,-381.141 100.7422,-371.0475 96.9654,-380.9463 103.9627,-381.141"/>
 </g>
 <!-- uploadArchives -->
 <g id="node9" class="node">
 <title>uploadArchives</title>
-<polygon fill="#e0ffff" stroke="#000000" points="671,-462 543,-462 543,-426 671,-426 671,-462"/>
-<text text-anchor="middle" x="607" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">uploadArchives</text>
+<polygon fill="#e0ffff" stroke="#000000" points="577.5,-462 470.5,-462 470.5,-426 577.5,-426 577.5,-462"/>
+<text text-anchor="middle" x="524" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">uploadArchives</text>
 </g>
 <!-- jar&#45;&gt;uploadArchives -->
 <g id="edge8" class="edge">
 <title>jar&#45;&gt;uploadArchives</title>
-<path fill="none" stroke="#000000" d="M607,-497.8314C607,-490.131 607,-480.9743 607,-472.4166"/>
-<polygon fill="#000000" stroke="#000000" points="610.5001,-472.4132 607,-462.4133 603.5001,-472.4133 610.5001,-472.4132"/>
+<path fill="none" stroke="#000000" d="M524,-497.8314C524,-490.131 524,-480.9743 524,-472.4166"/>
+<polygon fill="#000000" stroke="#000000" points="527.5001,-472.4132 524,-462.4133 520.5001,-472.4133 527.5001,-472.4132"/>
 </g>
 <!-- assemble -->
 <g id="node10" class="node">
 <title>assemble</title>
-<polygon fill="#e0ffff" stroke="#000000" points="772.5,-462 689.5,-462 689.5,-426 772.5,-426 772.5,-462"/>
-<text text-anchor="middle" x="731" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">assemble</text>
+<polygon fill="#e0ffff" stroke="#000000" points="664,-462 596,-462 596,-426 664,-426 664,-462"/>
+<text text-anchor="middle" x="630" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">assemble</text>
 </g>
 <!-- jar&#45;&gt;assemble -->
 <g id="edge9" class="edge">
 <title>jar&#45;&gt;assemble</title>
-<path fill="none" stroke="#000000" d="M634.2123,-500.1993C650.8768,-490.5231 672.4988,-477.9685 691.0782,-467.1804"/>
-<polygon fill="#000000" stroke="#000000" points="693.0292,-470.0949 699.9196,-462.0467 689.5142,-464.0413 693.0292,-470.0949"/>
+<path fill="none" stroke="#000000" d="M550.7483,-497.8314C564.0553,-488.7927 580.316,-477.7476 594.6375,-468.0198"/>
+<polygon fill="#000000" stroke="#000000" points="596.9547,-470.677 603.2603,-462.1628 593.0215,-464.8864 596.9547,-470.677"/>
 </g>
 <!-- testClasses -->
 <g id="node7" class="node">
 <title>testClasses</title>
-<polygon fill="#e0ffff" stroke="#000000" points="312.5,-462 213.5,-462 213.5,-426 312.5,-426 312.5,-462"/>
-<text text-anchor="middle" x="263" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">testClasses</text>
+<polygon fill="#e0ffff" stroke="#000000" points="271.5,-462 194.5,-462 194.5,-426 271.5,-426 271.5,-462"/>
+<text text-anchor="middle" x="233" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">testClasses</text>
 </g>
 <!-- compileTestJava&#45;&gt;testClasses -->
 <g id="edge6" class="edge">
 <title>compileTestJava&#45;&gt;testClasses</title>
-<path fill="none" stroke="#000000" d="M393.0925,-497.8314C369.7176,-488.159 340.7903,-476.1891 316.1532,-465.9944"/>
-<polygon fill="#000000" stroke="#000000" points="317.1702,-462.6275 306.5918,-462.038 314.4937,-469.0956 317.1702,-462.6275"/>
+<path fill="none" stroke="#000000" d="M339.9151,-497.8314C321.2011,-488.4089 298.1568,-476.8062 278.26,-466.7883"/>
+<polygon fill="#000000" stroke="#000000" points="279.5792,-463.5339 269.0734,-462.1628 276.4311,-469.7861 279.5792,-463.5339"/>
 </g>
 <!-- processTestResources -->
 <g id="node6" class="node">
 <title>processTestResources</title>
-<polygon fill="#e0ffff" stroke="#000000" points="351.5,-534 174.5,-534 174.5,-498 351.5,-498 351.5,-534"/>
-<text text-anchor="middle" x="263" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">processTestResources</text>
+<polygon fill="#e0ffff" stroke="#000000" points="303,-534 163,-534 163,-498 303,-498 303,-534"/>
+<text text-anchor="middle" x="233" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">processTestResources</text>
 </g>
 <!-- processTestResources&#45;&gt;testClasses -->
 <g id="edge7" class="edge">
 <title>processTestResources&#45;&gt;testClasses</title>
-<path fill="none" stroke="#000000" d="M263,-497.8314C263,-490.131 263,-480.9743 263,-472.4166"/>
-<polygon fill="#000000" stroke="#000000" points="266.5001,-472.4132 263,-462.4133 259.5001,-472.4133 266.5001,-472.4132"/>
+<path fill="none" stroke="#000000" d="M233,-497.8314C233,-490.131 233,-480.9743 233,-472.4166"/>
+<polygon fill="#000000" stroke="#000000" points="236.5001,-472.4132 233,-462.4133 229.5001,-472.4133 236.5001,-472.4132"/>
 </g>
 <!-- testClasses&#45;&gt;test -->
 <g id="edge10" class="edge">
 <title>testClasses&#45;&gt;test</title>
-<path fill="none" stroke="#000000" d="M232.6059,-425.8035C207.8839,-411.0029 172.9453,-390.0857 146.8574,-374.4673"/>
-<polygon fill="#000000" stroke="#000000" points="148.4079,-371.3163 138.0302,-369.1825 144.8122,-377.3222 148.4079,-371.3163"/>
+<path fill="none" stroke="#000000" d="M206.805,-425.8035C186.6346,-411.792 158.573,-392.2988 136.5624,-377.009"/>
+<polygon fill="#000000" stroke="#000000" points="138.3593,-373.9956 128.1496,-371.165 134.3656,-379.7446 138.3593,-373.9956"/>
 </g>
 <!-- check -->
 <g id="node12" class="node">
 <title>check</title>
-<polygon fill="#00ffff" stroke="#000000" points="383.5,-227 324.5,-227 324.5,-191 383.5,-191 383.5,-227"/>
-<text text-anchor="middle" x="354" y="-205.3" font-family="Times,serif" font-size="14.00" fill="#000000">check</text>
+<polygon fill="#00ffff" stroke="#000000" points="342,-227 288,-227 288,-191 342,-191 342,-227"/>
+<text text-anchor="middle" x="315" y="-205.3" font-family="Times,serif" font-size="14.00" fill="#000000">check</text>
 </g>
 <!-- test&#45;&gt;check -->
 <g id="edge14" class="edge">
 <title>test&#45;&gt;check</title>
-<path fill="none" stroke="#000000" d="M83.8097,-341.9858C69.163,-334.4811 52.413,-322.9811 44,-307 33.2342,-286.5496 28.5046,-272.1469 44,-255 83.3152,-211.4945 244.1627,-241.5817 314.1963,-228.0082"/>
-<polygon fill="#000000" stroke="#000000" points="315.3509,-231.3292 324.2351,-225.5568 313.6903,-224.529 315.3509,-231.3292"/>
+<path fill="none" stroke="#000000" d="M74.7535,-338.8186C63.0032,-331.1264 50.4864,-320.4232 44,-307 33.9446,-286.191 28.634,-272.2629 44,-255 77.7482,-217.0856 216.6287,-240.9759 278.056,-228.1539"/>
+<polygon fill="#000000" stroke="#000000" points="279.136,-231.4885 287.9039,-225.5409 277.3407,-224.7226 279.136,-231.4885"/>
 </g>
-<!-- findbugsTest -->
+<!-- spotbugsTest -->
 <g id="node28" class="node">
-<title>findbugsTest</title>
-<polygon fill="#ffa500" stroke="#000000" points="166,-299 56,-299 56,-263 166,-263 166,-299"/>
-<text text-anchor="middle" x="111" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">findbugsTest</text>
+<title>spotbugsTest</title>
+<polygon fill="#ffa500" stroke="#000000" points="148,-299 56,-299 56,-263 148,-263 148,-299"/>
+<text text-anchor="middle" x="102" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">spotbugsTest</text>
 </g>
-<!-- test&#45;&gt;findbugsTest -->
+<!-- test&#45;&gt;spotbugsTest -->
 <g id="edge37" class="edge">
-<title>test&#45;&gt;findbugsTest</title>
-<path fill="none" stroke="#000000" d="M111,-334.8314C111,-327.131 111,-317.9743 111,-309.4166"/>
-<polygon fill="#000000" stroke="#000000" points="114.5001,-309.4132 111,-299.4133 107.5001,-309.4133 114.5001,-309.4132"/>
+<title>test&#45;&gt;spotbugsTest</title>
+<path fill="none" stroke="#000000" d="M102,-334.8314C102,-327.131 102,-317.9743 102,-309.4166"/>
+<polygon fill="#000000" stroke="#000000" points="105.5001,-309.4132 102,-299.4133 98.5001,-309.4133 105.5001,-309.4132"/>
 </g>
 <!-- jacocoTestReport -->
 <g id="node34" class="node">
 <title>jacocoTestReport</title>
-<polygon fill="#ffa500" stroke="#000000" points="232,-155 90,-155 90,-119 232,-119 232,-155"/>
-<text text-anchor="middle" x="161" y="-133.3" font-family="Times,serif" font-size="14.00" fill="#000000">jacocoTestReport</text>
+<polygon fill="#ffa500" stroke="#000000" points="201,-155 85,-155 85,-119 201,-119 201,-155"/>
+<text text-anchor="middle" x="143" y="-133.3" font-family="Times,serif" font-size="14.00" fill="#000000">jacocoTestReport</text>
 </g>
 <!-- test&#45;&gt;jacocoTestReport -->
 <g id="edge40" class="edge">
 <title>test&#45;&gt;jacocoTestReport</title>
-<path fill="none" stroke="#ff00ff" d="M83.9211,-345.3294C65.4321,-338.5221 42.3122,-326.5535 31,-307 19.4268,-286.9954 21.6422,-276.1319 31,-255 49.1625,-213.9852 89.4035,-181.1312 120.3369,-160.6093"/>
-<polygon fill="#ff00ff" stroke="#ff00ff" points="122.2867,-163.5165 128.7888,-155.1515 118.4893,-157.636 122.2867,-163.5165"/>
+<path fill="none" stroke="#ff00ff" d="M74.6812,-343.0665C58.8473,-335.7306 40.2599,-324.0329 31,-307 19.9615,-286.6955 22.4349,-276.4654 31,-255 46.5575,-216.0105 81.8011,-182.5202 108.6288,-161.2855"/>
+<polygon fill="#ff00ff" stroke="#ff00ff" points="110.8725,-163.9751 116.6534,-155.0964 106.5974,-158.4322 110.8725,-163.9751"/>
 </g>
 <!-- assemble&#45;&gt;compileJava -->
 <g id="edge22" class="edge">
 <title>assemble&#45;&gt;compileJava</title>
-<path fill="none" stroke="#ff0000" d="M724.4491,-462.1113C709.6564,-503.0087 673.5892,-602.724 655.9896,-651.3817"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="652.6388,-650.3559 652.5287,-660.9502 659.2214,-652.7369 652.6388,-650.3559"/>
+<path fill="none" stroke="#ff0000" d="M624.6822,-462.1113C612.6992,-502.9231 583.5184,-602.3071 569.1991,-651.0756"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="565.7588,-650.3691 566.2997,-660.9502 572.4753,-652.3413 565.7588,-650.3691"/>
 </g>
 <!-- testOSGi -->
 <g id="node11" class="node">
 <title>testOSGi</title>
-<polygon fill="#00ffff" stroke="#000000" points="432,-299 350,-299 350,-263 432,-263 432,-299"/>
-<text text-anchor="middle" x="391" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">testOSGi</text>
+<polygon fill="#00ffff" stroke="#000000" points="378,-299 310,-299 310,-263 378,-263 378,-299"/>
+<text text-anchor="middle" x="344" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">testOSGi</text>
 </g>
 <!-- assemble&#45;&gt;testOSGi -->
 <g id="edge12" class="edge">
 <title>assemble&#45;&gt;testOSGi</title>
-<path fill="none" stroke="#000000" d="M720.3778,-425.7648C711.4718,-412.3906 697.4244,-395.1921 680,-387 637.7374,-367.1301 511.7376,-399.9501 470,-379 439.9593,-363.9211 417.4991,-331.5856 404.3545,-308.1726"/>
-<polygon fill="#000000" stroke="#000000" points="407.2777,-306.2188 399.4564,-299.0719 401.1137,-309.5363 407.2777,-306.2188"/>
+<path fill="none" stroke="#000000" d="M621.726,-425.8714C614.5837,-412.5545 602.9004,-395.381 587,-387 552.5616,-368.8477 446.0713,-397.8322 412,-379 384.4059,-363.7479 365.5821,-331.9749 354.8568,-308.7265"/>
+<polygon fill="#000000" stroke="#000000" points="357.9716,-307.114 350.7541,-299.3578 351.5595,-309.922 357.9716,-307.114"/>
 </g>
 <!-- release -->
 <g id="node14" class="node">
 <title>release</title>
-<polygon fill="#00ffff" stroke="#000000" points="601,-371 533,-371 533,-335 601,-335 601,-371"/>
-<text text-anchor="middle" x="567" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">release</text>
+<polygon fill="#00ffff" stroke="#000000" points="520,-371 466,-371 466,-335 520,-335 520,-371"/>
+<text text-anchor="middle" x="493" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">release</text>
 </g>
 <!-- assemble&#45;&gt;release -->
 <g id="edge23" class="edge">
 <title>assemble&#45;&gt;release</title>
-<path fill="none" stroke="#000000" d="M719.6466,-425.9088C710.5404,-412.9745 696.5687,-396.276 680,-387 662.6568,-377.2904 655.1555,-384.3036 636,-379 627.7533,-376.7167 619.1089,-373.8532 610.8368,-370.8681"/>
-<polygon fill="#000000" stroke="#000000" points="611.9359,-367.5427 601.3431,-367.3355 609.4947,-374.1032 611.9359,-367.5427"/>
+<path fill="none" stroke="#000000" d="M620.8033,-425.8485C613.3895,-413.0581 601.7754,-396.5668 587,-387 573.6058,-378.3275 567.1472,-384.0178 552,-379 544.6948,-376.58 537.0582,-373.5847 529.7949,-370.4975"/>
+<polygon fill="#000000" stroke="#000000" points="530.7513,-367.0948 520.1881,-366.2763 527.9353,-373.5034 530.7513,-367.0948"/>
 </g>
 <!-- testrunX -->
 <g id="node16" class="node">
 <title>testrunX</title>
-<polygon fill="#00ffff" stroke="#000000" points="1399.5,-371 1266.5,-371 1262.5,-367 1262.5,-335 1395.5,-335 1399.5,-339 1399.5,-371"/>
-<polyline fill="none" stroke="#000000" points="1395.5,-367 1262.5,-367 "/>
-<polyline fill="none" stroke="#000000" points="1395.5,-367 1395.5,-335 "/>
-<polyline fill="none" stroke="#000000" points="1395.5,-367 1399.5,-371 "/>
-<text text-anchor="middle" x="1331" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">testrun.&lt;name&gt;</text>
+<polygon fill="#00ffff" stroke="#000000" points="1174,-371 1072,-371 1068,-367 1068,-335 1170,-335 1174,-339 1174,-371"/>
+<polyline fill="none" stroke="#000000" points="1170,-367 1068,-367 "/>
+<polyline fill="none" stroke="#000000" points="1170,-367 1170,-335 "/>
+<polyline fill="none" stroke="#000000" points="1170,-367 1174,-371 "/>
+<text text-anchor="middle" x="1121" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">testrun.&lt;name&gt;</text>
 </g>
 <!-- assemble&#45;&gt;testrunX -->
 <g id="edge29" class="edge">
 <title>assemble&#45;&gt;testrunX</title>
-<path fill="none" stroke="#000000" d="M772.5138,-441.6959C861.6571,-436.1273 1077.6107,-419.3053 1254,-379 1260.1382,-377.5974 1266.4761,-375.8938 1272.7577,-374.0367"/>
-<polygon fill="#000000" stroke="#000000" points="1274.024,-377.3088 1282.5455,-371.0132 1271.9579,-370.6206 1274.024,-377.3088"/>
+<path fill="none" stroke="#000000" d="M664.2495,-441.69C737.7512,-436.1102 915.5823,-419.2678 1059,-379 1063.3528,-377.7779 1067.8077,-376.3303 1072.2343,-374.7536"/>
+<polygon fill="#000000" stroke="#000000" points="1073.7088,-377.9382 1081.8289,-371.1327 1071.2372,-371.389 1073.7088,-377.9382"/>
 </g>
 <!-- runX -->
 <g id="node17" class="node">
 <title>runX</title>
-<polygon fill="#00ffff" stroke="#000000" points="1244.5,-371 1139.5,-371 1135.5,-367 1135.5,-335 1240.5,-335 1244.5,-339 1244.5,-371"/>
-<polyline fill="none" stroke="#000000" points="1240.5,-367 1135.5,-367 "/>
-<polyline fill="none" stroke="#000000" points="1240.5,-367 1240.5,-335 "/>
-<polyline fill="none" stroke="#000000" points="1240.5,-367 1244.5,-371 "/>
-<text text-anchor="middle" x="1190" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">run.&lt;name&gt;</text>
+<polygon fill="#00ffff" stroke="#000000" points="1049.5,-371 966.5,-371 962.5,-367 962.5,-335 1045.5,-335 1049.5,-339 1049.5,-371"/>
+<polyline fill="none" stroke="#000000" points="1045.5,-367 962.5,-367 "/>
+<polyline fill="none" stroke="#000000" points="1045.5,-367 1045.5,-335 "/>
+<polyline fill="none" stroke="#000000" points="1045.5,-367 1049.5,-371 "/>
+<text text-anchor="middle" x="1006" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">run.&lt;name&gt;</text>
 </g>
 <!-- assemble&#45;&gt;runX -->
 <g id="edge28" class="edge">
 <title>assemble&#45;&gt;runX</title>
-<path fill="none" stroke="#000000" d="M772.6023,-440.2323C845.3408,-432.9674 999.8993,-414.5096 1126,-379 1130.5924,-377.7068 1135.3029,-376.1877 1139.984,-374.5441"/>
-<polygon fill="#000000" stroke="#000000" points="1141.336,-377.7759 1149.504,-371.028 1138.9107,-371.2095 1141.336,-377.7759"/>
+<path fill="none" stroke="#000000" d="M664.2312,-440.0565C724.0353,-432.5229 850.9018,-413.6667 953,-379 956.3027,-377.8786 959.6638,-376.5959 963.0096,-375.2146"/>
+<polygon fill="#000000" stroke="#000000" points="964.5917,-378.3424 972.3365,-371.1127 961.7736,-371.9347 964.5917,-378.3424"/>
 </g>
 <!-- resolveX -->
 <g id="node18" class="node">
 <title>resolveX</title>
-<polygon fill="#00ffff" stroke="#000000" points="1117,-371 985,-371 981,-367 981,-335 1113,-335 1117,-339 1117,-371"/>
-<polyline fill="none" stroke="#000000" points="1113,-367 981,-367 "/>
-<polyline fill="none" stroke="#000000" points="1113,-367 1113,-335 "/>
-<polyline fill="none" stroke="#000000" points="1113,-367 1117,-371 "/>
-<text text-anchor="middle" x="1049" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">resolve.&lt;name&gt;</text>
+<polygon fill="#00ffff" stroke="#000000" points="944,-371 840,-371 836,-367 836,-335 940,-335 944,-339 944,-371"/>
+<polyline fill="none" stroke="#000000" points="940,-367 836,-367 "/>
+<polyline fill="none" stroke="#000000" points="940,-367 940,-335 "/>
+<polyline fill="none" stroke="#000000" points="940,-367 944,-371 "/>
+<text text-anchor="middle" x="890" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">resolve.&lt;name&gt;</text>
 </g>
 <!-- assemble&#45;&gt;resolveX -->
 <g id="edge26" class="edge">
 <title>assemble&#45;&gt;resolveX</title>
-<path fill="none" stroke="#000000" d="M772.5883,-433.6214C820.8012,-421.3961 902.5392,-400.072 972,-379 976.9367,-377.5024 982.0338,-375.9022 987.145,-374.2593"/>
-<polygon fill="#000000" stroke="#000000" points="988.5295,-377.4894 996.9528,-371.063 986.3604,-370.8339 988.5295,-377.4894"/>
+<path fill="none" stroke="#000000" d="M664.0731,-433.5853C703.5558,-421.3266 770.4375,-399.9715 827,-379 830.6403,-377.6503 834.3825,-376.2194 838.1405,-374.7504"/>
+<polygon fill="#000000" stroke="#000000" points="839.4652,-377.9903 847.4658,-371.0447 836.8801,-371.4851 839.4652,-377.9903"/>
 </g>
 <!-- exportX -->
 <g id="node20" class="node">
 <title>exportX</title>
-<polygon fill="#00ffff" stroke="#000000" points="962.5,-371 835.5,-371 831.5,-367 831.5,-335 958.5,-335 962.5,-339 962.5,-371"/>
-<polyline fill="none" stroke="#000000" points="958.5,-367 831.5,-367 "/>
-<polyline fill="none" stroke="#000000" points="958.5,-367 958.5,-335 "/>
-<polyline fill="none" stroke="#000000" points="958.5,-367 962.5,-371 "/>
-<text text-anchor="middle" x="897" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">export.&lt;name&gt;</text>
+<polygon fill="#00ffff" stroke="#000000" points="818,-371 718,-371 714,-367 714,-335 814,-335 818,-339 818,-371"/>
+<polyline fill="none" stroke="#000000" points="814,-367 714,-367 "/>
+<polyline fill="none" stroke="#000000" points="814,-367 814,-335 "/>
+<polyline fill="none" stroke="#000000" points="814,-367 818,-371 "/>
+<text text-anchor="middle" x="766" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">export.&lt;name&gt;</text>
 </g>
 <!-- assemble&#45;&gt;exportX -->
 <g id="edge24" class="edge">
 <title>assemble&#45;&gt;exportX</title>
-<path fill="none" stroke="#000000" d="M764.1936,-425.8035C790.4039,-411.4352 827.1295,-391.3025 855.3189,-375.8493"/>
-<polygon fill="#000000" stroke="#000000" points="857.0608,-378.8858 864.1472,-371.0097 853.6959,-372.7476 857.0608,-378.8858"/>
+<path fill="none" stroke="#000000" d="M657.1948,-425.8035C678.2277,-411.73 707.5257,-392.1262 730.4214,-376.8063"/>
+<polygon fill="#000000" stroke="#000000" points="732.4877,-379.635 738.8524,-371.165 728.5949,-373.8172 732.4877,-379.635"/>
 </g>
 <!-- runbundlesX -->
 <g id="node22" class="node">
 <title>runbundlesX</title>
-<polygon fill="#00ffff" stroke="#000000" points="813.5,-371 652.5,-371 648.5,-367 648.5,-335 809.5,-335 813.5,-339 813.5,-371"/>
-<polyline fill="none" stroke="#000000" points="809.5,-367 648.5,-367 "/>
-<polyline fill="none" stroke="#000000" points="809.5,-367 809.5,-335 "/>
-<polyline fill="none" stroke="#000000" points="809.5,-367 813.5,-371 "/>
-<text text-anchor="middle" x="731" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">runbundles.&lt;name&gt;</text>
+<polygon fill="#00ffff" stroke="#000000" points="696,-371 568,-371 564,-367 564,-335 692,-335 696,-339 696,-371"/>
+<polyline fill="none" stroke="#000000" points="692,-367 564,-367 "/>
+<polyline fill="none" stroke="#000000" points="692,-367 692,-335 "/>
+<polyline fill="none" stroke="#000000" points="692,-367 696,-371 "/>
+<text text-anchor="middle" x="630" y="-349.3" font-family="Times,serif" font-size="14.00" fill="#000000">runbundles.&lt;name&gt;</text>
 </g>
 <!-- assemble&#45;&gt;runbundlesX -->
 <g id="edge30" class="edge">
 <title>assemble&#45;&gt;runbundlesX</title>
-<path fill="none" stroke="#000000" d="M731,-425.5848C731,-412.9209 731,-395.8558 731,-381.4541"/>
-<polygon fill="#000000" stroke="#000000" points="734.5001,-381.0772 731,-371.0773 727.5001,-381.0773 734.5001,-381.0772"/>
+<path fill="none" stroke="#000000" d="M630,-425.5848C630,-412.9209 630,-395.8558 630,-381.4541"/>
+<polygon fill="#000000" stroke="#000000" points="633.5001,-381.0772 630,-371.0773 626.5001,-381.0773 633.5001,-381.0772"/>
 </g>
 <!-- build -->
 <g id="node24" class="node">
 <title>build</title>
-<polygon fill="#e0ffff" stroke="#000000" points="973,-155 919,-155 919,-119 973,-119 973,-155"/>
-<text text-anchor="middle" x="946" y="-133.3" font-family="Times,serif" font-size="14.00" fill="#000000">build</text>
+<polygon fill="#e0ffff" stroke="#000000" points="829,-155 775,-155 775,-119 829,-119 829,-155"/>
+<text text-anchor="middle" x="802" y="-133.3" font-family="Times,serif" font-size="14.00" fill="#000000">build</text>
 </g>
 <!-- assemble&#45;&gt;build -->
 <g id="edge11" class="edge">
 <title>assemble&#45;&gt;build</title>
-<path fill="none" stroke="#000000" d="M772.5225,-443.2109C913.7049,-440.1041 1368.8587,-426.4551 1412,-379 1449.0719,-338.2212 1445.8503,-298.4902 1412,-255 1358.6548,-186.4631 1084.0214,-151.3715 983.1869,-140.645"/>
-<polygon fill="#000000" stroke="#000000" points="983.4614,-137.1547 973.152,-139.5974 982.7345,-144.1169 983.4614,-137.1547"/>
+<path fill="none" stroke="#000000" d="M664.327,-442.5889C780.1336,-437.481 1151.1523,-418.1589 1186,-379 1222.6372,-337.8302 1218.7497,-299.3248 1186,-255 1143.9338,-198.066 927.127,-157.228 839.1553,-142.7584"/>
+<polygon fill="#000000" stroke="#000000" points="839.5175,-139.2714 829.0861,-141.1252 838.3967,-146.1811 839.5175,-139.2714"/>
 </g>
-<!-- findbugsMain -->
+<!-- spotbugsMain -->
 <g id="node27" class="node">
-<title>findbugsMain</title>
-<polygon fill="#ffa500" stroke="#000000" points="299.5,-299 184.5,-299 184.5,-263 299.5,-263 299.5,-299"/>
-<text text-anchor="middle" x="242" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">findbugsMain</text>
+<title>spotbugsMain</title>
+<polygon fill="#ffa500" stroke="#000000" points="264,-299 166,-299 166,-263 264,-263 264,-299"/>
+<text text-anchor="middle" x="215" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">spotbugsMain</text>
 </g>
-<!-- assemble&#45;&gt;findbugsMain -->
+<!-- assemble&#45;&gt;spotbugsMain -->
 <g id="edge36" class="edge">
-<title>assemble&#45;&gt;findbugsMain</title>
-<path fill="none" stroke="#000000" d="M720.3964,-425.7249C711.5006,-412.3292 697.4575,-395.1213 680,-387 653.0894,-374.4811 441.5633,-387.0646 413,-379 359.9488,-364.0214 305.9475,-329.0841 273.2019,-305.2405"/>
-<polygon fill="#000000" stroke="#000000" points="275.0696,-302.2686 264.9484,-299.1363 270.9072,-307.8966 275.0696,-302.2686"/>
+<title>assemble&#45;&gt;spotbugsMain</title>
+<path fill="none" stroke="#000000" d="M621.7503,-425.8251C614.621,-412.4834 602.9434,-395.2991 587,-387 564.7119,-375.3983 384.9039,-386.7434 361,-379 314.7424,-364.0155 269.5284,-329.7408 241.9659,-305.9803"/>
+<polygon fill="#000000" stroke="#000000" points="244.1592,-303.2483 234.3356,-299.2799 239.5403,-308.5083 244.1592,-303.2483"/>
 </g>
 <!-- testOSGi&#45;&gt;check -->
 <g id="edge13" class="edge">
 <title>testOSGi&#45;&gt;check</title>
-<path fill="none" stroke="#000000" d="M381.6633,-262.8314C377.5757,-254.8771 372.6896,-245.369 368.1691,-236.5723"/>
-<polygon fill="#000000" stroke="#000000" points="371.1461,-234.7078 363.4624,-227.4133 364.9201,-237.9074 371.1461,-234.7078"/>
+<path fill="none" stroke="#000000" d="M336.6821,-262.8314C333.5124,-254.9617 329.73,-245.5712 326.2187,-236.8533"/>
+<polygon fill="#000000" stroke="#000000" points="329.3992,-235.3815 322.4165,-227.4133 322.9061,-237.9968 329.3992,-235.3815"/>
 </g>
 <!-- checkNeeded -->
 <g id="node13" class="node">
 <title>checkNeeded</title>
-<polygon fill="#00ffff" stroke="#000000" points="439.5,-155 324.5,-155 324.5,-119 439.5,-119 439.5,-155"/>
-<text text-anchor="middle" x="382" y="-133.3" font-family="Times,serif" font-size="14.00" fill="#000000">checkNeeded</text>
+<polygon fill="#00ffff" stroke="#000000" points="381.5,-155 288.5,-155 288.5,-119 381.5,-119 381.5,-155"/>
+<text text-anchor="middle" x="335" y="-133.3" font-family="Times,serif" font-size="14.00" fill="#000000">checkNeeded</text>
 </g>
 <!-- check&#45;&gt;checkNeeded -->
 <g id="edge15" class="edge">
 <title>check&#45;&gt;checkNeeded</title>
-<path fill="none" stroke="#000000" d="M361.0656,-190.8314C364.126,-182.9617 367.7779,-173.5712 371.1682,-164.8533"/>
-<polygon fill="#000000" stroke="#000000" points="374.4768,-166.0019 374.8393,-155.4133 367.9527,-163.4647 374.4768,-166.0019"/>
+<path fill="none" stroke="#000000" d="M320.0468,-190.8314C322.2094,-183.0463 324.7853,-173.7729 327.1848,-165.1347"/>
+<polygon fill="#000000" stroke="#000000" points="330.581,-165.9852 329.8852,-155.4133 323.8364,-164.1117 330.581,-165.9852"/>
 </g>
 <!-- check&#45;&gt;build -->
 <g id="edge17" class="edge">
 <title>check&#45;&gt;build</title>
-<path fill="none" stroke="#000000" d="M383.7631,-205.3802C482.5831,-193.3615 799.6917,-154.7942 908.7477,-141.5307"/>
-<polygon fill="#000000" stroke="#000000" points="909.4302,-144.9736 918.9345,-140.2918 908.585,-138.0248 909.4302,-144.9736"/>
+<path fill="none" stroke="#000000" d="M342.2268,-204.9747C424.5726,-192.8003 671.0847,-156.355 765.0566,-142.4619"/>
+<polygon fill="#000000" stroke="#000000" points="765.5846,-145.9219 774.9651,-140.9969 764.5608,-138.9972 765.5846,-145.9219"/>
 </g>
 <!-- check&#45;&gt;jacocoTestReport -->
 <g id="edge41" class="edge">
 <title>check&#45;&gt;jacocoTestReport</title>
-<path fill="none" stroke="#ff00ff" d="M324.4671,-193.0089C322.9667,-192.3087 321.4719,-191.6348 320,-191 291.504,-178.7112 259.2145,-167.3054 231.2134,-158.173"/>
-<polygon fill="#ff00ff" stroke="#ff00ff" points="232.0928,-154.7791 221.5012,-155.0398 229.9437,-161.4411 232.0928,-154.7791"/>
+<path fill="none" stroke="#ff00ff" d="M287.7437,-192.856C286.4872,-192.2124 285.2353,-191.5905 284,-191 258.9459,-179.0237 230.4819,-167.7122 205.7205,-158.5661"/>
+<polygon fill="#ff00ff" stroke="#ff00ff" points="206.666,-155.1854 196.0721,-155.0419 204.2643,-161.7605 206.666,-155.1854"/>
 </g>
 <!-- checkNeeded&#45;&gt;checkNeeded -->
 <g id="edge16" class="edge">
 <title>checkNeeded&#45;&gt;checkNeeded</title>
-<path fill="none" stroke="#ff0000" d="M439.6071,-149.7584C450.1239,-148.1434 457.5,-143.8906 457.5,-137 457.5,-132.5857 454.4728,-129.2539 449.5321,-127.0048"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="450.1795,-123.552 439.6071,-124.2416 448.302,-130.2955 450.1795,-123.552"/>
+<path fill="none" stroke="#ff0000" d="M381.6737,-150.1366C391.988,-148.9023 399.5,-144.5234 399.5,-137 399.5,-132.1803 396.4171,-128.6511 391.4894,-126.4125"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="392.2324,-122.9894 381.6737,-123.8634 390.4728,-129.7646 392.2324,-122.9894"/>
 </g>
 <!-- releaseNeeded -->
 <g id="node15" class="node">
 <title>releaseNeeded</title>
-<polygon fill="#00ffff" stroke="#000000" points="606,-299 482,-299 482,-263 606,-263 606,-299"/>
-<text text-anchor="middle" x="544" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">releaseNeeded</text>
+<polygon fill="#00ffff" stroke="#000000" points="522,-299 424,-299 424,-263 522,-263 522,-299"/>
+<text text-anchor="middle" x="473" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">releaseNeeded</text>
 </g>
 <!-- release&#45;&gt;releaseNeeded -->
 <g id="edge32" class="edge">
 <title>release&#45;&gt;releaseNeeded</title>
-<path fill="none" stroke="#000000" d="M561.1961,-334.8314C558.7092,-327.0463 555.7469,-317.7729 552.9875,-309.1347"/>
-<polygon fill="#000000" stroke="#000000" points="556.2591,-307.874 549.882,-299.4133 549.591,-310.0041 556.2591,-307.874"/>
+<path fill="none" stroke="#000000" d="M487.9532,-334.8314C485.7906,-327.0463 483.2147,-317.7729 480.8152,-309.1347"/>
+<polygon fill="#000000" stroke="#000000" points="484.1636,-308.1117 478.1148,-299.4133 477.419,-309.9852 484.1636,-308.1117"/>
 </g>
 <!-- releaseNeeded&#45;&gt;releaseNeeded -->
 <g id="edge33" class="edge">
 <title>releaseNeeded&#45;&gt;releaseNeeded</title>
-<path fill="none" stroke="#ff0000" d="M606.0546,-293.6027C616.6554,-291.8806 624,-287.6797 624,-281 624,-276.7208 620.9858,-273.4589 616.0322,-271.2144"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="616.6294,-267.7462 606.0546,-268.3973 614.7273,-274.4829 616.6294,-267.7462"/>
+<path fill="none" stroke="#ff0000" d="M522.0804,-294.0641C532.4858,-292.7375 540,-288.3828 540,-281 540,-276.2704 536.9162,-272.7835 531.964,-270.5394"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="532.6421,-267.0987 522.0804,-267.9359 530.859,-273.8678 532.6421,-267.0987"/>
 </g>
 <!-- resolve -->
 <g id="node19" class="node">
 <title>resolve</title>
-<polygon fill="#00ffff" stroke="#000000" points="1083,-299 1015,-299 1015,-263 1083,-263 1083,-299"/>
-<text text-anchor="middle" x="1049" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">resolve</text>
+<polygon fill="#00ffff" stroke="#000000" points="918.5,-299 861.5,-299 861.5,-263 918.5,-263 918.5,-299"/>
+<text text-anchor="middle" x="890" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">resolve</text>
 </g>
 <!-- resolveX&#45;&gt;resolve -->
 <g id="edge27" class="edge">
 <title>resolveX&#45;&gt;resolve</title>
-<path fill="none" stroke="#000000" d="M1049,-334.8314C1049,-327.131 1049,-317.9743 1049,-309.4166"/>
-<polygon fill="#000000" stroke="#000000" points="1052.5001,-309.4132 1049,-299.4133 1045.5001,-309.4133 1052.5001,-309.4132"/>
+<path fill="none" stroke="#000000" d="M890,-334.8314C890,-327.131 890,-317.9743 890,-309.4166"/>
+<polygon fill="#000000" stroke="#000000" points="893.5001,-309.4132 890,-299.4133 886.5001,-309.4133 893.5001,-309.4132"/>
 </g>
 <!-- export -->
 <g id="node21" class="node">
 <title>export</title>
-<polygon fill="#00ffff" stroke="#000000" points="928.5,-299 865.5,-299 865.5,-263 928.5,-263 928.5,-299"/>
-<text text-anchor="middle" x="897" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">export</text>
+<polygon fill="#00ffff" stroke="#000000" points="793,-299 739,-299 739,-263 793,-263 793,-299"/>
+<text text-anchor="middle" x="766" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">export</text>
 </g>
 <!-- exportX&#45;&gt;export -->
 <g id="edge25" class="edge">
 <title>exportX&#45;&gt;export</title>
-<path fill="none" stroke="#000000" d="M897,-334.8314C897,-327.131 897,-317.9743 897,-309.4166"/>
-<polygon fill="#000000" stroke="#000000" points="900.5001,-309.4132 897,-299.4133 893.5001,-309.4133 900.5001,-309.4132"/>
+<path fill="none" stroke="#000000" d="M766,-334.8314C766,-327.131 766,-317.9743 766,-309.4166"/>
+<polygon fill="#000000" stroke="#000000" points="769.5001,-309.4132 766,-299.4133 762.5001,-309.4133 769.5001,-309.4132"/>
 </g>
 <!-- runbundles -->
 <g id="node23" class="node">
 <title>runbundles</title>
-<polygon fill="#00ffff" stroke="#000000" points="780,-299 682,-299 682,-263 780,-263 780,-299"/>
-<text text-anchor="middle" x="731" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">runbundles</text>
+<polygon fill="#00ffff" stroke="#000000" points="670.5,-299 589.5,-299 589.5,-263 670.5,-263 670.5,-299"/>
+<text text-anchor="middle" x="630" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">runbundles</text>
 </g>
 <!-- runbundlesX&#45;&gt;runbundles -->
 <g id="edge31" class="edge">
 <title>runbundlesX&#45;&gt;runbundles</title>
-<path fill="none" stroke="#000000" d="M731,-334.8314C731,-327.131 731,-317.9743 731,-309.4166"/>
-<polygon fill="#000000" stroke="#000000" points="734.5001,-309.4132 731,-299.4133 727.5001,-309.4133 734.5001,-309.4132"/>
+<path fill="none" stroke="#000000" d="M630,-334.8314C630,-327.131 630,-317.9743 630,-309.4166"/>
+<polygon fill="#000000" stroke="#000000" points="633.5001,-309.4132 630,-299.4133 626.5001,-309.4133 633.5001,-309.4132"/>
 </g>
 <!-- buildDependents -->
 <g id="node25" class="node">
 <title>buildDependents</title>
-<polygon fill="#e0ffff" stroke="#000000" points="935,-83 797,-83 797,-47 935,-47 935,-83"/>
-<text text-anchor="middle" x="866" y="-61.3" font-family="Times,serif" font-size="14.00" fill="#000000">buildDependents</text>
+<polygon fill="#e0ffff" stroke="#000000" points="790,-83 676,-83 676,-47 790,-47 790,-83"/>
+<text text-anchor="middle" x="733" y="-61.3" font-family="Times,serif" font-size="14.00" fill="#000000">buildDependents</text>
 </g>
 <!-- build&#45;&gt;buildDependents -->
 <g id="edge18" class="edge">
 <title>build&#45;&gt;buildDependents</title>
-<path fill="none" stroke="#000000" d="M925.8126,-118.8314C916.1486,-110.1337 904.4204,-99.5783 893.9184,-90.1265"/>
-<polygon fill="#000000" stroke="#000000" points="895.9553,-87.251 886.1809,-83.1628 891.2725,-92.454 895.9553,-87.251"/>
+<path fill="none" stroke="#000000" d="M784.5884,-118.8314C776.479,-110.3694 766.6844,-100.1489 757.818,-90.8971"/>
+<polygon fill="#000000" stroke="#000000" points="760.0921,-88.2115 750.646,-83.4133 755.0382,-93.0549 760.0921,-88.2115"/>
 </g>
 <!-- buildNeeded -->
 <g id="node26" class="node">
 <title>buildNeeded</title>
-<polygon fill="#e0ffff" stroke="#000000" points="1079,-83 971,-83 971,-47 1079,-47 1079,-83"/>
-<text text-anchor="middle" x="1025" y="-61.3" font-family="Times,serif" font-size="14.00" fill="#000000">buildNeeded</text>
+<polygon fill="#e0ffff" stroke="#000000" points="916,-83 826,-83 826,-47 916,-47 916,-83"/>
+<text text-anchor="middle" x="871" y="-61.3" font-family="Times,serif" font-size="14.00" fill="#000000">buildNeeded</text>
 </g>
 <!-- build&#45;&gt;buildNeeded -->
 <g id="edge20" class="edge">
 <title>build&#45;&gt;buildNeeded</title>
-<path fill="none" stroke="#000000" d="M965.935,-118.8314C975.4783,-110.1337 987.0599,-99.5783 997.4306,-90.1265"/>
-<polygon fill="#000000" stroke="#000000" points="1000.038,-92.4857 1005.0713,-83.1628 995.3228,-87.3121 1000.038,-92.4857"/>
+<path fill="none" stroke="#000000" d="M819.4116,-118.8314C827.521,-110.3694 837.3156,-100.1489 846.182,-90.8971"/>
+<polygon fill="#000000" stroke="#000000" points="848.9618,-93.0549 853.354,-83.4133 843.9079,-88.2115 848.9618,-93.0549"/>
 </g>
 <!-- buildDependents&#45;&gt;buildDependents -->
 <g id="edge19" class="edge">
 <title>buildDependents&#45;&gt;buildDependents</title>
-<path fill="none" stroke="#ffff00" d="M935.2746,-77.3102C945.8314,-75.4315 953,-71.3281 953,-65 953,-60.946 950.058,-57.8051 945.1679,-55.5772"/>
-<polygon fill="#ffff00" stroke="#ffff00" points="945.8547,-52.1317 935.2746,-52.6898 943.8935,-58.8514 945.8547,-52.1317"/>
+<path fill="none" stroke="#ffff00" d="M790.2256,-77.7584C800.6727,-76.1434 808,-71.8906 808,-65 808,-60.5857 804.9929,-57.2539 800.0848,-55.0048"/>
+<polygon fill="#ffff00" stroke="#ffff00" points="800.7992,-51.5702 790.2256,-52.2416 798.9101,-58.3105 800.7992,-51.5702"/>
 </g>
 <!-- buildNeeded&#45;&gt;buildNeeded -->
 <g id="edge21" class="edge">
 <title>buildNeeded&#45;&gt;buildNeeded</title>
-<path fill="none" stroke="#ff0000" d="M1079.0073,-77.8993C1089.5286,-76.4013 1097,-72.1016 1097,-65 1097,-60.4506 1093.9337,-57.051 1088.9636,-54.8012"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="1089.5748,-51.3406 1079.0073,-52.1007 1087.7423,-58.0965 1089.5748,-51.3406"/>
+<path fill="none" stroke="#ff0000" d="M916.0205,-78.2025C926.3858,-77.0649 934,-72.6641 934,-65 934,-60.0902 930.8751,-56.5196 925.904,-54.2883"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="926.5726,-50.8474 916.0205,-51.7975 924.8619,-57.6352 926.5726,-50.8474"/>
 </g>
-<!-- findbugsMain&#45;&gt;check -->
+<!-- spotbugsMain&#45;&gt;check -->
 <g id="edge38" class="edge">
-<title>findbugsMain&#45;&gt;check</title>
-<path fill="none" stroke="#00ff00" d="M270.2623,-262.8314C284.4552,-253.7074 301.8282,-242.539 317.0636,-232.7449"/>
-<polygon fill="#00ff00" stroke="#00ff00" points="319.2276,-235.5146 325.7467,-227.1628 315.4422,-229.6263 319.2276,-235.5146"/>
+<title>spotbugsMain&#45;&gt;check</title>
+<path fill="none" stroke="#00ff00" d="M240.2342,-262.8314C252.788,-253.7927 268.1283,-242.7476 281.6391,-233.0198"/>
+<polygon fill="#00ff00" stroke="#00ff00" points="283.7036,-235.8463 289.7739,-227.1628 279.6134,-230.1655 283.7036,-235.8463"/>
 </g>
-<!-- findbugsTest&#45;&gt;check -->
+<!-- spotbugsTest&#45;&gt;check -->
 <g id="edge39" class="edge">
-<title>findbugsTest&#45;&gt;check</title>
-<path fill="none" stroke="#00ff00" d="M152.2365,-262.8789C159.7219,-259.9837 167.5263,-257.2166 175,-255 234.7303,-237.285 255.9378,-247.6288 314.4594,-228.6982"/>
-<polygon fill="#00ff00" stroke="#00ff00" points="315.8379,-231.9266 324.1838,-225.3999 313.5894,-225.2975 315.8379,-231.9266"/>
+<title>spotbugsTest&#45;&gt;check</title>
+<path fill="none" stroke="#00ff00" d="M137.3147,-262.8847C143.7606,-259.9889 150.5037,-257.22 157,-255 208.5965,-237.3675 227.9374,-246.7588 278.4045,-228.9012"/>
+<polygon fill="#00ff00" stroke="#00ff00" points="279.7,-232.1536 287.8452,-225.3781 277.2525,-225.5953 279.7,-232.1536"/>
 </g>
 <!-- javadoc -->
 <g id="node29" class="node">
 <title>javadoc</title>
-<polygon fill="#ffa500" stroke="#000000" points="1070.5,-697 999.5,-697 999.5,-661 1070.5,-661 1070.5,-697"/>
-<text text-anchor="middle" x="1035" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">javadoc</text>
+<polygon fill="#ffa500" stroke="#000000" points="907.5,-697 846.5,-697 846.5,-661 907.5,-661 907.5,-697"/>
+<text text-anchor="middle" x="877" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">javadoc</text>
 </g>
 <!-- clean -->
 <g id="node30" class="node">
 <title>clean</title>
-<polygon fill="#00ffff" stroke="#000000" points="1396.5,-697 1341.5,-697 1341.5,-661 1396.5,-661 1396.5,-697"/>
-<text text-anchor="middle" x="1369" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">clean</text>
+<polygon fill="#00ffff" stroke="#000000" points="1176,-697 1122,-697 1122,-661 1176,-661 1176,-697"/>
+<text text-anchor="middle" x="1149" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">clean</text>
 </g>
 <!-- cleanNeeded -->
 <g id="node31" class="node">
 <title>cleanNeeded</title>
-<polygon fill="#00ffff" stroke="#000000" points="1402,-606 1292,-606 1292,-570 1402,-570 1402,-606"/>
-<text text-anchor="middle" x="1347" y="-584.3" font-family="Times,serif" font-size="14.00" fill="#000000">cleanNeeded</text>
+<polygon fill="#00ffff" stroke="#000000" points="1175.5,-606 1086.5,-606 1086.5,-570 1175.5,-570 1175.5,-606"/>
+<text text-anchor="middle" x="1131" y="-584.3" font-family="Times,serif" font-size="14.00" fill="#000000">cleanNeeded</text>
 </g>
 <!-- clean&#45;&gt;cleanNeeded -->
 <g id="edge34" class="edge">
 <title>clean&#45;&gt;cleanNeeded</title>
-<path fill="none" stroke="#000000" d="M1364.548,-660.5848C1361.4564,-647.7967 1357.2797,-630.5207 1353.7768,-616.0313"/>
-<polygon fill="#000000" stroke="#000000" points="1357.1223,-614.9748 1351.3703,-606.0773 1350.3183,-616.6197 1357.1223,-614.9748"/>
+<path fill="none" stroke="#000000" d="M1145.3574,-660.5848C1142.8279,-647.7967 1139.4107,-630.5207 1136.5447,-616.0313"/>
+<polygon fill="#000000" stroke="#000000" points="1139.9497,-615.208 1134.5757,-606.0773 1133.0828,-616.5664 1139.9497,-615.208"/>
 </g>
 <!-- cleanAll -->
 <g id="node35" class="node">
 <title>cleanAll</title>
-<polygon fill="#ffa500" stroke="#000000" points="1534.5,-606 1479.5,-606 1479.5,-570 1534.5,-570 1534.5,-606"/>
-<text text-anchor="middle" x="1507" y="-584.3" font-family="Times,serif" font-size="14.00" fill="#000000">clean</text>
+<polygon fill="#ffa500" stroke="#000000" points="1298,-606 1244,-606 1244,-570 1298,-570 1298,-606"/>
+<text text-anchor="middle" x="1271" y="-584.3" font-family="Times,serif" font-size="14.00" fill="#000000">clean</text>
 </g>
 <!-- clean&#45;&gt;cleanAll -->
 <g id="edge42" class="edge">
 <title>clean&#45;&gt;cleanAll</title>
-<path fill="none" stroke="#0000ff" d="M1396.5947,-660.8035C1417.9369,-646.73 1447.6657,-627.1262 1470.8982,-611.8063"/>
-<polygon fill="#0000ff" stroke="#0000ff" points="1473.0316,-614.592 1479.4531,-606.165 1469.178,-608.7481 1473.0316,-614.592"/>
+<path fill="none" stroke="#0000ff" d="M1173.3953,-660.8035C1192.0968,-646.854 1218.0825,-627.4712 1238.5397,-612.2122"/>
+<polygon fill="#0000ff" stroke="#0000ff" points="1240.7239,-614.9495 1246.647,-606.165 1236.5386,-609.3384 1240.7239,-614.9495"/>
 </g>
 <!-- cleanNeeded&#45;&gt;cleanNeeded -->
 <g id="edge35" class="edge">
 <title>cleanNeeded&#45;&gt;cleanNeeded</title>
-<path fill="none" stroke="#ff0000" d="M1402.0733,-600.854C1412.5741,-599.3159 1420,-595.0313 1420,-588 1420,-583.4956 1416.9524,-580.1184 1412.0011,-577.8684"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="1412.6429,-574.4153 1402.0733,-575.146 1410.7917,-581.166 1412.6429,-574.4153"/>
+<path fill="none" stroke="#ff0000" d="M1175.6631,-601.2025C1185.9463,-600.0649 1193.5,-595.6641 1193.5,-588 1193.5,-583.0902 1190.3999,-579.5196 1185.4682,-577.2883"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="1186.2171,-573.8674 1175.6631,-574.7975 1184.4935,-580.6519 1186.2171,-573.8674"/>
 </g>
 <!-- cleanAllNeeded -->
 <g id="node36" class="node">
 <title>cleanAllNeeded</title>
-<polygon fill="#ffa500" stroke="#000000" points="1562,-534 1452,-534 1452,-498 1562,-498 1562,-534"/>
-<text text-anchor="middle" x="1507" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">cleanNeeded</text>
+<polygon fill="#ffa500" stroke="#000000" points="1315.5,-534 1226.5,-534 1226.5,-498 1315.5,-498 1315.5,-534"/>
+<text text-anchor="middle" x="1271" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">cleanNeeded</text>
 </g>
 <!-- cleanNeeded&#45;&gt;cleanAllNeeded -->
 <g id="edge43" class="edge">
 <title>cleanNeeded&#45;&gt;cleanAllNeeded</title>
-<path fill="none" stroke="#0000ff" d="M1387.3748,-569.8314C1408.6787,-560.2446 1434.9983,-548.4008 1457.5211,-538.2655"/>
-<polygon fill="#0000ff" stroke="#0000ff" points="1459.2326,-541.3334 1466.9156,-534.038 1456.3601,-534.95 1459.2326,-541.3334"/>
+<path fill="none" stroke="#0000ff" d="M1166.3279,-569.8314C1184.6493,-560.4089 1207.2102,-548.8062 1226.6895,-538.7883"/>
+<polygon fill="#0000ff" stroke="#0000ff" points="1228.3912,-541.8489 1235.6834,-534.1628 1225.1898,-535.6239 1228.3912,-541.8489"/>
 </g>
 <!-- echo -->
 <g id="node32" class="node">
 <title>echo</title>
-<polygon fill="#00ffff" stroke="#000000" points="359,-697 305,-697 305,-661 359,-661 359,-697"/>
-<text text-anchor="middle" x="332" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">echo</text>
+<polygon fill="#00ffff" stroke="#000000" points="318,-697 264,-697 264,-661 318,-661 318,-697"/>
+<text text-anchor="middle" x="291" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">echo</text>
 </g>
 <!-- bndproperties -->
 <g id="node33" class="node">
 <title>bndproperties</title>
-<polygon fill="#00ffff" stroke="#000000" points="181,-697 63,-697 63,-661 181,-661 181,-697"/>
-<text text-anchor="middle" x="122" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">bndproperties</text>
+<polygon fill="#00ffff" stroke="#000000" points="150.5,-697 55.5,-697 55.5,-661 150.5,-661 150.5,-697"/>
+<text text-anchor="middle" x="103" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">bndproperties</text>
 </g>
 <!-- cleanAll&#45;&gt;cleanAllNeeded -->
 <g id="edge44" class="edge">
 <title>cleanAll&#45;&gt;cleanAllNeeded</title>
-<path fill="none" stroke="#000000" d="M1507,-569.8314C1507,-562.131 1507,-552.9743 1507,-544.4166"/>
-<polygon fill="#000000" stroke="#000000" points="1510.5001,-544.4132 1507,-534.4133 1503.5001,-544.4133 1510.5001,-544.4132"/>
+<path fill="none" stroke="#000000" d="M1271,-569.8314C1271,-562.131 1271,-552.9743 1271,-544.4166"/>
+<polygon fill="#000000" stroke="#000000" points="1274.5001,-544.4132 1271,-534.4133 1267.5001,-544.4133 1274.5001,-544.4132"/>
 </g>
 <!-- distclean -->
 <g id="node37" class="node">
 <title>distclean</title>
-<polygon fill="#ffa500" stroke="#000000" points="1680,-534 1598,-534 1598,-498 1680,-498 1680,-534"/>
-<text text-anchor="middle" x="1639" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">distclean</text>
+<polygon fill="#ffa500" stroke="#000000" points="1418,-534 1352,-534 1352,-498 1418,-498 1418,-534"/>
+<text text-anchor="middle" x="1385" y="-512.3" font-family="Times,serif" font-size="14.00" fill="#000000">distclean</text>
 </g>
 <!-- cleanAll&#45;&gt;distclean -->
 <g id="edge45" class="edge">
 <title>cleanAll&#45;&gt;distclean</title>
-<path fill="none" stroke="#000000" d="M1534.6715,-572.9064C1552.7154,-563.0643 1576.6085,-550.0317 1596.976,-538.9222"/>
-<polygon fill="#000000" stroke="#000000" points="1598.6531,-541.9943 1605.7561,-534.133 1595.3011,-535.849 1598.6531,-541.9943"/>
+<path fill="none" stroke="#000000" d="M1298.0164,-570.937C1312.7939,-561.6038 1331.3302,-549.8967 1347.4903,-539.6904"/>
+<polygon fill="#000000" stroke="#000000" points="1349.5987,-542.4984 1356.1847,-534.1992 1345.8608,-536.5799 1349.5987,-542.4984"/>
 </g>
 <!-- cleanAllNeeded&#45;&gt;cleanAllNeeded -->
 <g id="edge46" class="edge">
 <title>cleanAllNeeded&#45;&gt;cleanAllNeeded</title>
-<path fill="none" stroke="#ff0000" d="M1562.0733,-528.854C1572.5741,-527.3159 1580,-523.0313 1580,-516 1580,-511.4956 1576.9524,-508.1184 1572.0011,-505.8684"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="1572.6429,-502.4153 1562.0733,-503.146 1570.7917,-509.166 1572.6429,-502.4153"/>
+<path fill="none" stroke="#ff0000" d="M1315.6631,-529.2025C1325.9463,-528.0649 1333.5,-523.6641 1333.5,-516 1333.5,-511.0902 1330.3999,-507.5196 1325.4682,-505.2883"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="1326.2171,-501.8674 1315.6631,-502.7975 1324.4935,-508.6519 1326.2171,-501.8674"/>
 </g>
 <!-- distcleanNeeded -->
 <g id="node38" class="node">
 <title>distcleanNeeded</title>
-<polygon fill="#ffa500" stroke="#000000" points="1625.5,-462 1488.5,-462 1488.5,-426 1625.5,-426 1625.5,-462"/>
-<text text-anchor="middle" x="1557" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">distcleanNeeded</text>
+<polygon fill="#ffa500" stroke="#000000" points="1368,-462 1258,-462 1258,-426 1368,-426 1368,-462"/>
+<text text-anchor="middle" x="1313" y="-440.3" font-family="Times,serif" font-size="14.00" fill="#000000">distcleanNeeded</text>
 </g>
 <!-- cleanAllNeeded&#45;&gt;distcleanNeeded -->
 <g id="edge47" class="edge">
 <title>cleanAllNeeded&#45;&gt;distcleanNeeded</title>
-<path fill="none" stroke="#000000" d="M1519.6171,-497.8314C1525.3172,-489.6232 1532.1663,-479.7606 1538.4359,-470.7323"/>
-<polygon fill="#000000" stroke="#000000" points="1541.3838,-472.6234 1544.213,-462.4133 1535.6342,-468.6306 1541.3838,-472.6234"/>
+<path fill="none" stroke="#000000" d="M1281.5984,-497.8314C1286.2877,-489.7925 1291.9028,-480.1666 1297.0798,-471.2918"/>
+<polygon fill="#000000" stroke="#000000" points="1300.2434,-472.8146 1302.2589,-462.4133 1294.1969,-469.2875 1300.2434,-472.8146"/>
 </g>
 <!-- distclean&#45;&gt;distcleanNeeded -->
 <g id="edge48" class="edge">
 <title>distclean&#45;&gt;distcleanNeeded</title>
-<path fill="none" stroke="#000000" d="M1618.3079,-497.8314C1608.3052,-489.0485 1596.145,-478.3712 1585.3001,-468.8489"/>
-<polygon fill="#000000" stroke="#000000" points="1587.5092,-466.1308 1577.6854,-462.1628 1582.8906,-471.3909 1587.5092,-466.1308"/>
+<path fill="none" stroke="#000000" d="M1366.8314,-497.8314C1358.2848,-489.2848 1347.9443,-478.9443 1338.6198,-469.6198"/>
+<polygon fill="#000000" stroke="#000000" points="1340.9592,-467.0095 1331.4133,-462.4133 1336.0095,-471.9592 1340.9592,-467.0095"/>
 </g>
 <!-- distcleanNeeded&#45;&gt;distcleanNeeded -->
 <g id="edge49" class="edge">
 <title>distcleanNeeded&#45;&gt;distcleanNeeded</title>
-<path fill="none" stroke="#ff0000" d="M1625.5253,-456.372C1636.2134,-454.5224 1643.5,-450.3984 1643.5,-444 1643.5,-439.801 1640.3619,-436.5816 1635.1838,-434.3416"/>
-<polygon fill="#ff0000" stroke="#ff0000" points="1636.0993,-430.9634 1625.5253,-431.628 1634.2058,-437.7025 1636.0993,-430.9634"/>
+<path fill="none" stroke="#ff0000" d="M1368.0733,-456.854C1378.5741,-455.3159 1386,-451.0313 1386,-444 1386,-439.4956 1382.9524,-436.1184 1378.0011,-433.8684"/>
+<polygon fill="#ff0000" stroke="#ff0000" points="1378.6429,-430.4153 1368.0733,-431.146 1376.7917,-437.166 1378.6429,-430.4153"/>
 </g>
 <!-- init -->
 <g id="node39" class="node">
 <title>init</title>
-<polygon fill="#e0ffff" stroke="#000000" points="1641,-697 1587,-697 1587,-661 1641,-661 1641,-697"/>
-<text text-anchor="middle" x="1614" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">init</text>
+<polygon fill="#e0ffff" stroke="#000000" points="1390,-697 1336,-697 1336,-661 1390,-661 1390,-697"/>
+<text text-anchor="middle" x="1363" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">init</text>
 </g>
 <!-- wrapper -->
 <g id="node40" class="node">
 <title>wrapper</title>
-<polygon fill="#ffa500" stroke="#000000" points="1568.5,-697 1491.5,-697 1491.5,-661 1568.5,-661 1568.5,-697"/>
-<text text-anchor="middle" x="1530" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">wrapper</text>
+<polygon fill="#ffa500" stroke="#000000" points="1317.5,-697 1254.5,-697 1254.5,-661 1317.5,-661 1317.5,-697"/>
+<text text-anchor="middle" x="1286" y="-675.3" font-family="Times,serif" font-size="14.00" fill="#000000">wrapper</text>
 </g>
 </g>
 </svg>
diff --git a/lib/info.java/cnf/gradle/template/findbugs.gradle b/lib/info.java/cnf/gradle/template/findbugs.gradle
deleted file mode 100644 (file)
index 43ff077..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * WARNING
- *
- * This file should not be edited.
- *
- * GNU LIBRARY GENERAL PUBLIC LICENSE
- * Version 2, June 1991
- *
- * Add findbugs tasks to a (java) project.
- *
- * Note: the 'java' plugin must have been applied to the project before this
- *       file can be applied.
- *
- * Note: Set the 'CI' property (-PCI on the command line) to generate XML
- *       reports instead of html reports.
- */
-
-assert(project != rootProject   )
-assert(hasProperty('sourceSets'))
-
-
-repositories {
-  mavenCentral()
-}
-
-
-apply plugin: 'findbugs'
-
-
-if (!hasProperty('findbugsReportXML'     )) ext.findbugsReportXML      = 'CI'
-
-if (!hasProperty('findbugsIgnoreFailures')) ext.findbugsIgnoreFailures = true
-if (!hasProperty('findbugsIncludesFile'  )) ext.findbugsIncludesFile   = "${rootProject.rootDir}/${rootProject.bnd_cnf}/findbugs/findbugs.include.xml"
-if (!hasProperty('findbugsExcludesFile'  )) ext.findbugsExcludesFile   = "${rootProject.rootDir}/${rootProject.bnd_cnf}/findbugs/findbugs.exclude.xml"
-
-
-findbugs {
-  ignoreFailures =          findbugsIgnoreFailures
-  includeFilter  =     file(findbugsIncludesFile             )
-  excludeFilter  =     file(findbugsExcludesFile             )
-}
-
-findbugsMain {
-  dependsOn assemble
-  reports {
-    xml.enabled  = rootProject.hasProperty(findbugsReportXML) ? true  : false
-    html.enabled = rootProject.hasProperty(findbugsReportXML) ? false : true
-  }
-}
-
-findbugsTest {
-  dependsOn test
-  reports {
-    xml.enabled  = rootProject.hasProperty(findbugsReportXML) ? true  : false
-    html.enabled = rootProject.hasProperty(findbugsReportXML) ? false : true
-  }
-}
-
-/* Placeholder task to facilitate enabling the findbugsMain task (disabled by default) */
-task findbugs {
-  description "Enables findbugs on the source code (disabled by default; use -P${findbugsReportXML} to generate xml reports)."
-  group 'verification'
-}
-
-/* Placeholder task to facilitate enabling the findbugsTest task (disabled by default) */
-task findbugstest {
-  description "Enables findbugs on the test code (disabled by default; use -P${findbugsReportXML} to generate xml reports)."
-  group 'verification'
-}
-
-gradle.taskGraph.whenReady { taskGraph ->
-  tasks.findbugsMain.onlyIf {
-    taskGraph.hasTask((tasks.findbugs))
-  }
-  tasks.findbugsTest.onlyIf {
-    taskGraph.hasTask((tasks.findbugstest))
-  }
-}
index ef7f4a4..39485a8 100644 (file)
@@ -16,7 +16,7 @@ assert(hasProperty('sourceSets'))
 apply plugin: 'jacoco'
 
 
-if (!hasProperty('jacocoToolVersion')) ext.jacocoToolVersion = '0.8.3'
+if (!hasProperty('jacocoToolVersion')) ext.jacocoToolVersion = '0.8.4'
 if (!hasProperty('jacocoXmlReport'  )) ext.jacocoXmlReport   = true
 if (!hasProperty('jacocoCsvReport'  )) ext.jacocoCsvReport   = false
 
index c124b33..3e89280 100644 (file)
@@ -17,8 +17,8 @@ assert(            hasProperty('sourceSets'))
 /* Setup javadoc options */
 apply from: rootProject.file("${rootProject.bnd_cnf}/gradle/template/javaDoc.gradle")
 
-/* Add findbugs to the project */
-apply from: rootProject.file("${rootProject.bnd_cnf}/gradle/template/findbugs.gradle")
+/* Add spotbugs to the project */
+apply from: rootProject.file("${rootProject.bnd_cnf}/gradle/template/spotbugs.gradle")
 
 /* Add jacoco to the project */
 apply from: rootProject.file("${rootProject.bnd_cnf}/gradle/template/jacoco.gradle")
diff --git a/lib/info.java/cnf/gradle/template/spotbugs.gradle b/lib/info.java/cnf/gradle/template/spotbugs.gradle
new file mode 100644 (file)
index 0000000..29a9c2c
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * WARNING
+ *
+ * This file should not be edited.
+ *
+ * GNU LIBRARY GENERAL PUBLIC LICENSE
+ * Version 2, June 1991
+ *
+ * Add spotbugs tasks to a (java) project.
+ *
+ * Note: the 'java' plugin must have been applied to the project before this
+ *       file can be applied.
+ *
+ * Note: Set the 'CI' property (-PCI on the command line) to generate XML
+ *       reports instead of html reports.
+ */
+
+assert(project != rootProject   )
+assert(hasProperty('sourceSets'))
+
+
+repositories {
+  mavenCentral()
+}
+
+
+apply plugin: 'com.github.spotbugs'
+
+
+if (!hasProperty('spotbugsReportXML'     )) ext.spotbugsReportXML      = 'CI'
+
+if (!hasProperty('spotbugsIgnoreFailures')) ext.spotbugsIgnoreFailures = true
+if (!hasProperty('spotbugsIncludesFile'  )) ext.spotbugsIncludesFile   = "${rootProject.rootDir}/${rootProject.bnd_cnf}/spotbugs/spotbugs.include.xml"
+if (!hasProperty('spotbugsExcludesFile'  )) ext.spotbugsExcludesFile   = "${rootProject.rootDir}/${rootProject.bnd_cnf}/spotbugs/spotbugs.exclude.xml"
+
+
+spotbugs {
+  ignoreFailures =          spotbugsIgnoreFailures
+  includeFilter  =     file(spotbugsIncludesFile             )
+  excludeFilter  =     file(spotbugsExcludesFile             )
+}
+
+spotbugsMain {
+  dependsOn assemble
+  reports {
+    xml.enabled  = rootProject.hasProperty(spotbugsReportXML) ? true  : false
+    html.enabled = rootProject.hasProperty(spotbugsReportXML) ? false : true
+  }
+}
+
+spotbugsTest {
+  dependsOn test
+  reports {
+    xml.enabled  = rootProject.hasProperty(spotbugsReportXML) ? true  : false
+    html.enabled = rootProject.hasProperty(spotbugsReportXML) ? false : true
+  }
+}
+
+/* Placeholder task to facilitate enabling the spotbugsMain task (disabled by default) */
+task spotbugs {
+  description "Enables spotbugs on the source code (disabled by default; use -P${spotbugsReportXML} to generate xml reports)."
+  group 'verification'
+}
+
+/* Placeholder task to facilitate enabling the spotbugsTest task (disabled by default) */
+task spotbugstest {
+  description "Enables spotbugs on the test code (disabled by default; use -P${spotbugsReportXML} to generate xml reports)."
+  group 'verification'
+}
+
+gradle.taskGraph.whenReady { taskGraph ->
+  tasks.spotbugsMain.onlyIf {
+    taskGraph.hasTask((tasks.spotbugs))
+  }
+  tasks.spotbugsTest.onlyIf {
+    taskGraph.hasTask((tasks.spotbugstest))
+  }
+}
diff --git a/lib/info.java/cnf/spotbugs/spotbugs.include.xml b/lib/info.java/cnf/spotbugs/spotbugs.include.xml
new file mode 100644 (file)
index 0000000..43bc332
--- /dev/null
@@ -0,0 +1,2 @@
+<FindBugsFilter>
+</FindBugsFilter>
index 11b0a78..4533f4b 100755 (executable)
@@ -125,8 +125,8 @@ if $darwin; then
     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 fi
 
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
     JAVACMD=`cygpath --unix "$JAVACMD"`