mirror of https://github.com/sbt/sbt.git
50 lines
1.9 KiB
Java
50 lines
1.9 KiB
Java
package xsbti;
|
|
|
|
import java.io.File;
|
|
|
|
/**
|
|
* This represents an interface that can generate applications or servers.
|
|
*
|
|
* This provider grants access to launcher related features associated with
|
|
* the id.
|
|
*/
|
|
public interface AppProvider
|
|
{
|
|
/** Returns the ScalaProvider that this AppProvider will use. */
|
|
public ScalaProvider scalaProvider();
|
|
/** The ID of the application that will be created by 'newMain' or 'mainClass'.*/
|
|
public ApplicationID id();
|
|
/** The classloader used to load this application. */
|
|
public ClassLoader loader();
|
|
/** Loads the class for the entry point for the application given by 'id'.
|
|
* This method will return the same class every invocation.
|
|
* That is, the ClassLoader is not recreated each call.
|
|
* @deprecated("use entryPoint instead")
|
|
*
|
|
* Note: This will throw an exception if the launched application does not extend AppMain.
|
|
*/
|
|
@Deprecated
|
|
public Class<? extends AppMain> mainClass();
|
|
/** Loads the class for the entry point for the application given by 'id'.
|
|
* This method will return the same class every invocation.
|
|
* That is, the ClassLoader is not recreated each call.
|
|
*/
|
|
public Class<?> entryPoint();
|
|
/** Creates a new instance of the entry point of the application given by 'id'.
|
|
* It is NOT guaranteed that newMain().getClass() == mainClass().
|
|
* The sbt launcher can wrap generic static main methods. In this case, there will be a wrapper class,
|
|
* and you must use the `entryPoint` method.
|
|
* @throws IncompatibleClassChangeError if the configuration used for this Application does not
|
|
* represent a launched application.
|
|
*/
|
|
public AppMain newMain();
|
|
|
|
/** The classpath from which the main class is loaded, excluding Scala jars.*/
|
|
public File[] mainClasspath();
|
|
|
|
/** Returns a mechanism you can use to install/find/resolve components.
|
|
* A component is just a related group of files.
|
|
*/
|
|
public ComponentProvider components();
|
|
}
|