# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.

# Since 4GB is not enough for the build, we use 'sudo' environment with 7.5GB RAM
# Downside: It's starts a little bit slower
# How to fix: Change build setting or fix code.
# https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
sudo: required
group: deprecated-2017Q2

services:
  - docker

language: java

env:
  - DB_PROFILE=hsql
  - DB_PROFILE=h2
  - DB_PROFILE=derby
  - DB_PROFILE=mysql-docker
  - DB_PROFILE=postgres-docker
  - DB_PROFILE=sqlserver-docker

jdk:
  - oraclejdk8
  - oraclejdk7

script:
  - mvn verify -q -DcayenneTestConnection=$DB_PROFILE -DcayenneLogLevel=ERROR

# prevent Travis from unneeded "mvn install" run
install: /bin/true

cache:
  directories:
    - $HOME/.m2
