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

org.gradle.api.reporting.ReportingExtension Maven / Gradle / Ivy

There is a newer version: 8.11.1
Show newest version
/*
 * Copyright 2011 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.gradle.api.reporting;

import org.gradle.api.Project;
import org.gradle.api.internal.file.FileLookup;
import org.gradle.api.internal.project.ProjectInternal;

import java.io.File;
import java.util.concurrent.Callable;

/**
 * A project extension named "reporting" that provides basic reporting settings and utilities.
 * 

* Example usage: *

 * reporting {
 *     baseDir "$buildDir/our-reports"
 * }
 * 
*

* When implementing a task that produces reports, the location of where to generate reports should be obtained * via the {@link #file(String)} method of this extension. */ public class ReportingExtension { /** * The name of this extension ("{@value}") */ public static final String NAME = "reporting"; /** * The default name of the base directory for all reports, relative to {@link org.gradle.api.Project#getBuildDir()} ({@value}). */ public static final String DEFAULT_REPORTS_DIR_NAME = "reports"; private final ProjectInternal project; private Object baseDir; public ReportingExtension(Project project) { this.project = (ProjectInternal)project; this.baseDir = new Callable() { public File call() throws Exception { return ReportingExtension.this.project.getServices(). get(FileLookup.class).getFileResolver(ReportingExtension.this.project.getBuildDir()). resolve(DEFAULT_REPORTS_DIR_NAME); } }; } /** * The base directory for all reports *

* This value can be changed, so any files derived from this should be calculated on demand. * * @return The base directory for all reports */ public File getBaseDir() { return project.file(baseDir); } /** * Sets the base directory to use for all reports * * @param baseDir The base directory to use for all reports * @since 4.0 */ public void setBaseDir(File baseDir) { setBaseDir((Object) baseDir); } /** * Sets the base directory to use for all reports *

* The value will be converted to a {@code File} on demand via {@link Project#file(Object)}. * * @param baseDir The base directory to use for all reports */ public void setBaseDir(Object baseDir) { this.baseDir = baseDir; } /** * Creates a file object for the given path, relative to {@link #getBaseDir()}. *

* The reporting base dir can be changed, so users of this method should use it on demand where appropriate. * * @param path the relative path * @return a file object at the given path relative to {@link #getBaseDir()} */ public File file(String path) { // TODO should this take Object? return this.project.getServices().get(FileLookup.class).getFileResolver(getBaseDir()).resolve(path); } // TODO this doesn't belong here, that java plugin should add an extension to this guy with this public String getApiDocTitle() { Object version = project.getVersion(); if (Project.DEFAULT_VERSION.equals(version)) { return project.getName() + " API"; } else { return project.getName() + " " + version + " API"; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy