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

is.autoload=true

javac.compilerargs=-Xlint -Xlint:-serial
javac.source=1.6
jnlp.indirect.jars=\
    modules/ext/jaxws22/FastInfoset.jar,\
    modules/ext/jaxws22/gmbal-api-only.jar,\
    modules/ext/jaxws22/ha-api.jar,\
    modules/ext/jaxws22/javax.mail_1.4.jar,\
    modules/ext/jaxws22/jaxws-rt.jar,\
    modules/ext/jaxws22/jaxws-tools.jar,\
    modules/ext/jaxws22/management-api.jar,\
    modules/ext/jaxws22/mimepull.jar,\
    modules/ext/jaxws22/policy.jar,\
    modules/ext/jaxws22/saaj-impl.jar,\
    modules/ext/jaxws22/stax-ex.jar,\
    modules/ext/jaxws22/stax2-api.jar,\
    modules/ext/jaxws22/streambuffer.jar,\
    modules/ext/jaxws22/woodstox-core-asl.jar,\
    docs/jaxws-api-doc.zip

release.external/FastInfoset-1.2.12.jar=modules/ext/jaxws22/FastInfoset.jar
release.external/gmbal-api-only-3.1.0-b001.jar=modules/ext/jaxws22/gmbal-api-only.jar
release.external/ha-api-3.1.8.jar=modules/ext/jaxws22/ha-api.jar
release.external/mail-1.4.jar=modules/ext/jaxws22/javax.mail_1.4.jar
release.external/jaxws-rt-2.2.6-1.jar=modules/ext/jaxws22/jaxws-rt.jar
release.external/jaxws-tools-2.2.6-1.jar=modules/ext/jaxws22/jaxws-tools.jar
release.external/management-api-3.0.0-b012.jar=modules/ext/jaxws22/management-api.jar
release.external/mimepull-1.8.jar=modules/ext/jaxws22/mimepull.jar
release.external/policy-2.3.1.jar=modules/ext/jaxws22/policy.jar
release.external/saaj-impl-1.3.18.jar=modules/ext/jaxws22/saaj-impl.jar
release.external/stax-ex-1.7.jar=modules/ext/jaxws22/stax-ex.jar
release.external/stax2-api-3.1.1.jar=modules/ext/jaxws22/stax2-api.jar
release.external/streambuffer-1.4.jar=modules/ext/jaxws22/streambuffer.jar
release.external/woodstox-core-asl-4.1.2.jar=modules/ext/jaxws22/woodstox-core-asl.jar

# JAX-WS 2.1 Javadoc
release.external/jaxws-api-2.2.6-javadoc.jar=docs/jaxws-api-doc.zip

# throws NPE for some reason
sigtest.gen.fail.on.error=false
