1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-27 00:38:11 -07:00

Better exclusion.

This commit is contained in:
Cedric Beust 2015-12-02 19:11:01 -08:00
parent 3eca68d7bd
commit d82f9c5dde
3 changed files with 39 additions and 31 deletions

View file

@ -11,7 +11,6 @@ import com.beust.kobalt.api.annotation.Task
import com.beust.kobalt.glob
import com.beust.kobalt.internal.JvmCompilerPlugin
import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.api.IClasspathDependency
import com.beust.kobalt.maven.LocalRepo
import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.KobaltExecutors
@ -21,8 +20,6 @@ import com.beust.kobalt.plugin.java.JavaPlugin
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
import java.nio.file.FileSystems
import java.nio.file.PathMatcher
import java.nio.file.Paths
import java.util.jar.JarOutputStream
import java.util.zip.ZipOutputStream
@ -73,24 +70,6 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
return TaskResult()
}
private fun isExcluded(file: File, excludes: List<Glob>) : Boolean {
if (excludes.isEmpty()) {
return false
} else {
val ex = arrayListOf<PathMatcher>()
excludes.forEach {
ex.add(FileSystems.getDefault().getPathMatcher("glob:${it.spec}"))
}
ex.forEach {
if (it.matches(Paths.get(file.name))) {
log(2, "Excluding $file")
return true
}
}
}
return false
}
private fun generateWar(project: Project, war: War) : File {
//
// src/main/web app and classes
@ -154,7 +133,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
// Class files
val files = KFiles.findRecursively(classesDir).map { File(relClassesDir.toFile(), it) }
val filesNotExcluded : List<File> = files.filter { ! isExcluded(it, jar.excludes) }
val filesNotExcluded : List<File> = files.filter { ! KFiles.isExcluded(it, jar.excludes) }
val fileSpecs = arrayListOf<IFileSpec>()
filesNotExcluded.forEach {
fileSpecs.add(FileSpec(it.path.toString().substring(prefixPath.toString().length + 1)))
@ -171,6 +150,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
log(2, "Creating fat jar")
val seen = hashSetOf<String>()
@Suppress("UNCHECKED_CAST")
val dependentProjects = project.projectProperties.get(JvmCompilerPlugin.DEPENDENT_PROJECTS)
as List<ProjectDescription>
listOf(dependencyManager.calculateDependencies(project, context, dependentProjects,
@ -183,7 +163,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
}.forEach { file : File ->
if (! seen.contains(file.name)) {
seen.add(file.name)
if (!isExcluded(file, jar.excludes)) {
if (! KFiles.isExcluded(file, jar.excludes)) {
allFiles.add(IncludedFile(arrayListOf(FileSpec(file.path))))
}
}
@ -204,7 +184,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
true /* expandJarFiles */, jarFactory)
}
private fun buildDir(project: Project) = KFiles.makeDir(project.directory, project.buildDirectory!!)
private fun buildDir(project: Project) = KFiles.makeDir(project.directory, project.buildDirectory)
private fun findIncludedFiles(directory: String, files: List<IncludedFile>, excludes: List<IFileSpec.Glob>)
: List<IncludedFile> {
@ -221,7 +201,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
}
}
if (!isExcluded(file, excludes)) {
if (! KFiles.isExcluded(file, excludes)) {
includedSpecs.add(FileSpec(file.path))
} else {
log(2, "Not adding ${file.path} to jar file because it's excluded")