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

flair.gradle.tasks.processes.ProcessClasses.groovy Maven / Gradle / Ivy

package flair.gradle.tasks.processes

import flair.gradle.dependencies.Config
import flair.gradle.tasks.TaskGroup
import flair.gradle.tasks.VariantTask
import flair.gradle.utils.Variant
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction

/**
 * @author SamYStudiO ( [email protected] )
 */
class ProcessClasses extends VariantTask
{
	@InputFiles
	def Set inputFiles

	@OutputDirectory
	def File outputDir

	@Override
	public void setVariant( Variant variant )
	{
		super.variant = variant

		inputFiles = findInputFiles( )
		outputDir = project.file( "${ outputVariantDir }/classes" )

		description = "Processes source classes into ${ variant.name } ${ project.buildDir.name } directory"
	}

	public ProcessClasses()
	{
		group = TaskGroup.DEFAULT.name
	}

	@TaskAction
	public void processClasses()
	{
		outputDir.deleteDir( )

		inputFiles.each { file ->

			if( file.exists( ) )
			{
				project.copy {
					from file
					into "${ outputVariantDir }/classes"
				}
			}
		}
	}

	private Set findInputFiles()
	{
		List list = new ArrayList( )

		variant.getDirectories( Variant.NamingType.CAPITALIZE_BUT_FIRST ).each {

			String s = it == "main" ? Config.SOURCE.name : it + Config.SOURCE.name.capitalize( )

			list.addAll( project.configurations.getByName( s ).files )
		}

		return list
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy