forked from palantir/palantir-java-format
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
93 lines (80 loc) · 4.02 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
buildscript {
repositories {
mavenCentral() { metadataSources { mavenPom(); ignoreGradleMetadataRedirection() } }
gradlePluginPortal() { metadataSources { mavenPom(); ignoreGradleMetadataRedirection() } }
}
dependencies {
classpath 'com.palantir.jakartapackagealignment:jakarta-package-alignment:0.5.0'
classpath 'com.gradle.publish:plugin-publish-plugin:1.2.1'
classpath 'com.palantir.baseline:gradle-baseline-java:5.20.0'
classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:2.16.0'
classpath 'com.palantir.gradle.externalpublish:gradle-external-publish-plugin:1.12.0'
classpath 'com.palantir.gradle.gitversion:gradle-git-version:3.0.0'
classpath 'com.palantir.javaformat:gradle-palantir-java-format:2.38.0'
classpath 'com.palantir.gradle.revapi:gradle-revapi:1.7.0'
classpath 'com.palantir.javaformat:gradle-palantir-java-format:2.38.0'
classpath 'gradle.plugin.org.inferred:gradle-processors:3.7.0'
}
}
plugins {
id "org.jetbrains.intellij" version "1.3.0" apply false
id 'org.jetbrains.gradle.plugin.idea-ext' version "1.1.1"
}
apply plugin: 'com.palantir.external-publish'
apply plugin: 'com.palantir.git-version'
apply plugin: 'com.palantir.baseline'
apply plugin: 'com.palantir.consistent-versions'
version System.env.CIRCLE_TAG ?: gitVersion()
allprojects {
apply plugin: 'com.palantir.java-format'
apply plugin: 'com.palantir.jakarta-package-alignment'
group = 'com.palantir.javaformat'
version = rootProject.version
repositories {
mavenCentral() { metadataSources { mavenPom(); ignoreGradleMetadataRedirection() } }
}
}
subprojects {
apply plugin: 'java-library'
apply plugin: 'org.inferred.processors'
sourceCompatibility = 11
targetCompatibility = 11
tasks.withType(Checkstyle) {
enabled = false
}
tasks.withType(JavaCompile) {
options.errorprone.disable 'PreconditionsConstantMessage', 'PreferSafeLoggableExceptions', 'PreferSafeLoggingPreconditions'
}
// Run `./gradlew test -Drecreate=true` to recreate all the expected
// generated code that we have checked into the repo.
tasks.withType(Test) {
systemProperty 'recreate', System.getProperty('recreate', 'false')
}
}
/**
* There is a bunch of truly snowflaky stuff going on this project, because we have this Java14InputAstVisitor class
* which needs to implement some interface methods defined in com.sun.source.util.TreePathScanner, which varies
* depending on what JVM the formatter is running on!
*/
idea.project.ipr.withXml { xml ->
/**
* Even though the p-j-f codebase has sourceCompat=11 and targetCompat=11, we have to convince IntelliJ to let us
* compile against methods from a newer JVM like visitYield, visitSwitchExpression etc. Hence why we turn off the
* --release flag (using USE_RELEASE_OPTION below)
*/
def compilerConfiguration = xml.asNode().component.find({ it.'@name' == 'CompilerConfiguration' })
compilerConfiguration.value().add(new XmlParser().parseText('<option name="USE_RELEASE_OPTION" value="false" />'))
def module = compilerConfiguration.bytecodeTargetLevel.module.find({ it.'@name' == 'palantir-java-format' })
// Module is null on jdk11
if (module != null) {
module.attributes().target = "14"
}
xml.asNode().value().add(new XmlParser().parseText('''
<component name="JavacSettings">
<option name="PREFER_TARGET_JDK_COMPILER" value="false" />
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="palantir-java-format" options="--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED" />
</option>
</component>
'''))
}