/* * Copyright 2000-2009 JetBrains s.r.o. * * 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 com.intellij.compiler.ant; import com.intellij.openapi.module.Module; /** * Ant file generation options. This object is availalbe during construction of ant object tree. * * @author anna */ public abstract class GenerationOptions { /** * This option specifies whether mulitfile or single file ant script is created. */ public final boolean generateSingleFile; /** * This option specifies whehter standard javac or javac2 task is used */ public final boolean enableFormCompiler; /** * This option speciries whether files are backed up before generation */ public final boolean backupPreviouslyGeneratedFiles; /** * This option specifies whether target JDK is forced during compilation or default ant JDK is used. */ public final boolean forceTargetJdk; /** * if true, the runtime classpath is inlined */ public final boolean inlineRuntimeClasspath; /** * if true, the runtime classpath is inlined */ public final boolean expandJarDirectories; /** * A constructor * * @param forceTargetJdk a value of corresponding option * @param generateSingleFile a value of corresponding option * @param enableFormCompiler a value of corresponding option * @param backupPreviouslyGeneratedFiles a value of corresponding option * @param inlineRuntimeClasspath if true, a runtiem classpaths are inlined * @param expandJarDirectories if true, jar directories are expaned */ public GenerationOptions(boolean forceTargetJdk, boolean generateSingleFile, boolean enableFormCompiler, boolean backupPreviouslyGeneratedFiles, boolean inlineRuntimeClasspath, boolean expandJarDirectories) { this.forceTargetJdk = forceTargetJdk; this.generateSingleFile = generateSingleFile; this.enableFormCompiler = enableFormCompiler; this.backupPreviouslyGeneratedFiles = backupPreviouslyGeneratedFiles; this.inlineRuntimeClasspath = inlineRuntimeClasspath; this.expandJarDirectories = expandJarDirectories; } /** * A constructor * * @param forceTargetJdk a value of corresponding option * @param generateSingleFile a value of corresponding option * @param enableFormCompiler a value of corresponding option * @param backupPreviouslyGeneratedFiles a value of corresponding option * @param inlineRuntimeClasspath if true a runtiem classpaths are inlined */ public GenerationOptions(boolean forceTargetJdk, boolean generateSingleFile, boolean enableFormCompiler, boolean backupPreviouslyGeneratedFiles, boolean inlineRuntimeClasspath) { this(forceTargetJdk, generateSingleFile, enableFormCompiler, backupPreviouslyGeneratedFiles, inlineRuntimeClasspath, false); } /** * A constructor * * @param forceTargetJdk a value of corresponding option * @param generateSingleFile a value of corresponding option * @param enableFormCompiler a value of corresponding option * @param backupPreviouslyGeneratedFiles a value of corresponding option */ @Deprecated public GenerationOptions(boolean forceTargetJdk, boolean generateSingleFile, boolean enableFormCompiler, boolean backupPreviouslyGeneratedFiles) { this(forceTargetJdk, generateSingleFile, enableFormCompiler, backupPreviouslyGeneratedFiles, false); } /** * Substitute path prefix with macro reference if it matches some macro. * * @param path a path to update * @return an updated path or argument */ public abstract String subsitutePathWithMacros(String path); /** * Get property reference for the specified url of module output directory * * @param url an URL to map * @return the property reference in the form ${..} */ public abstract String getPropertyRefForUrl(String url); /** * @return an array of module chunks. an array must not be modified by the clients. */ public abstract ModuleChunk[] getModuleChunks(); /** * Get the chunk that contains the specified module. * * @param module the module to find * @return the chunk that contains specifid module */ public abstract ModuleChunk getChunkByModule(Module module); /** * @return a set of custom compilers, each compiler is used at least once in some chunk. */ public abstract ChunkCustomCompilerExtension[] getCustomCompilers(); /** * @return true if the idea home property must be generated */ public abstract boolean isIdeaHomeGenerated(); public abstract String getBuildFileName(); public abstract String getPropertiesFileName(); }