apply plugin: UtilitiesPlugin class UtilitiesPlugin implements Plugin { def void apply(Project project) { project.convention.plugins.utilities = new UtilitiesPluginDef() } } class UtilitiesPluginDef { public String determinePackageName(SourceDirectorySet sourceDirectorySet, File javaFile) { final javaFileAbsolutePath = javaFile.absolutePath; for ( File sourceDirectory : sourceDirectorySet.srcDirs ) { final String sourceDirectoryAbsolutePath = sourceDirectory.absolutePath; if ( javaFileAbsolutePath.startsWith( sourceDirectoryAbsolutePath ) ) { final String javaFileRelativePath = javaFileAbsolutePath.substring( sourceDirectoryAbsolutePath.length() + 1, javaFileAbsolutePath.lastIndexOf( File.separator ) ); return javaFileRelativePath.replace( File.separator, "." ); } } throw new RuntimeException( "ugh" ); } }