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

libs.CopyLibs.classpath=\
    ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
libs.CopyLibs.displayName=CopyLibs Task
libs.CopyLibs.prop-version=2.0
libs.jopt-simple.classpath=\
    ${base}/jopt-simple/jopt-simple-3.2.jar
libs.jopt-simple.javadoc=\
    ${base}/jopt-simple/jopt-simple-3.2-javadoc.jar!//
libs.jopt-simple.src=\
    ${base}/jopt-simple/jopt-simple-3.2-sources.jar
libs.junit.classpath=\
    ${base}/junit/junit-3.8.2.jar
libs.junit.javadoc=\
    ${base}/junit/junit-3.8.2-api.zip
libs.junit_4.classpath=\
    ${base}/junit_4/junit-4.5.jar
libs.junit_4.javadoc=\
    ${base}/junit_4/junit-4.5-api.zip
libs.junit_4.src=\
    ${base}/junit_4/junit-4.5-src.jar
libs.jersey.classpath=\
    ${base}/jersey-1.1/grizzly-servlet-webserver-1.8.6.3.jar:\
    ${base}/jersey-1.1/jersey-client-1.0.1.jar:\
    ${base}/jersey-1.1/jersey-core-1.0.1.jar:\
    ${base}/jersey-1.1/jersey-server-1.0.1.jar:\
    ${base}/jersey-1.1/asm-all-3.1.jar:\
    ${base}/jersey-1.1/jsr311-api-1.0.jar
libs.jersey.src=\
    ${base}/jersey-1.1/jersey-client-1.0.1-sources.jar:\
    ${base}/jersey-1.1/jersey-core-1.0.1-sources.jar:\
    ${base}/jersey-1.1/jersey-server-1.0.1-sources.jar:\
    ${base}/jersey-1.1/asm-all-3.1-sources.jar:\
    ${base}/jersey-1.1/jsr311-api-1.0-sources.jar
libs.lucene.classpath=\
    ${base}/lucene-3.5.0/lucene-core-3.5.0.jar
libs.jersey.javadoc=\
    ${base}/jersey-1.1/jersey-client-1.0.1-javadoc.jar!//:\
    ${base}/jersey-1.1/jersey-core-1.0.1-javadoc.jar!//:\
    ${base}/jersey-1.1/jersey-server-1.0.1-javadoc.jar!//:\
    ${base}/jersey-1.1/jsr311-api-1.0-javadoc.jar!//
libs.lucene.javadoc=\
    ${base}/lucene-3.5.0/lucene-core-3.5.0-javadoc.jar!//
libs.lucene.src=\
    ${base}/lucene-3.5.0/lucene-core-3.5.0-sources.jar
libs.javac.classpath=\
    ${base}/javac/nb-javac-api.jar:\
    ${base}/javac/nb-javac-impl.jar
libs.freemarker.classpath=\
    ${base}/freemarker/freemarker-2.3.16.jar
libs.freemarker.src=\
    ${base}/freemarker/freemarker-src.zip

