#
# 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.
#

#
# SIS project file for NetBeans.
# This can used as an alternative to Maven projects for development and testing purpose only.
#
application.title    = Spatial Information System (SIS)
application.vendor   = Apache
application.homepage = http://sis.apache.org/
application.desc     = Apache SIS is a free software, Java language library for developing geospatial applications.

#
# Some global configuration.
#
includes             = **
excludes             =
main.class           =
manifest.file        = manifest.mf
project.license      = apache20
no.dependencies      = true
source.encoding      = UTF-8
javac.source         = 1.6
javac.target         = 1.6
platform.active      = default_platform
run.jvmargs          = -ea -Dorg.apache.sis.test.verbose=true -Dorg.apache.sis.test.extensive=true
junit.forkmode       = once

#
# Source directories.
#
project.root         = ../..
src.local-src.dir    = ../local-src
src.webapp.dir       = ${project.root}/application/sis-webapp/src/main/java
src.console.dir      = ${project.root}/application/sis-console/src/main/java
test.console.dir     = ${project.root}/application/sis-console/src/test/java
src.netcdf.dir       = ${project.root}/storage/sis-netcdf/src/main/java
test.netcdf.dir      = ${project.root}/storage/sis-netcdf/src/test/java
src.shapefile.dir    = ${project.root}/storage/sis-shapefile/src/main/java
test.shapefile.dir   = ${project.root}/storage/sis-shapefile/src/test/java
src.storage.dir      = ${project.root}/storage/sis-storage/src/main/java
test.storage.dir     = ${project.root}/storage/sis-storage/src/test/java
src.feature.dir      = ${project.root}/core/sis-feature/src/main/java
test.feature.dir     = ${project.root}/core/sis-feature/src/test/java
src.referencing.dir  = ${project.root}/core/sis-referencing/src/main/java
test.referencing.dir = ${project.root}/core/sis-referencing/src/test/java
src.metadata.dir     = ${project.root}/core/sis-metadata/src/main/java
test.metadata.dir    = ${project.root}/core/sis-metadata/src/test/java
src.utility.dir      = ${project.root}/core/sis-utility/src/main/java
test.utility.dir     = ${project.root}/core/sis-utility/src/test/java
src.fra-profile.dir  = ${project.root}/profiles/sis-french-profile/src/main/java
test.fra-profile.dir = ${project.root}/profiles/sis-french-profile/src/test/java

#
# Dependencies on other NetBeans projects. The path is relative to the "NetBeans" parent directory.
# If a different path is desired, copy that line in the "private/private.properties" file and edit
# its value there.
#
project.GeoAPI       = ../../../../GeoAPI/master/ide-project/NetBeans

#
# Version numbers for all dependencies.
# Those dependencies must exist in the local Maven repository.
# Those numbers should match the ones declared in the pom.xml files.
#
unit-api.version     = 0.6.1
jsr275.version       = 0.9.3
jama.version         = 1.0.3
geometry.version     = 1.2.1
georss.version       = 0.9.8
rome.version         = 0.9
jdom1.version        = 1.0
jdom2.version        = 2.0.4
jee.version          = 6.0
osgi.version         = 6.0.0
netcdf.version       = 4.4.2
joda-time.version    = 2.2
httpclient.version   = 4.2.6
slf4j.version        = 1.7.5
junit.version        = 4.12
hamcrest.version     = 1.3
jaxb-ns-mapper       = 2.2.4

#
# Classpaths for compilation, execution and tests.
# The dependencies are read directy from the local Maven directory.
#
maven.repository   = ${user.home}/.m2/repository
endorsed.classpath=
javac.classpath=\
    ${project.GeoAPI}/dist/geoapi.jar:\
    ${maven.repository}/org/unitsofmeasurement/unit-api/${unit-api.version}/unit-api-${unit-api.version}.jar:\
    ${maven.repository}/javax/measure/jsr-275/${jsr275.version}/jsr-275-${jsr275.version}.jar:\
    ${maven.repository}/com/esri/geometry/esri-geometry-api/${geometry.version}/esri-geometry-api-${geometry.version}.jar:\
    ${maven.repository}/org/geonames/georss-rome/${georss.version}/georss-rome-${georss.version}.jar:\
    ${maven.repository}/rome/rome/${rome.version}/rome-${rome.version}.jar:\
    ${maven.repository}/jdom/jdom/${jdom1.version}/jdom-${jdom1.version}.jar:\
    ${maven.repository}/javax/javaee-api/${jee.version}/javaee-api-${jee.version}.jar:\
    ${maven.repository}/edu/ucar/cdm/${netcdf.version}/cdm-${netcdf.version}.jar:\
    ${maven.repository}/org/osgi/org.osgi.core/${osgi.version}/org.osgi.core-${osgi.version}.jar:\
    ${maven.repository}/com/googlecode/jaxb-namespaceprefixmapper-interfaces/JAXBNamespacePrefixMapper/${jaxb-ns-mapper}/JAXBNamespacePrefixMapper-${jaxb-ns-mapper}.jar
javac.processorpath=\
    ${javac.classpath}
javac.test.classpath=\
    ${javac.classpath}:\
    ${maven.repository}/junit/junit/${junit.version}/junit-${junit.version}.jar:\
    ${maven.repository}/org/hamcrest/hamcrest-core/${hamcrest.version}/hamcrest-core-${hamcrest.version}.jar:\
    ${maven.repository}/gov/nist/math/jama/${jama.version}/jama-${jama.version}.jar:\
    ${project.GeoAPI}/dist/geoapi-tests.jar:\
    ${build.classes.dir}
javac.test.processorpath=\
    ${javac.test.classpath}
run.classpath=\
    ${javac.classpath}:\
    ${build.classes.dir}
run.test.classpath=\
    ${javac.test.classpath}:\
    ${build.test.classes.dir}:\
    ${maven.repository}/org/jdom/jdom2/${jdom2.version}/jdom2-${jdom2.version}.jar:\
    ${maven.repository}/edu/ucar/udunits/${netcdf.version}/udunits-${netcdf.version}.jar:\
    ${maven.repository}/edu/ucar/httpservices/${netcdf.version}/httpservices-${netcdf.version}.jar:\
    ${maven.repository}/joda-time/joda-time/${joda-time.version}/joda-time-${joda-time.version}.jar:\
    ${maven.repository}/org/apache/httpcomponents/httpclient/${httpclient.version}/httpclient-${httpclient.version}.jar:\
    ${maven.repository}/org/slf4j/slf4j-api/${slf4j.version}/slf4j-api-${slf4j.version}.jar:\
    ${maven.repository}/org/slf4j/slf4j-jdk14/${slf4j.version}/slf4j-jdk14-${slf4j.version}.jar
debug.classpath=\
    ${run.classpath}
debug.test.classpath=\
    ${run.test.classpath}

#
# Build configuration and destination directories.
#
javac.compilerargs                       = -Xdoclint:syntax,html,missing/protected,accessibility/protected
javac.deprecation                        = true
javac.external.vm                        = false
javadoc.windowtitle                      = Apache SIS
javadoc.encoding                         = ${source.encoding}
javadoc.author                           = true
javadoc.version                          = true
javadoc.use                              = true
javadoc.noindex                          = false
javadoc.nonavbar                         = false
javadoc.notree                           = false
javadoc.private                          = false
javadoc.splitindex                       = false
javadoc.additionalparam                  =
annotation.processing.enabled            = true
annotation.processing.enabled.in.editor  = false
annotation.processing.processors.list    =
annotation.processing.run.all.processors = true
annotation.processing.source.output      = ${build.generated.sources.dir}/ap-source-output
jnlp.enabled                             = false
jnlp.codebase.type                       = no.codebase
jnlp.descriptor                          = application
jnlp.mixed.code                          = default
jnlp.offline-allowed                     = false
jnlp.signed                              = false
jnlp.signing                             =
jnlp.signing.alias                       =
jnlp.signing.keystore                    =
jar.compress                             = true
jar.index                                = ${jnlp.enabled}
jar.archive.disabled                     = ${jnlp.enabled}
meta.inf.dir                             = ${src.dir}/META-INF
build.dir                                = build
build.classes.dir                        = ${build.dir}/classes
build.generated.dir                      = ${build.dir}/generated
build.generated.sources.dir              = ${build.dir}/generated-sources
build.test.classes.dir                   = ${build.dir}/test/classes
build.test.results.dir                   = ${build.dir}/test/results
build.classes.excludes                   = **/*.java,**/*.form,**/*.html,**/*.txt,**/*.png,**/*.bak,**/resources/*.properties
build.sysclasspath                       = ignore
dist.dir                                 = dist
dist.jar                                 = ${dist.dir}/SIS.jar
dist.javadoc.dir                         = ${dist.dir}/javadoc
mkdist.disabled                          = true
