http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js b/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js new file mode 100644 index 0000000..7f4d9a8 --- /dev/null +++ b/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js @@ -0,0 +1,202 @@ +/* + * Copyright 2013 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +function populateFooter(report) { + $("#gradleVersion").text(report.gradleVersion); + $("#generationDate").text(report.generationDate); +} + +function initializeProjectPage(report) { + $(document).ready(function() { + // event handling to close the insight div + $('#insight').on('click', '#dismissInsight', function(event) { + $('#insight').fadeOut(); + event.preventDefault(); + }); + + // creates a node of a dependency tree + function createDependencyNode(dependency) { + var node = { + data : dependency.name, + state : "open", + attr : {'data-module' : dependency.module}, + children : [] + }; + var classes = []; + if (dependency.alreadyRendered) { + classes.push('alreadyRendered'); + } + if (dependency.hasConflict) { + classes.push('hasConflict'); + } + if (!dependency.resolvable) { + classes.push('unresolvable'); + } + if (classes.length > 0) { + node.attr['class'] = classes.join(' '); + } + $.each(dependency.children, function(index, dependency) { + var dependencyNode = createDependencyNode(dependency); + node.children.push(dependencyNode); + }); + return node; + } + + // finds the moduleInsight by module among the given moduleInsights and returns its insight + function findInsight(moduleInsights, module) { + for (var i = 0; i < moduleInsights.length; i++) { + if (moduleInsights[i].module == module) { + return moduleInsights[i].insight; + } + } + return null; + } + + // creates a node of the insight tree + function createInsightNode(dependency) { + var node = { + data : dependency.name + (dependency.description ? ' (' + dependency.description + ')' : ''), + state : "open", + attr : {}, + children : [] + } + var classes = []; + if (dependency.alreadyRendered) { + classes.push('alreadyRendered'); + } + if (!dependency.resolvable) { + classes.push('unresolvable'); + } + if (dependency.hasConflict) { + classes.push('hasConflict'); + } + if (dependency.isLeaf) { + classes.push('leaf'); + } + if (classes.length > 0) { + node.attr['class'] = classes.join(' '); + } + $.each(dependency.children, function(index, dependency) { + var dependencyNode = createInsightNode(dependency); + node.children.push(dependencyNode); + }); + return node; + } + + // generates a tree for the given module by finding the insight among the given moduleInsights, + // and displays the insight div + function showModuleInsight(module, moduleInsights) { + var $insightDiv = $('#insight'); + $insightDiv.html(''); + $insightDiv.append($('<i> </i>').attr('id', 'dismissInsight').attr('title', 'Close')); + $insightDiv.append($('<h3>Insight for module </h3>').append(module)); + var $tree = $('<div>').addClass('insightTree'); + var insight = findInsight(moduleInsights, module); + var nodes = []; + $.each(insight, function(index, dependency) { + var dependencyNode = createInsightNode(dependency); + nodes.push(dependencyNode); + }); + $tree.append($('<img>').attr('src', 'throbber.gif')).append('Loading...'); + $tree.jstree({ + json_data : { + data : nodes + }, + themes : { + url : 'css/tree.css', + icons : false + }, + plugins : ['json_data', 'themes'] + }).bind("loaded.jstree", function (event, data) { + $('li.unresolvable a').attr('title', 'This dependency could not be resolved'); + $('li.alreadyRendered a').attr('title', 'The children of this dependency are not displayed because they have already been displayed before'); + }); + $insightDiv.append($tree); + $tree.on('click', 'a', function(event) { + event.preventDefault(); + }); + $insightDiv.fadeIn(); + } + + // generates the configuration dependeny trees + var $dependencies = $('#dependencies'); + var project = report.project; + + $dependencies.append($('<h2/>').text('Project ' + project.name)); + if (project.description) { + $dependencies.append($('<p>').addClass('projectDescription').text(project.name)); + } + + $.each(project.configurations, function(index, configuration) { + var $configurationDiv = $('<div/>').addClass('configuration'); + var $configurationTitle = $('<h3/>').addClass('closed').append($('<ins/>')).append(configuration.name); + if (configuration.description) { + $configurationTitle.append(' - ').append($('<span/>').addClass('configurationDescription').text(configuration.description)); + } + $configurationDiv.append($configurationTitle); + + var $contentDiv = $('<div/>').addClass('configurationContent').hide(); + var $tree = $('<div>').addClass('dependencyTree'); + $contentDiv.append($tree); + if (configuration.dependencies && configuration.dependencies.length > 0) { + var nodes = []; + $.each(configuration.dependencies, function(index, dependency) { + var dependencyNode = createDependencyNode(dependency); + nodes.push(dependencyNode); + }); + $tree.append($('<img>').attr('src', 'throbber.gif')).append('Loading...'); + $tree.jstree({ + json_data : { + data : nodes + }, + themes : { + url : 'css/tree.css', + icons : false + }, + plugins : ['json_data', 'themes'] + }).bind("loaded.jstree", function (event, data) { + $('li.unresolvable a').attr('title', 'This dependency could not be resolved'); + $('li.alreadyRendered a').attr('title', 'The children of this dependency are not displayed because they have already been displayed before'); + }); + } + else { + $tree.append($('<p/>').text("No dependency")); + } + + $tree.on('click', 'a', function(event) { + event.preventDefault(); + var module = $(this).closest('li').attr('data-module'); + showModuleInsight(module, configuration.moduleInsights); + }); + + $configurationDiv.append($contentDiv); + $dependencies.append($configurationDiv); + }); + + // allows the titles of each dependency tree to toggle the visibility of their tree + $dependencies.on('click', 'h3', function(event) { + $('div.configurationContent', $(this).parent()).slideToggle(); + $(this).toggleClass('closed'); + }); + + $('#projectBreacrumb').text(project.name); + populateFooter(report); + }); +} + +if (window.projectDependencyReport) { + initializeProjectPage(window.projectDependencyReport); +}
http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html new file mode 100644 index 0000000..c6f8578 --- /dev/null +++ b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html @@ -0,0 +1,40 @@ + +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta http-equiv="x-ua-compatible" content="IE=edge"/> + <link rel="stylesheet" type="text/css" href="css/base-style.css"/> + <link rel="stylesheet" type="text/css" href="css/style.css"/> + <script src="js/jquery.min-1.11.0.js" charset="utf-8"> + </script> + <script src="js/jquery.jstree.js" charset="utf-8"> + </script> + <script src="root.js" charset="utf-8"> + </script> + <script src="js/script.js" charset="utf-8"> + </script> + <title>Dependency reports + </title> + </head> + <body> + <div id="content"> + <h1>Dependency Report + </h1> + <div class="breadcrumbs"> + <a href="index.html">Projects + </a> > + <span id="projectBreacrumb"/> + </div> + <div id="insight"> + </div> + <div id="dependencies"> + </div> + <div id="footer"> + <p>Generated by + <a href="http://www.gradle.org">Gradle 2.12 + </a> at Sep 11, 2017 11:06:29 AM + </p> + </div> + </div> + </body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js new file mode 100644 index 0000000..db39485 --- /dev/null +++ b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js @@ -0,0 +1 @@ +var projectDependencyReport = {"gradleVersion":"Gradle 2.12","generationDate":"Mon Sep 11 11:06:29 PDT 2017","project":{"name":"nexus-messages","description":null,"configurations":[{"name":"archives","description":"Configuration for archive artifacts.","dependencies":[],"moduleInsights":[]},{"name":"compile","description":"Dependencies for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"compile","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"compileClasspath","description":"Compile classpath for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protob uf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"compileClasspath","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"compileOnly","description":"Compile dependencies for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"compileOnly","resolvable":true,"hasConflict":false,"alreadyRendered": false,"isLeaf":true,"children":[]}]}]}]},{"name":"default","description":"Configuration for default artifacts.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"default","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"protobuf","description":null,"dependencies":[],"moduleInsights":[]},{"name":"protobufToolsLocator_protoc","description":null,"dependencies":[{"module":"com.google.protobuf:protoc","name":"com.google.protobuf:protoc:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protoc","insight":[{"name":"c om.google.protobuf:protoc:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"protobufToolsLocator_protoc","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"runtime","description":"Runtime dependencies for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"runtime","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"testCompile","description":"Dependencies for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1" ,"resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testCompile","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"testCompileClasspath","description":"Compile classpath for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testCompileClasspath","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name ":"testCompileOnly","description":"Compile dependencies for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testCompileOnly","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"testProtobuf","description":null,"dependencies":[],"moduleInsights":[]},{"name":"testRuntime","description":"Runtime dependencies for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-j ava","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testRuntime","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]}]}}; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/properties.txt ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/build/reports/project/properties.txt b/nexus-ingest/nexus-messages/build/reports/project/properties.txt new file mode 100644 index 0000000..881ab7b --- /dev/null +++ b/nexus-ingest/nexus-messages/build/reports/project/properties.txt @@ -0,0 +1,128 @@ + +------------------------------------------------------------ +Root project +------------------------------------------------------------ + +allprojects: [root project 'nexus-messages'] +ant: org.gradle.api.internal.project.DefaultAntBuilder@3ad50290 +antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@590029cc +archivesBaseName: nexus-messages +artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@7b001246 +asDynamicObject: org.gradle.api.internal.ExtensibleDynamicObject@180d9997 +assemble: task ':assemble' +baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@a5ed984 +buildDependents: task ':buildDependents' +buildDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build +buildFile: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build.gradle +buildNeeded: task ':buildNeeded' +buildScriptSource: org.gradle.groovy.scripts.UriScriptSource@52c8cf4a +buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler@29a17577 +check: task ':check' +childProjects: {} +class: class org.gradle.api.internal.project.DefaultProject_Decorated +classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@5d1480f5 +classes: task ':classes' +clean: task ':clean' +compileJava: task ':compileJava' +compileTestJava: task ':compileTestJava' +components: [org.gradle.api.internal.java.JavaLibrary@21faf02a] +conf2ScopeMappings: org.gradle.api.publication.maven.internal.pom.DefaultConf2ScopeMappingContainer@8e909257 +configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@355cc9c0 +configurations: [configuration ':archives', configuration ':compile', configuration ':compileClasspath', configuration ':compileOnly', configuration ':default', configuration ':protobuf', configuration ':protobufToolsLocator_protoc', configuration ':runtime', configuration ':testCompile', configuration ':testCompileClasspath', configuration ':testCompileOnly', configuration ':testProtobuf', configuration ':testRuntime'] +convention: org.gradle.api.internal.plugins.DefaultConvention@17f418d1 +defaultArtifacts: org.gradle.api.internal.plugins.DefaultArtifactPublicationSet_Decorated@6e9e21f2 +defaultTasks: [] +deferredProjectConfiguration: org.gradle.api.internal.project.DeferredProjectConfiguration@1893f7ab +dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@4bd22fb0 +dependencyCacheDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/dependency-cache +dependencyCacheDirName: dependency-cache +dependencyReport: task ':dependencyReport' +depth: 0 +description: null +distDirectory: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/distrobution +distsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/distributions +distsDirName: distributions +docsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/docs +docsDirName: docs +ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@7c57848b +extensions: org.gradle.api.internal.plugins.DefaultConvention@17f418d1 +extractIncludeProto: task ':extractIncludeProto' +extractIncludeTestProto: task ':extractIncludeTestProto' +extractProto: task ':extractProto' +extractTestProto: task ':extractTestProto' +fileOperations: org.gradle.api.internal.file.DefaultFileOperations@6359bb42 +fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@64f0362d +genDirectory: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/gen +generatePomFileForMavenJavaPublication: task ':generatePomFileForMavenJavaPublication' +generateProto: task ':generateProto' +generateTestProto: task ':generateTestProto' +gradle: build 'nexus-messages' +group: org.nasa.jpl.nexus +htmlDependencyReport: task ':htmlDependencyReport' +inheritedScope: org.gradle.api.internal.ExtensibleDynamicObject$InheritedDynamicObject@3e852aac +install: task ':install' +jar: task ':jar' +javadoc: task ':javadoc' +libsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/libs +libsDirName: libs +logger: org.gradle.logging.internal.slf4j.OutputEventListenerBackedLogger@34e667fd +logging: org.gradle.logging.internal.DefaultLoggingManager@7eb6822b +mavenPomDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/poms +modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@509ba514 +modelSchemaStore: org.gradle.model.internal.manage.schema.extract.DefaultModelSchemaStore@426bb8e6 +module: org.gradle.api.internal.artifacts.ProjectBackedModule@37a6f6a0 +name: nexus-messages +osdetector: com.google.gradle.osdetector.OsDetectorExtension_Decorated@35bfa074 +parent: null +parentIdentifier: null +path: : +pluginManager: org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@22782c25 +plugins: [org.gradle.api.plugins.HelpTasksPlugin@34a3975e, org.gradle.language.base.plugins.LifecycleBasePlugin@5755195c, org.gradle.api.plugins.BasePlugin@51529a58, org.gradle.api.plugins.ReportingBasePlugin@22d2e496, org.gradle.platform.base.plugins.ComponentBasePlugin@5a34f2ae, org.gradle.language.base.plugins.LanguageBasePlugin@269151f1, org.gradle.platform.base.plugins.BinaryBasePlugin@245f195b, org.gradle.api.plugins.JavaBasePlugin@68468161, org.gradle.api.plugins.JavaPlugin@b82466a, com.google.gradle.osdetector.OsDetectorPlugin@21920c0a, com.google.protobuf.gradle.ProtobufPlugin@6208f25, org.gradle.api.plugins.MavenPlugin@22751cdc, org.gradle.api.publish.plugins.PublishingPlugin@12c940d0, org.gradle.api.publish.maven.plugins.MavenPublishPlugin@3cece406, org.gradle.api.plugins.ProjectReportsPlugin@5b3d0ef5] +processOperations: org.gradle.api.internal.file.DefaultFileOperations@6359bb42 +processResources: task ':processResources' +processTestResources: task ':processTestResources' +project: root project 'nexus-messages' +projectDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages +projectEvaluationBroadcaster: ProjectEvaluationListener broadcast +projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@6815459b +projectRegistry: org.gradle.api.internal.project.DefaultProjectRegistry@65abfe88 +projectReport: task ':projectReport' +projectReportDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/reports/project +projectReportDirName: project +projects: [root project 'nexus-messages'] +properties: {...} +propertyReport: task ':propertyReport' +protobuf: com.google.protobuf.gradle.ProtobufConfigurator@2d5f4e49 +publish: task ':publish' +publishToMavenLocal: task ':publishToMavenLocal' +publishing: org.gradle.api.publish.internal.DefaultPublishingExtension_Decorated@2cc9955e +pythonBuildDirPath: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/python/nexusproto +reporting: org.gradle.api.reporting.ReportingExtension_Decorated@4e2556c3 +reportsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/reports +repositories: [org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@cdefb01] +resources: org.gradle.api.internal.resources.DefaultResourceHandler@36bb0bac +rootDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages +rootProject: root project 'nexus-messages' +scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@61413634 +scriptPluginFactory: org.gradle.configuration.DefaultScriptPluginFactory@5b6e791 +serviceRegistryFactory: org.gradle.internal.service.scopes.ProjectScopeServices$4@7ecb12d5 +services: ProjectScopeServices +sourceCompatibility: 1.8 +sourceSets: [source set 'main', source set 'test'] +standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@7eb6822b +state: project state 'EXECUTED' +status: integration +subprojects: [] +tarPython: task ':tarPython' +targetCompatibility: 1.8 +taskReport: task ':taskReport' +tasks: [task ':assemble', task ':buildDependents', task ':buildNeeded', task ':check', task ':classes', task ':clean', task ':compileJava', task ':compileTestJava', task ':dependencyReport', task ':extractIncludeProto', task ':extractIncludeTestProto', task ':extractProto', task ':extractTestProto', task ':generatePomFileForMavenJavaPublication', task ':generateProto', task ':generateTestProto', task ':htmlDependencyReport', task ':install', task ':jar', task ':javadoc', task ':processResources', task ':processTestResources', task ':projectReport', task ':propertyReport', task ':publish', task ':publishToMavenLocal', task ':tarPython', task ':taskReport', task ':test', task ':testClasses', task ':wrapper', task ':writeNewPom'] +test: task ':test' +testClasses: task ':testClasses' +testReportDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/reports/tests +testReportDirName: tests +testResultsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/test-results +testResultsDirName: test-results +version: 1.0.0.RELEASE +wrapper: task ':wrapper' +writeNewPom: task ':writeNewPom' http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/tasks.txt ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/build/reports/project/tasks.txt b/nexus-ingest/nexus-messages/build/reports/project/tasks.txt new file mode 100644 index 0000000..2a2bcbe --- /dev/null +++ b/nexus-ingest/nexus-messages/build/reports/project/tasks.txt @@ -0,0 +1,68 @@ + +------------------------------------------------------------ +All tasks runnable from root project +------------------------------------------------------------ + +Build tasks +----------- +assemble - Assembles the outputs of this project. +build - Assembles and tests this project. +buildDependents - Assembles and tests this project and all projects that depend on it. +buildNeeded - Assembles and tests this project and all projects it depends on. +classes - Assembles main classes. +clean - Deletes the build directory. +jar - Assembles a jar archive containing the main classes. +testClasses - Assembles test classes. + +Build Setup tasks +----------------- +init - Initializes a new Gradle build. [incubating] + +Documentation tasks +------------------- +javadoc - Generates Javadoc API documentation for the main source code. + +Help tasks +---------- +buildEnvironment - Displays all buildscript dependencies declared in root project 'nexus-messages'. +components - Displays the components produced by root project 'nexus-messages'. [incubating] +dependencies - Displays all dependencies declared in root project 'nexus-messages'. +dependencyInsight - Displays the insight into a specific dependency in root project 'nexus-messages'. +help - Displays a help message. +model - Displays the configuration model of root project 'nexus-messages'. [incubating] +projects - Displays the sub-projects of root project 'nexus-messages'. +properties - Displays the properties of root project 'nexus-messages'. +tasks - Displays the tasks runnable from root project 'nexus-messages'. + +Publishing tasks +---------------- +generatePomFileForMavenJavaPublication - Generates the Maven POM file for publication 'mavenJava'. +publish - Publishes all publications produced by this project. +publishMavenJavaPublicationToMavenLocal - Publishes Maven publication 'mavenJava' to the local Maven repository. +publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache. + +Reporting tasks +--------------- +projectReport - Generates a report about your project. + +Verification tasks +------------------ +check - Runs all checks. +test - Runs the unit tests. + +Other tasks +----------- +install - Installs the 'archives' artifacts into the local Maven repository. +tarPython +wrapper +writeNewPom + +Rules +----- +Pattern: clean<TaskName>: Cleans the output files of a task. +Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration. +Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration. + +To see all tasks and more detail, run gradle tasks --all + +To see more detail about a task, run gradle help --task <task> http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/example.gradle.properties ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/example.gradle.properties b/nexus-ingest/nexus-messages/example.gradle.properties new file mode 100644 index 0000000..356eee2 --- /dev/null +++ b/nexus-ingest/nexus-messages/example.gradle.properties @@ -0,0 +1,7 @@ +artifactory_contextUrl=https://artifactory.com/artifactory +artifactory_user=ARTIFACTORY_USERNAME +artifactory_password=ARTIFACTORY_PASSWORD +publish_repoKey=private-maven-key +resolve_repoKey=maven-central-key + +python_executable=/path/to/anaconda/bin/python http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..2c6137b Binary files /dev/null and b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar differ http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a7e6b9b --- /dev/null +++ b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Apr 27 10:03:46 PDT 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-bin.zip http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/gradlew ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/gradlew b/nexus-ingest/nexus-messages/gradlew new file mode 100755 index 0000000..9d82f78 --- /dev/null +++ b/nexus-ingest/nexus-messages/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +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 + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto b/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto new file mode 100644 index 0000000..ea83c9f --- /dev/null +++ b/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto @@ -0,0 +1,99 @@ + +syntax = "proto2"; + +package org.nasa.jpl.nexus.ingest.wiretypes; +message GridTile{ + + optional ShapedArray latitude = 1; + optional ShapedArray longitude = 2; + + optional int64 time = 3; + + optional ShapedArray variable_data = 4; + + repeated MetaData meta_data = 5; + +} + +message SwathTile{ + + optional ShapedArray latitude = 1; + optional ShapedArray longitude = 2; + optional ShapedArray time = 3; + + optional ShapedArray variable_data = 4; + + repeated MetaData meta_data = 5; + +} + +message MetaData{ + required string name = 1; + required ShapedArray meta_data = 2; +} + +message ShapedArray{ + repeated int32 shape = 1 [packed=true]; + required string dtype = 2; + required bytes array_data = 3; +} + +message Attribute{ + optional string name = 1; + repeated string values = 2; +} + +message TileSummary{ + + optional string tile_id = 1; + optional string section_spec = 2; + optional string dataset_name = 3; + optional string granule = 4; + optional string dataset_uuid = 5; + optional string data_var_name = 6; + repeated Attribute global_attributes = 7; + + message BBox{ + optional float lat_min = 1; + optional float lat_max = 2; + optional float lon_min = 3; + optional float lon_max = 4; + } + optional BBox bbox = 8; + + message DataStats{ + optional float min = 1; + optional float max = 2; + optional float mean = 3; + optional int64 count = 4; + + optional int64 min_time = 5; + optional int64 max_time = 6; + } + optional DataStats stats = 9; +} + +message NexusTile{ + optional TileSummary summary = 1; + optional TileData tile = 2; +} + +message TileData{ + optional string tile_id = 1; + + oneof tile_type{ + GridTile grid_tile = 2; + SwathTile swath_tile = 3; + } +} + +message DimensionSlice{ + + oneof name_or_position{ + string dimension_name = 1; + int32 dimension_position = 2; + } + required int64 start = 3; + required int64 stop = 4; + optional int64 step = 5; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/python/nexusproto/__init__.py ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/src/main/python/nexusproto/__init__.py b/nexus-ingest/nexus-messages/src/main/python/nexusproto/__init__.py new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py b/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py new file mode 100644 index 0000000..64fe207 --- /dev/null +++ b/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py @@ -0,0 +1,40 @@ +""" +Copyright (c) 2016 Jet Propulsion Laboratory, +California Institute of Technology. All rights reserved +""" +import StringIO + +import numpy + +import nexusproto.NexusContent_pb2 as nexusproto + + +def from_shaped_array(shaped_array): + memfile = StringIO.StringIO() + memfile.write(shaped_array.array_data) + memfile.seek(0) + data_array = numpy.load(memfile) + memfile.close() + + return data_array + + +def to_shaped_array(data_array): + shaped_array = nexusproto.ShapedArray() + + shaped_array.shape.extend([dimension_size for dimension_size in data_array.shape]) + shaped_array.dtype = str(data_array.dtype) + + memfile = StringIO.StringIO() + numpy.save(memfile, data_array) + shaped_array.array_data = memfile.getvalue() + memfile.close() + + return shaped_array + +def to_metadata(name, data_array): + metadata = nexusproto.MetaData() + metadata.name = name + metadata.meta_data.CopyFrom(to_shaped_array(data_array)) + + return metadata http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py b/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py new file mode 100644 index 0000000..53ea282 --- /dev/null +++ b/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py @@ -0,0 +1,31 @@ +""" +Copyright (c) 2016 Jet Propulsion Laboratory, +California Institute of Technology. All rights reserved +""" +from setuptools import setup + +__version__ = '0.3' + +setup( + name='nexusproto', + version=__version__, + url="https://github.jpl.nasa.gov/thuang/nexus", + + author="Team Nexus", + + description="Protobufs used when passing NEXUS messages across the wire.", + + packages=['nexusproto'], + platforms='any', + + install_requires=[ + 'protobuf' + ], + + classifiers=[ + 'Development Status :: 1 - Pre-Alpha', + 'Intended Audience :: Developers', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 2.7', + ] +) http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-sink/.gitignore ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-sink/.gitignore b/nexus-ingest/nexus-sink/.gitignore new file mode 100644 index 0000000..ef1dff6 --- /dev/null +++ b/nexus-ingest/nexus-sink/.gitignore @@ -0,0 +1,16 @@ +gradlew.bat + +.gradle/ + +.idea/ + +.DS_Store + +gradle.properties + +build/* +!build/reports + +build/reports/* +!build/reports/license +!build/reports/project http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-sink/README.md ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-sink/README.md b/nexus-ingest/nexus-sink/README.md new file mode 100644 index 0000000..868d879 --- /dev/null +++ b/nexus-ingest/nexus-sink/README.md @@ -0,0 +1,11 @@ +# nexus-sink + +[Spring-XD Module](http://docs.spring.io/spring-xd/docs/current/reference/html/#modules) that handles saving a NexusTile to both Solr and Cassandra. + +The project can be built by running + +`./gradlew clean build` + +The module can then be uploaded to Spring XD by running the following command in an XD Shell + +`module upload --type sink --name nexus --file nexus-sink/build/libs/nexus-sink-VERSION.jar` \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-sink/build.gradle ---------------------------------------------------------------------- diff --git a/nexus-ingest/nexus-sink/build.gradle b/nexus-ingest/nexus-sink/build.gradle new file mode 100644 index 0000000..7807398 --- /dev/null +++ b/nexus-ingest/nexus-sink/build.gradle @@ -0,0 +1,176 @@ +buildscript { + repositories { + if( project.hasProperty('artifactory_contextUrl') ) { + maven { + url "${artifactory_contextUrl}" + credentials { + username = "${artifactory_user}" + password = "${artifactory_password}" + } + } + } + maven { + url "http://repo.spring.io/plugins-snapshot" + } + maven { + url 'http://repo.spring.io/plugins-release' + } + maven { + url "http://repo.spring.io/release" + } + maven { + url "http://repo.spring.io/milestone" + } + maven { + url "http://repo.spring.io/snapshot" + } + mavenCentral() + jcenter() + } + //noinspection GroovyAssignabilityCheck + dependencies { + classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+" + classpath("org.springframework.xd:spring-xd-module-plugin:1.3.1.RELEASE") + } +} + +if( project.hasProperty('artifactory_contextUrl') ) { + allprojects { + apply plugin: "com.jfrog.artifactory" + } + + artifactory { + contextUrl = "${artifactory_contextUrl}" + publish { + repository { + repoKey = "${publish_repoKey}" + username = "${artifactory_user}" + password = "${artifactory_password}" + maven = true + + } + defaults { + // Reference to Gradle publications defined in the build script. + // This is how we tell the Artifactory Plugin which artifacts should be + // published to Artifactory. + publications('mavenJava') + publishArtifacts = true + // Publish generated POM files to Artifactory (true by default) + publishPom = true + } + } + resolve { + repository { + repoKey = "${resolve_repoKey}" + username = "${artifactory_user}" + password = "${artifactory_password}" + maven = true + + } + } + } + + repositories { + maven { + url "$artifactory_contextUrl/$resolve_repoKey" + credentials { + username "${artifactory_user}" + password "${artifactory_password}" + } + } + } + + artifactoryPublish.dependsOn bootRepackage + +}else { + repositories { + mavenCentral() + jcenter() + maven { + url "http://repo.spring.io/release" + } + mavenLocal() + } +} + +ext { + springXdVersion = '1.3.1.RELEASE' + springIntegrationDslVersion = '1.1.2.RELEASE' + springDataCassandraVersion = '1.3.4.RELEASE' + springDataSolrVersion = '2.0.2.RELEASE' + + nexusMessagesVersion = '1.0.0.RELEASE' + + testversions = [ + cassandraUnitVersion: '2.1.3.1', + solrCoreVersion: '5.3.1' + ] +} + + + +apply plugin: 'java' +apply plugin: 'groovy' +apply plugin: 'idea' +apply plugin: 'spring-xd-module' +apply plugin: 'maven-publish' +apply plugin: 'project-report' + +group = 'org.nasa.jpl.nexus.ingest' +version = '1.4-SNAPSHOT' +mainClassName = '' + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + } + } +} + +//noinspection GroovyAssignabilityCheck +sourceSets { + //noinspection GroovyAssignabilityCheck + main { + groovy { + // override the default locations, rather than adding additional ones + srcDirs = ['src/main/groovy', 'src/main/java'] + } + java { + srcDirs = [] // don't compile Java code twice + } + } +} + +//noinspection GroovyAssignabilityCheck +dependencies { + compile("org.springframework.boot:spring-boot-starter-integration") + compile "org.springframework.integration:spring-integration-java-dsl:${springIntegrationDslVersion}" + compile "org.nasa.jpl.nexus:nexus-messages:${nexusMessagesVersion}" + compile "org.springframework.data:spring-data-cassandra:${springDataCassandraVersion}" + compile("org.springframework.data:spring-data-solr:${springDataSolrVersion}"){ + exclude group: 'org.apache.solr', module: 'solr-solrj' + } + compile "org.apache.solr:solr-solrj:5.3.1" + compile 'org.codehaus.groovy:groovy' + + + testCompile group: 'io.findify', name: 's3mock_2.12', version: '0.2.3' + testCompile('org.springframework.boot:spring-boot-starter-test') + testCompile("org.apache.cassandra:cassandra-all") + testCompile("org.apache.solr:solr-core:${testversions.solrCoreVersion}"){ + exclude group: 'org.eclipse.jetty' + } + testCompile("com.vividsolutions:jts:1.13") + testCompile("org.cassandraunit:cassandra-unit-spring:${testversions.cassandraUnitVersion}") { + exclude group: 'org.slf4j', module: 'slf4j-log4j12' + } + testCompile group: 'junit', name: 'junit', version: '4.11' +} + +task wrapper(type: Wrapper) { + gradleVersion = '2.12' +}
