Skip to content

Commit 29b7073

Browse files
committed
Use task avoidance with forbidden apis (#55034)
Currently forbidden apis accounts for 800+ tasks in the build. These tasks are aggressively created by the plugin. In forbidden apis 3.0, we will get task avoidance (policeman-tools/forbidden-apis#162), but we need to ourselves use the same task avoidance mechanisms to not trigger these task creations. This commit does that for our foribdden apis usages, in preparation for upgrading to 3.0 when it is released.
1 parent b88dd47 commit 29b7073

File tree

36 files changed

+49
-44
lines changed

36 files changed

+49
-44
lines changed

benchmarks/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ compileJava.options.compilerArgs.addAll(["-processor", "org.openjdk.jmh.generato
4848
run.executable = "${BuildParams.runtimeJavaHome}/bin/java"
4949

5050
// classes generated by JMH can use all sorts of forbidden APIs but we have no influence at all and cannot exclude these classes
51-
forbiddenApisMain.enabled = false
51+
disableTasks('forbiddenApisMain')
5252

5353
// No licenses for our benchmark deps (we don't ship benchmarks)
5454
dependencyLicenses.enabled = false

build.gradle

+8
Original file line numberDiff line numberDiff line change
@@ -537,3 +537,11 @@ subprojects {
537537
}
538538
}
539539
}
540+
541+
subprojects {
542+
project.ext.disableTasks = { String... tasknames ->
543+
for (String taskname : tasknames) {
544+
project.tasks.named(taskname).configure { onlyIf { false } }
545+
}
546+
}
547+
}

buildSrc/build.gradle

+1-3
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,7 @@ if (project != rootProject) {
168168
// build-tools is not ready for primetime with these...
169169
dependencyLicenses.enabled = false
170170
dependenciesInfo.enabled = false
171-
forbiddenApisMain.enabled = false
172-
forbiddenApisMinimumRuntime.enabled = false
173-
forbiddenApisTest.enabled = false
171+
disableTasks('forbiddenApisMain', 'forbiddenApisMinimumRuntime', 'forbiddenApisTest')
174172
jarHell.enabled = false
175173
thirdPartyAudit.enabled = false
176174
if (Boolean.parseBoolean(System.getProperty("tests.fips.enabled"))){

buildSrc/src/testKit/elasticsearch.build/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ repositories {
1717
}
1818

1919
// todo remove offending rules
20-
forbiddenApisMain.enabled = false
21-
forbiddenApisTest.enabled = false
20+
tasks.named('forbiddenApisMain').configure { onlyIf { false } }
21+
tasks.named('forbiddenApisTest').configure { onlyIf { false } }
2222
// requires dependency on testing fw
2323
jarHell.enabled = false
2424
// we don't have tests for now

client/rest-high-level/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ dependencyLicenses {
7878
}
7979
}
8080

81-
forbiddenApisMain {
81+
tasks.named('forbiddenApisMain').configure {
8282
// core does not depend on the httpclient for compile so we add the signatures here. We don't add them for test as they are already
8383
// specified
8484
addSignatureFiles 'http-signatures'

client/rest/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ dependencies {
5151
testCompile "org.elasticsearch:mocksocket:${versions.mocksocket}"
5252
}
5353

54-
tasks.withType(CheckForbiddenApis) {
54+
tasks.withType(CheckForbiddenApis).configureEach {
5555
//client does not depend on server, so only jdk and http signatures should be checked
5656
replaceSignatureFiles('jdk-signatures', 'http-signatures')
5757
}
@@ -60,7 +60,7 @@ forbiddenPatterns {
6060
exclude '**/*.der'
6161
}
6262

63-
forbiddenApisTest {
63+
tasks.named('forbiddenApisTest').configure {
6464
//we are using jdk-internal instead of jdk-non-portable to allow for com.sun.net.httpserver.* usage
6565
bundledSignatures -= 'jdk-non-portable'
6666
bundledSignatures += 'jdk-internal'

client/sniffer/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ dependencies {
4848
testCompile "org.elasticsearch:mocksocket:${versions.mocksocket}"
4949
}
5050

51-
forbiddenApisMain {
51+
tasks.named('forbiddenApisMain').configure {
5252
//client does not depend on server, so only jdk signatures should be checked
5353
replaceSignatureFiles 'jdk-signatures'
5454
}
5555

56-
forbiddenApisTest {
56+
tasks.named('forbiddenApisTest').configure {
5757
//we are using jdk-internal instead of jdk-non-portable to allow for com.sun.net.httpserver.* usage
5858
bundledSignatures -= 'jdk-non-portable'
5959
bundledSignatures += 'jdk-internal'

client/test/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ dependencies {
3030
compile "org.hamcrest:hamcrest:${versions.hamcrest}"
3131
}
3232

33-
forbiddenApisMain {
33+
tasks.named('forbiddenApisMain').configure {
3434
//client does not depend on core, so only jdk signatures should be checked
3535
replaceSignatureFiles 'jdk-signatures'
3636
}
3737

38-
forbiddenApisTest {
38+
tasks.named('forbiddenApisTest').configure {
3939
//we are using jdk-internal instead of jdk-non-portable to allow for com.sun.net.httpserver.* usage
4040
bundledSignatures -= 'jdk-non-portable'
4141
bundledSignatures += 'jdk-internal'

distribution/tools/java-version-checker/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apply plugin: 'elasticsearch.build'
33
targetCompatibility = JavaVersion.VERSION_1_7
44

55
// java_version_checker do not depend on core so only JDK signatures should be checked
6-
forbiddenApisMain {
6+
tasks.named('forbiddenApisMain').configure {
77
replaceSignatureFiles 'jdk-signatures'
88
}
99

distribution/tools/launchers/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dependencies {
2929

3030
archivesBaseName = 'elasticsearch-launchers'
3131

32-
tasks.withType(CheckForbiddenApis) {
32+
tasks.withType(CheckForbiddenApis).configureEach {
3333
replaceSignatureFiles 'jdk-signatures'
3434
}
3535

libs/cli/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ test.enabled = false
2929
// Since CLI does not depend on :server, it cannot run the jarHell task
3030
jarHell.enabled = false
3131

32-
forbiddenApisMain {
32+
tasks.named('forbiddenApisMain').configure {
3333
replaceSignatureFiles 'jdk-signatures'
3434
}

libs/core/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ dependencies {
8888
}
8989
}
9090

91-
forbiddenApisMain {
91+
tasks.named('forbiddenApisMain').configure {
9292
// :libs:elasticsearch-core does not depend on server
9393
// TODO: Need to decide how we want to handle for forbidden signatures with the changes to server
9494
replaceSignatureFiles 'jdk-signatures'

libs/dissect/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ dependencies {
2626
testCompile "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
2727
}
2828

29-
forbiddenApisMain {
29+
tasks.named('forbiddenApisMain').configure {
3030
replaceSignatureFiles 'jdk-signatures'
3131
}
3232

libs/geo/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ dependencies {
2626
}
2727
}
2828

29-
forbiddenApisMain {
29+
tasks.named('forbiddenApisMain').configure {
3030
// geo does not depend on server
3131
// TODO: Need to decide how we want to handle for forbidden signatures with the changes to core
3232
replaceSignatureFiles 'jdk-signatures'

libs/grok/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ dependencies {
2727
}
2828
}
2929

30-
forbiddenApisMain {
30+
tasks.named('forbiddenApisMain').configure {
3131
replaceSignatureFiles 'jdk-signatures'
3232
}

libs/nio/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ dependencies {
3131
}
3232

3333

34-
forbiddenApisMain {
34+
tasks.named('forbiddenApisMain').configure {
3535
// nio does not depend on core, so only jdk signatures should be checked
3636
// es-all is not checked as we connect and accept sockets
3737
replaceSignatureFiles 'jdk-signatures'

libs/plugin-classloader/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@
2020
test.enabled = false
2121

2222
// test depend on ES core...
23-
forbiddenApisMain.enabled = false
23+
disableTasks('forbiddenApisMain')
2424
jarHell.enabled = false

libs/secure-sm/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies {
3030
}
3131
}
3232

33-
forbiddenApisMain {
33+
tasks.named('forbiddenApisMain').configure {
3434
replaceSignatureFiles 'jdk-signatures'
3535
}
3636

libs/ssl-config/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ dependencies {
3131
}
3232

3333

34-
forbiddenApisMain {
34+
tasks.named('forbiddenApisMain').configure {
3535
replaceSignatureFiles 'jdk-signatures'
3636
}
3737

libs/x-content/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies {
3939

4040
}
4141

42-
forbiddenApisMain {
42+
tasks.named('forbiddenApisMain').configure {
4343
// x-content does not depend on server
4444
// TODO: Need to decide how we want to handle for forbidden signatures with the changes to core
4545
replaceSignatureFiles 'jdk-signatures'

plugins/analysis-icu/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ esplugin {
2525
hasClientJar = true
2626
}
2727

28-
tasks.withType(CheckForbiddenApis) {
28+
tasks.withType(CheckForbiddenApis).configureEach {
2929
signatures += [
3030
"com.ibm.icu.text.Collator#getInstance() @ Don't use default locale, use getInstance(ULocale) instead"
3131
]

qa/os/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ dependencies {
4242
testCompile "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
4343
}
4444

45-
forbiddenApisTest {
45+
tasks.named('forbiddenApisTest').configure {
4646
replaceSignatureFiles 'jdk-signatures'
4747
}
4848

@@ -58,7 +58,7 @@ tasks.dependenciesInfo.enabled = false
5858
tasks.thirdPartyAudit.ignoreMissingClasses()
5959

6060
tasks.register('destructivePackagingTest') {
61-
dependsOn 'destructiveDistroTest'
61+
dependsOn 'destructiveDistroTest'
6262
}
6363

6464
processTestResources {

server/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ if (!isEclipse) {
5656
targetCompatibility = 11
5757
}
5858

59-
forbiddenApisJava11 {
59+
tasks.named('forbiddenApisJava11').configure {
6060
doFirst {
6161
if (BuildParams.runtimeJavaVersion < JavaVersion.VERSION_11) {
6262
targetCompatibility = JavaVersion.VERSION_11.getMajorVersion()

test/fixtures/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
subprojects {
22
// fixtures are mostly external and by default we don't want to check forbidden apis
3-
forbiddenApisMain.enabled = false
3+
disableTasks('forbiddenApisMain')
44
}

test/framework/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ compileJava.options.compilerArgs << '-Xlint:-cast,-rawtypes,-unchecked'
3838
compileTestJava.options.compilerArgs << '-Xlint:-rawtypes'
3939

4040
// the main files are actually test files, so use the appropriate forbidden api sigs
41-
forbiddenApisMain {
41+
tasks.named('forbiddenApisMain').configure {
4242
replaceSignatureFiles 'jdk-signatures', 'es-all-signatures', 'es-test-signatures'
4343
}
4444

test/logger-usage/build.gradle

+1-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ dependencies {
2727

2828
loggerUsageCheck.enabled = false
2929

30-
forbiddenApisMain.enabled = true // disabled by parent project
31-
forbiddenApisMain {
30+
tasks.named('forbiddenApisMain').configure {
3231
replaceSignatureFiles 'jdk-signatures' // does not depend on core, only jdk signatures
3332
}
3433
jarHell.enabled = true // disabled by parent project

x-pack/plugin/core/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ forbiddenPatterns {
9090
exclude '**/*.zip'
9191
}
9292

93-
forbiddenApisMain {
93+
tasks.named('forbiddenApisMain').configure {
9494
signaturesFiles += files('forbidden/hasher-signatures.txt')
9595
}
9696

x-pack/plugin/identity-provider/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ forbiddenPatterns {
6969
exclude '**/*.zip'
7070
}
7171

72-
forbiddenApisMain {
72+
tasks.named('forbiddenApisMain').configure {
7373
signaturesFiles += files('forbidden/xml-signatures.txt')
7474
}
7575

x-pack/plugin/security/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ forbiddenPatterns {
172172
exclude '**/*.zip'
173173
}
174174

175-
forbiddenApisMain {
175+
tasks.named('forbiddenApisMain').configure {
176176
signaturesFiles += files('forbidden/ldap-signatures.txt', 'forbidden/xml-signatures.txt', 'forbidden/oidc-signatures.txt')
177177
}
178178

x-pack/plugin/security/cli/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ if (BuildParams.inFipsJvm) {
4242
testingConventions.enabled = false
4343
// Forbiden APIs non-portable checks fail because bouncy castle classes being used from the FIPS JDK since those are
4444
// not part of the Java specification - all of this is as designed, so we have to relax this check for FIPS.
45-
tasks.withType(CheckForbiddenApis) {
45+
tasks.withType(CheckForbiddenApis).configureEach {
4646
bundledSignatures -= "jdk-non-portable"
4747
}
4848
}

x-pack/plugin/sql/jdbc/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ apply plugin: 'com.github.johnrengelman.shadow'
55
description = 'JDBC driver for Elasticsearch'
66
archivesBaseName = "x-pack-sql-jdbc"
77

8-
forbiddenApisMain {
8+
tasks.named('forbiddenApisMain').configure {
99
// does not depend on core, so only jdk and http signatures should be checked
1010
replaceSignatureFiles 'jdk-signatures'
1111
}

x-pack/plugin/sql/qa/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencyLicenses.enabled = false
3939
dependenciesInfo.enabled = false
4040

4141
// the main files are actually test files, so use the appropriate forbidden api sigs
42-
forbiddenApisMain {
42+
tasks.named('forbiddenApisMain').configure {
4343
replaceSignatureFiles 'es-all-signatures', 'es-test-signatures'
4444
}
4545

x-pack/plugin/sql/sql-action/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ dependencies {
2828
testCompile project(":test:framework")
2929
}
3030

31-
forbiddenApisMain {
31+
tasks.named('forbiddenApisMain').configure {
3232
//sql does not depend on server, so only jdk signatures should be checked
3333
replaceSignatureFiles 'jdk-signatures'
3434
}

x-pack/plugin/sql/sql-cli/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ shadowJar {
5555
}
5656
}
5757

58-
forbiddenApisMain {
58+
tasks.named('forbiddenApisMain').configure {
5959
//sql does not depend on server, so only jdk signatures should be checked
6060
replaceSignatureFiles 'jdk-signatures'
6161
signaturesFiles += files('src/forbidden/cli-signatures.txt')

x-pack/plugin/sql/sql-client/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ dependencyLicenses {
2121
ignoreSha 'elasticsearch-core'
2222
}
2323

24-
forbiddenApisMain {
24+
tasks.named('forbiddenApisMain').configure {
2525
// does not depend on core, so only jdk and http signatures should be checked
2626
replaceSignatureFiles 'jdk-signatures'
2727
}
2828

29-
forbiddenApisTest {
29+
tasks.named('forbiddenApisTest').configure {
3030
bundledSignatures -= 'jdk-non-portable'
3131
bundledSignatures += 'jdk-internal'
3232
}

x-pack/plugin/sql/sql-proto/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dependencies {
1818
testCompile project(":test:framework")
1919
}
2020

21-
forbiddenApisMain {
21+
tasks.named('forbiddenApisMain').configure {
2222
//sql does not depend on server, so only jdk signatures should be checked
2323
replaceSignatureFiles 'jdk-signatures'
2424
}

0 commit comments

Comments
 (0)