<?xml version="1.0" encoding="UTF-8" standalone="no"?><!--
    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.
--><?pde version="3.8"?><target name="Sling IDE Tools" sequenceNumber="54">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.m2e.feature.feature.group" version="1.6.0.20150526-2032"/>
<repository location="https://download.eclipse.org/technology/m2e/releases/1.6"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="com.google.gson" version="2.2.4.v201311231704"/>
<unit id="org.apache.commons.collections" version="3.2.2.v201511171945"/>
<unit id="org.apache.commons.httpclient" version="3.1.0.v201012070820"/>
<unit id="org.apache.commons.io" version="2.2.0.v201405211200"/>
<unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
<unit id="org.junit" version="4.12.0.v201504281640"/>
<unit id="org.slf4j.api" version="1.7.10.v20170428-1633"/>
<unit id="org.slf4j.binding.simple" version="1.7.10.v20160301-1109"/>
<unit id="org.slf4j.apis.log4j" version="1.7.10.v20160208-0839"/>
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20170516192513/repository/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.swtbot.eclipse.feature.group" version="2.4.0.201604200752"/>
<unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="2.4.0.201604200752"/>
<unit id="org.eclipse.swtbot.feature.group" version="2.4.0.201604200752"/>
<repository location="https://download.eclipse.org/technology/swtbot/releases/2.4.0/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.jst.enterprise_ui.feature.feature.group" version="3.9.2.v201802121827"/>
<unit id="org.eclipse.jst.server_adapters.feature.feature.group" version="3.2.400.v201711301708"/>
<unit id="org.eclipse.jst.server_ui.feature.feature.group" version="3.4.300.v201709251835"/>
<unit id="org.eclipse.jst.web_ui.feature.feature.group" version="3.9.0.v201802152012"/>
<unit id="org.eclipse.pde.feature.group" version="3.13.3.v20180301-1154"/>
<unit id="org.eclipse.wst.server_adapters.feature.feature.group" version="3.2.601.v201711302104"/>
<unit id="org.eclipse.wst.web_ui.feature.feature.group" version="3.9.2.v201801171858"/>
<unit id="org.eclipse.wst.xml_ui.feature.feature.group" version="3.9.2.v201801171858"/>
<repository location="https://download.eclipse.org/releases/oxygen/"/>
</location>
</locations>
</target>
