/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.gradle.plugins.defaults;
import com.liferay.gradle.plugins.LiferayAntPlugin;
import com.liferay.gradle.plugins.defaults.internal.LiferayRelengPlugin;
import com.liferay.gradle.plugins.defaults.internal.util.GradleUtil;
import com.liferay.gradle.plugins.defaults.tasks.ReplaceRegexTask;
import groovy.lang.Closure;
import org.gradle.api.Action;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.plugins.BasePlugin;
import org.gradle.api.plugins.MavenPlugin;
import org.gradle.api.tasks.Upload;
/**
* @author Andrea Di Giorgi
*/
public class LiferayAntDefaultsPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
GradleUtil.applyPlugin(project, LiferayAntPlugin.class);
_applyPlugins(project);
// GRADLE-2427
_addTaskInstall(project);
_applyConfigScripts(project);
final ReplaceRegexTask updateVersionTask = _addTaskUpdateVersion(
project);
_configureProject(project);
GradleUtil.excludeTasksWithProperty(
project, LiferayOSGiDefaultsPlugin.SNAPSHOT_IF_STALE_PROPERTY_NAME,
true, MavenPlugin.INSTALL_TASK_NAME,
BasePlugin.UPLOAD_ARCHIVES_TASK_NAME);
project.afterEvaluate(
new Action<Project>() {
@Override
public void execute(Project project) {
GradleUtil.setProjectSnapshotVersion(project);
// setProjectSnapshotVersion must be called before
// configureTaskUploadArchives, because the latter one needs
// to know if we are publishing a snapshot or not.
_configureTaskUploadArchives(project, updateVersionTask);
}
});
}
private Upload _addTaskInstall(Project project) {
Upload upload = GradleUtil.addTask(
project, MavenPlugin.INSTALL_TASK_NAME, Upload.class, true);
Configuration configuration = GradleUtil.getConfiguration(
project, Dependency.ARCHIVES_CONFIGURATION);
upload.setConfiguration(configuration);
upload.setDescription(
"Installs the '" + configuration.getName() +
"' artifacts into the local Maven repository.");
return upload;
}
private ReplaceRegexTask _addTaskUpdateVersion(final Project project) {
ReplaceRegexTask replaceRegexTask = GradleUtil.addTask(
project, LiferayRelengPlugin.UPDATE_VERSION_TASK_NAME,
ReplaceRegexTask.class);
replaceRegexTask.match(
"module-incremental-version=(\\d+)",
"docroot/WEB-INF/liferay-plugin-package.properties");
replaceRegexTask.setDescription(
"Updates \"module-incremental-version\" in the " +
"liferay-plugin-package.properties file.");
replaceRegexTask.setReplacement(
new Closure<String>(project) {
@SuppressWarnings("unused")
public String doCall(String group) {
int moduleIncrementalVersion = Integer.parseInt(group);
return String.valueOf(moduleIncrementalVersion + 1);
}
});
return replaceRegexTask;
}
private void _applyConfigScripts(Project project) {
GradleUtil.applyScript(
project,
"com/liferay/gradle/plugins/defaults/dependencies" +
"/config-maven.gradle",
project);
}
private void _applyPlugins(Project project) {
GradleUtil.applyPlugin(project, MavenPlugin.class);
}
private void _configureProject(Project project) {
String group = GradleUtil.getGradlePropertiesValue(
project, "project.group", _GROUP);
project.setGroup(group);
}
private void _configureTaskUploadArchives(
Project project, Task updatePluginVersionTask) {
if (GradleUtil.isSnapshot(project)) {
return;
}
Task uploadArchivesTask = GradleUtil.getTask(
project, BasePlugin.UPLOAD_ARCHIVES_TASK_NAME);
uploadArchivesTask.finalizedBy(updatePluginVersionTask);
}
private static final String _GROUP = "com.liferay.plugins";
}