<?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="53">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
	<repository location="https://download.eclipse.org/releases/2022-09/"/>
	<unit id="org.eclipse.m2e.feature.feature.group" version="2.0.4.20220904-1703"/>
	<unit id="org.eclipse.jst.web_ui.feature.feature.group" version="3.27.0.v202206160204"/>
	<unit id="org.eclipse.jst.enterprise_ui.feature.feature.group" version="3.27.0.v202206160204"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
			<repository location="https://download.eclipse.org/eclipse/updates/4.25/"/><!--Keep in sync with repo-ref in org.eclipse.m2e.repository/category.xml-->
			<unit id="org.eclipse.sdk.feature.group" version="0.0.0"/>
			<unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="0.0.0"/>
			<unit id="org.eclipse.ui.tests.harness" version="0.0.0"/>
			<unit id="org.mockito.mockito-core" version="0.0.0"/>
			<unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
		</location>
		<!-- need new version due to https://bugs.eclipse.org/bugs/show_bug.cgi?id=580708 -->
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
	<unit id="org.eclipse.swtbot.eclipse.feature.group" version="4.1.0.202304061555"/>
	<repository location="https://download.eclipse.org/technology/swtbot/snapshots/"/>
</location>
	<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
		<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20220830213456/repository"/>
		<unit id="com.google.gson" version="2.9.0.v20220704-0629"/>
		<unit id="org.apache.httpcomponents.httpclient" version="4.5.13.v20210128-2225"/>
	</location>
	<!-- shared OSGi bundles -->
	<location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven">
		<dependencies>
			<dependency>
				<groupId>org.apache.sling.ide</groupId>
				<artifactId>org.apache.sling.ide.api</artifactId>
				<version>1.2.3-SNAPSHOT</version>
				<type>jar</type>
			</dependency>
			<dependency>
				<groupId>org.apache.sling.ide</groupId>
				<artifactId>org.apache.sling.ide.artifacts</artifactId>
				<version>1.2.3-SNAPSHOT</version>
				<type>jar</type>
			</dependency>
			<dependency>
				<groupId>org.apache.sling.ide</groupId>
				<artifactId>org.apache.sling.ide.impl-vlt</artifactId>
				<version>1.2.3-SNAPSHOT</version>
				<type>jar</type>
			</dependency>
		</dependencies>
	</location>
</locations>
	<targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
</target>