/******************************************************************************* * * Copyright (c) 2004-2009 Oracle Corporation. * * 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: * * Olivier Lamy * * *******************************************************************************/ package hudson; import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.List; import org.apache.tools.ant.AntClassLoader; /** * classLoader which use first /WEB-INF/lib/*.jar and /WEB-INF/classes before * core classLoader <b>you must use the pluginFirstClassLoader true in the * maven-hpi-plugin</b> * * @author olamy * @since 1.371 */ public class PluginFirstClassLoader extends AntClassLoader implements Closeable { private List<URL> urls = new ArrayList<URL>(); public void addPathFiles(Collection<File> paths) throws IOException { for (File f : paths) { urls.add(f.toURI().toURL()); addPathFile(f); } } /** * @return List of jar used by the plugin /WEB-INF/lib/*.jar and classes * directory /WEB-INF/classes */ public List<URL> getURLs() { return urls; } public void close() throws IOException { cleanup(); } @Override protected Enumeration findResources(String arg0, boolean arg1) throws IOException { Enumeration enu = super.findResources(arg0, arg1); return enu; } @Override protected Enumeration findResources(String name) throws IOException { Enumeration enu = super.findResources(name); return enu; } @Override public URL getResource(String arg0) { URL url = super.getResource(arg0); return url; } @Override public InputStream getResourceAsStream(String name) { InputStream is = super.getResourceAsStream(name); return is; } }