###############################################################################
# Copyright (c) 2000, 2009 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     dakshinamurthy.karra@gmail.com - bug 165371
###############################################################################

AntLaunchDelegate_Launching__0__1=Launching {0}
AntLaunchDelegate_Running__0__2=Running {0}
AntLaunchDelegate_Build_In_Progress=Ant build {0} already in progress. Concurrent Ant builds are possible if you specify to build in a separate JRE.
AntLaunchDelegate_Failure=Failure of Background Ant Build
AntLaunchDelegate_22=&Do not show error dialog when Ant build fails
AntLaunchDelegate_23=Ant Build Failed
AntLaunchDelegate_28=Waiting for virtual machine to exit...

AntHomeClasspathEntry_8=Ant Home (Default)
AntHomeClasspathEntry_9=Ant Home ({0})
AntHomeClasspathEntry_10=Ant Home {0} does not exist
AntHomeClasspathEntry_11=Ant Home {0} does not contain a "lib" directory

ContributedClasspathEntriesEntry_1=Additional Tasks & Support