### Eclipse
*.pydevproject
.metadata
.gradle
tmp/
*.tmp
*.bak
*.swp
*~.nib
*.versionsBackup
local.properties
release.properties
.loadpath

#IDEA
*.iml
.settings
*.ipr
*.iws

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath

# sbteclipse plugin 
.target

# TeXlipse plugin
.texlipse

### Java
*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*


### Origin
# /
.classpath
.project
.idea
.DS_Store
target
logs
*.releaseBackup
*.log
*.DS_Store

# .settings
org.eclipse.m2e.core.prefs
org.eclipse.wst.common.component
org.eclipse.wst.common.project.facet.core.xml
org.eclipse.wst.validation.prefs
server/.settings/.jsdtscope
server/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
server/.settings/org.eclipse.wst.jsdt.ui.superType.container
server/.settings/org.eclipse.wst.jsdt.ui.superType.name
#web
webapp/app/WEB-INF/*
webapp/dist
webapp/node_modules:
webapp/CHANGELOG.md

# package file
build/tomcat
build/lib
build/spark
build/VERSION

*.tgz
*.tar.gz
webapp/app/components/*

ebay*
build/commit_SHA1
dist/
tomcat/
webapp/app/kylin-servlet.xml
webapp/app/web.xml
dependency-reduced-pom.xml
webapp/package-lock.json

#kylin
examples/test_case_data/*
examples/sparkappid
src/spark-project/examples/test_metadata/*
# stream_index
stream-receiver/stream_index
