All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.android.build.gradle.internal.CompileOptions Maven / Gradle / Ivy

There is a newer version: 2.3.0
Show newest version
/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * 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 excodess or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.build.gradle.internal;

import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.google.common.base.Charsets;
import org.gradle.api.JavaVersion;

import java.util.Locale;

/**
 * Compilation options.
 */
public class CompileOptions {
    @Nullable
    private JavaVersion sourceCompatibility;

    @Nullable
    private JavaVersion targetCompatibility;

    private String encoding = Charsets.UTF_8.name();

    /**
     * Default Java version that will be used if the source and target compatibility levels will
     * not be set explicitly.
     */
    private JavaVersion defaultJavaVersion = JavaVersion.VERSION_1_6;

    private boolean ndkCygwinMode = false;

    /**
     * Language level of the source code.
     */
    public void setSourceCompatibility(@NonNull Object sourceCompatibility) {
        this.sourceCompatibility = convert(sourceCompatibility);
    }

    /**
     * Language level of the source code.
     *
     * 

Similar to what * Gradle Java plugin uses. Formats supported are: *

    *
  • "1.6"
  • *
  • 1.6
  • *
  • JavaVersion.Version_1_6
  • *
  • "Version_1_6"
  • *
*/ @NonNull public JavaVersion getSourceCompatibility() { return sourceCompatibility != null ? sourceCompatibility : defaultJavaVersion; } /** * Language level of the target code. */ public void setTargetCompatibility(@NonNull Object targetCompatibility) { this.targetCompatibility = convert(targetCompatibility); } /** * Version of the generated Java bytecode. * *

Similar to what * Gradle Java plugin uses. Formats supported are: *

    *
  • "1.6"
  • *
  • 1.6
  • *
  • JavaVersion.Version_1_6
  • *
  • "Version_1_6"
  • *
*/ @NonNull public JavaVersion getTargetCompatibility() { return targetCompatibility != null ? targetCompatibility : defaultJavaVersion; } public void setEncoding(String encoding) { this.encoding = encoding; } /** * Source files encoding. */ public String getEncoding() { return encoding; } public void setDefaultJavaVersion(JavaVersion defaultJavaVersion) { this.defaultJavaVersion = defaultJavaVersion; } public JavaVersion getDefaultJavaVersion() { return defaultJavaVersion; } private static final String VERSION_PREFIX = "VERSION_"; /** * Convert all possible supported way of specifying a Java version to {@link JavaVersion} * @param version the user provided java version. * @return {@link JavaVersion} * @throws RuntimeException if it cannot be converted. */ @NonNull private static JavaVersion convert(@NonNull Object version) { // for backward version reasons, we support setting strings like 'Version_1_6' if (version instanceof String) { final String versionString = (String) version; if (versionString.toUpperCase(Locale.ENGLISH).startsWith(VERSION_PREFIX)) { version = versionString.substring(VERSION_PREFIX.length()).replace('_', '.'); } } return JavaVersion.toVersion(version); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy