/* * Copyright 2012-2017 the original author or authors. * * Licensed 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. */ package org.springframework.boot.gradle.tasks.bundling; import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileTreeElement; import org.gradle.api.specs.Spec; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Optional; /** * A Spring Boot "fat" archive task. * * @author Andy Wilkinson * @since 2.0.0 */ public interface BootArchive extends Task { /** * Returns the main class of the application. * * @return the main class */ @Input @Optional String getMainClass(); /** * Sets the main class of the application. * * @param mainClass the main class of the application */ void setMainClass(String mainClass); /** * Adds Ant-style patterns that identify files that must be unpacked from the archive * when it is launched. * * @param patterns the patterns */ void requiresUnpack(String... patterns); /** * Adds a spec that identifies files that must be unpacked from the archive when it is * launched. * * @param spec the spec */ void requiresUnpack(Spec<FileTreeElement> spec); /** * Returns the {@link LaunchScriptConfiguration} that will control the script, if any, * that is prepended to the archive. * * @return the launch script configuration */ @Input LaunchScriptConfiguration getLaunchScript(); /** * Applies the given {@code action} to the {@link LaunchScriptConfiguration} of this * archive. * * @param action the action to apply */ void launchScript(Action<LaunchScriptConfiguration> action); /** * Returns the classpath that will be included in the archive. * * @return the classpath */ @Optional @Classpath FileCollection getClasspath(); /** * Adds files to the classpath to include in the archive. The given {@code classpath} * are evaluated as per {@link Project#files(Object...)}. * * @param classpath the additions to the classpath */ void classpath(Object... classpath); /** * Returns {@code true} if the Devtools jar should be excluded, otherwise * {@code false}. * * @return {@code true} if the Devtools jar should be excluded, or {@code false} if * not */ @Input boolean isExcludeDevtools(); /** * Sets whether or not the Devtools jar should be excluded. * * @param excludeDevtools {@code true} if the Devtools jar should be excluded, or * {@code false} if not */ void setExcludeDevtools(boolean excludeDevtools); }