Skip to content

Commit c9946ee

Browse files
author
archinamon
committed
implemented exclude filter policy (again)
1 parent ce639e5 commit c9946ee

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

android-gradle-aspectj/src/main/kotlin/com/archinamon/AspectJExtension.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ open class AspectJExtension {
66

77
open var includeAllJars = false
88
open var includeJar = mutableSetOf<String>()
9+
open var excludeJar = mutableSetOf<String>()
910
open var extendClasspath = true
1011

1112
open var includeAspectsFromJar = mutableSetOf<String>()
@@ -36,6 +37,11 @@ open class AspectJExtension {
3637
return this
3738
}
3839

40+
fun excludeJar(vararg filters: String): AspectJExtension {
41+
excludeJar.addAll(filters)
42+
return this
43+
}
44+
3945
fun includeAspectsFromJar(vararg filters: String): AspectJExtension {
4046
includeAspectsFromJar.addAll(filters)
4147
return this

android-gradle-aspectj/src/main/kotlin/com/archinamon/api/transform/AspectJTransform.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.archinamon.api.AspectJMergeJars
1212
import com.archinamon.api.AspectJWeaver
1313
import com.archinamon.plugin.ConfigScope
1414
import com.archinamon.utils.*
15+
import com.archinamon.utils.DependencyFilter.isExcludeFilterMatched
1516
import com.archinamon.utils.DependencyFilter.isIncludeFilterMatched
1617
import com.google.common.collect.Sets
1718
import org.aspectj.util.FileUtil
@@ -110,6 +111,7 @@ internal abstract class AspectJTransform(val project: Project, private val polic
110111

111112
val outputProvider = transformInvocation.outputProvider
112113
val includeJars = config.aspectj().includeJar
114+
val excludeJars = config.aspectj().excludeJar
113115
val includeAspects = config.aspectj().includeAspectsFromJar
114116

115117
if (!transformInvocation.isIncremental) {
@@ -147,17 +149,26 @@ internal abstract class AspectJTransform(val project: Project, private val polic
147149
aspectJWeaver.classPath shl jar.file
148150

149151
if (modeComplex()) {
150-
if (config.aspectj().includeAllJars || (includeJars.isNotEmpty() && isIncludeFilterMatched(jar.file, includeJars))) {
152+
val includeAllJars = config.aspectj().includeAllJars
153+
val includeFilterMatched = includeJars.isNotEmpty() && isIncludeFilterMatched(jar.file, includeJars)
154+
val excludeFilterMatched = excludeJars.isNotEmpty() && isExcludeFilterMatched(jar.file, excludeJars)
155+
156+
if (excludeFilterMatched) {
157+
logJarInpathRemoved(jar)
158+
}
159+
160+
if (!excludeFilterMatched && (includeAllJars || includeFilterMatched)) {
151161
logJarInpathAdded(jar)
152162
aspectJWeaver.inPath shl jar.file
153163
} else {
154164
copyJar(outputProvider, jar)
155165
}
156166
} else {
157-
if (includeJars.isNotEmpty()) logIgnoreInpathJars()
167+
if (includeJars.isNotEmpty() || excludeJars.isNotEmpty()) logIgnoreInpathJars()
158168
}
159169

160-
if (includeAspects.isNotEmpty() && isIncludeFilterMatched(jar.file, includeAspects)) {
170+
val includeAspectsFilterMatched = includeAspects.isNotEmpty() && isIncludeFilterMatched(jar.file, includeAspects)
171+
if (includeAspectsFilterMatched) {
161172
logJarAspectAdded(jar)
162173
aspectJWeaver.aspectPath shl jar.file
163174
}

android-gradle-aspectj/src/main/kotlin/com/archinamon/utils/DependencyFilter.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.archinamon.utils
33
import java.io.File
44

55
/**
6-
* TODO: Add description
6+
* Jar/aar filter that able to search within gradle cache for asked package name in aar's manifests
77
*
88
* @author archinamon on 18/03/17.
99
*/
@@ -41,11 +41,10 @@ internal object DependencyFilter {
4141
return false
4242
}
4343

44-
val filterTmp = filter
4544
return when {
46-
str.contains(filterTmp) -> true
47-
filterTmp.contains("/") -> str.contains(filterTmp.replace("/", File.separator))
48-
filterTmp.contains("\\") -> str.contains(filterTmp.replace("\\", File.separator))
45+
str.contains(filter) -> true
46+
filter.contains("/") -> str.contains(filter.replace("/", File.separator))
47+
filter.contains("\\") -> str.contains(filter.replace("\\", File.separator))
4948
else -> false
5049
}
5150
}

android-gradle-aspectj/src/main/kotlin/com/archinamon/utils/StatusLogger.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,18 @@ internal fun logWeaverBuildPolicy(policy: BuildPolicy) {
3737
}
3838

3939
internal fun logIgnoreInpathJars() {
40-
println("Ignoring additional jars adding to -inpath in simple mode")
40+
println("Ignoring include/exclude option of -inpath parameter in simple mode.\n" +
41+
"Switch to `aspectj-ext` plugin to enable this behavior!")
4142
}
4243

4344
internal fun logJarInpathAdded(jar: JarInput) {
4445
println("include jar :: ${jar.file.absolutePath}")
4546
}
4647

48+
internal fun logJarInpathRemoved(jar: JarInput) {
49+
println("exclude jar :: ${jar.file.absolutePath}")
50+
}
51+
4752
internal fun logJarAspectAdded(jar: JarInput) {
4853
println("include aspects from :: ${jar.file.absolutePath}")
4954
}

0 commit comments

Comments
 (0)