mirror of
https://github.com/google/nomulus
synced 2026-08-17 20:56:10 +00:00
Without the net.ltgt.apt plugin, Dagger does not retain generated source code, and AutoValue mixes generated source code with classes. The new plugin fixes this problem, making it easier to work with IDEs. Based on limit experience, Intellij Idea can properly import this project. We may consider adding IDE-specific plugins in the future. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=220802052
420 lines
17 KiB
Groovy
420 lines
17 KiB
Groovy
plugins {
|
|
id 'java-library'
|
|
}
|
|
|
|
def javaDir = "${rootDir}/../java"
|
|
def javatestsDir = "${rootDir}/../javatests"
|
|
|
|
// Path to code generated with annotation processors. Note that this path is
|
|
// chosen by the 'net.ltgt.apt' plugin, and may change if IDE-specific plugins
|
|
// are applied, e.g., 'idea' or 'eclipse'
|
|
def aptGeneratedDir = "${project.buildDir}/generated/source/apt/main"
|
|
def aptGeneratedTestDir = "${project.buildDir}/generated/source/apt/test"
|
|
|
|
// Path to code generated by ad hoc tasks in this project. A separate path is
|
|
// used for easy inspection.
|
|
def generatedDir = "${project.buildDir}/generated/source/custom/main"
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs = [
|
|
"${javaDir}",
|
|
"${aptGeneratedDir}",
|
|
"${generatedDir}"
|
|
]
|
|
}
|
|
resources {
|
|
srcDirs = [
|
|
"${javaDir}"
|
|
]
|
|
exclude '**/*.java', '**/*.xjb'
|
|
}
|
|
}
|
|
test {
|
|
java {
|
|
srcDirs = [
|
|
"${javatestsDir}",
|
|
"${aptGeneratedTestDir}"
|
|
]
|
|
}
|
|
resources {
|
|
srcDirs = [
|
|
"${javatestsDir}"
|
|
]
|
|
exclude '**/*.java', '**/*.xsd', '**/*.xjb'
|
|
}
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
css
|
|
jaxb
|
|
soy
|
|
// Label for all dependencies inherited from Bazel build but not used in
|
|
// either compile or testRuntime. However, they may be needed at runtime.
|
|
// TODO(weiminyu): identify runtime dependencies and remove the rest.
|
|
maybe_runtime
|
|
}
|
|
|
|
// Known issues:
|
|
// - The (test/)compile/runtime labels are deprecated. We continue using these
|
|
// labels due to nebula-lint.
|
|
// TODO(weiminyu): switch to api/implementation labels.
|
|
// See https://github.com/nebula-plugins/gradle-lint-plugin/issues/130 for
|
|
// issue status.
|
|
// - Nebula-lint's conflict between unused and undeclared dependency check.
|
|
// If an undeclared dependency is added, the unused-dependency check will flag
|
|
// it. For now we wrap affected dependency in gradleLint.ignore block.
|
|
// TODO(weiminyu): drop gradleLint.ignore block when issue is fixed.
|
|
// See https://github.com/nebula-plugins/gradle-lint-plugin/issues/181 for
|
|
// issue status.
|
|
dependencies {
|
|
compile 'com.beust:jcommander:1.48'
|
|
compile 'com.fasterxml.jackson.core:jackson-core:2.8.5'
|
|
compile 'com.fasterxml.jackson.core:jackson-annotations:2.8.0'
|
|
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.5'
|
|
compile 'com.google.api-client:google-api-client:1.22.0'
|
|
maybe_runtime 'com.google.api-client:google-api-client-appengine:1.22.0'
|
|
maybe_runtime 'com.google.api-client:google-api-client-jackson2:1.20.0'
|
|
compile 'com.google.monitoring-client:metrics:1.0.4'
|
|
compile 'com.google.monitoring-client:stackdriver:1.0.4'
|
|
maybe_runtime 'com.google.api-client:google-api-client-java6:1.20.0'
|
|
maybe_runtime 'com.google.api-client:google-api-client-servlet:1.22.0'
|
|
compile 'com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0'
|
|
compile 'com.google.apis:google-api-services-bigquery:v2-rev325-1.22.0'
|
|
maybe_runtime 'com.google.apis:google-api-services-clouddebugger:v2-rev8-1.22.0'
|
|
compile 'com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0'
|
|
maybe_runtime 'com.google.apis:google-api-services-cloudresourcemanager:v1-rev6-1.22.0'
|
|
compile 'com.google.apis:google-api-services-dataflow:v1b3-rev196-1.22.0'
|
|
compile 'com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0'
|
|
compile 'com.google.apis:google-api-services-drive:v2-rev160-1.19.1'
|
|
compile 'com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0'
|
|
compile 'com.google.apis:google-api-services-monitoring:v3-rev11-1.22.0'
|
|
compile 'com.google.apis:google-api-services-sheets:v4-rev483-1.22.0'
|
|
compile 'com.google.apis:google-api-services-storage:v1-rev86-1.22.0'
|
|
// TODO(b/71631624): change appengine:appengine-api-1.0-sdk to
|
|
// testCompileOnly after BillingEmailUtilsTest.java is fixed.
|
|
compile 'com.google.appengine:appengine-api-1.0-sdk:1.9.48'
|
|
maybe_runtime 'com.google.appengine:appengine-api-labs:1.9.48'
|
|
maybe_runtime 'com.google.appengine:appengine-api-stubs:1.9.48'
|
|
testCompile 'com.google.appengine:appengine-api-stubs:1.9.48'
|
|
compile 'com.google.appengine.tools:appengine-gcs-client:0.6'
|
|
compile 'com.google.appengine.tools:appengine-mapreduce:0.8.5'
|
|
compile 'com.google.appengine.tools:appengine-pipeline:0.2.13'
|
|
compile 'com.google.appengine:appengine-remote-api:1.9.48'
|
|
maybe_runtime 'com.google.appengine:appengine-tools-sdk:1.9.48'
|
|
maybe_runtime 'com.google.auth:google-auth-library-credentials:0.7.1'
|
|
maybe_runtime 'com.google.auth:google-auth-library-oauth2-http:0.7.1'
|
|
maybe_runtime 'com.google.auto:auto-common:0.8'
|
|
maybe_runtime 'com.google.auto.factory:auto-factory:1.0-beta3'
|
|
compile 'com.google.auto.value:auto-value-annotations:1.6.2'
|
|
maybe_runtime 'com.google.cloud.bigdataoss:gcsio:1.4.5'
|
|
maybe_runtime 'com.google.cloud.bigdataoss:util:1.4.5'
|
|
compile 'com.google.code.findbugs:jsr305:3.0.2'
|
|
compile 'com.google.dagger:dagger:2.15'
|
|
maybe_runtime 'com.google.dagger:dagger-producers:2.15'
|
|
compile 'com.google.errorprone:error_prone_annotations:2.3.1'
|
|
maybe_runtime 'com.google.errorprone:javac-shaded:9-dev-r4023-3'
|
|
compile 'com.google.flogger:flogger:0.1'
|
|
runtime 'com.google.flogger:flogger-system-backend:0.1'
|
|
maybe_runtime 'com.google.gdata:core:1.47.1'
|
|
maybe_runtime 'com.google.googlejavaformat:google-java-format:1.4'
|
|
compile 'com.google.guava:guava-jdk5:17.0'
|
|
compile 'com.google.guava:guava:25.1-jre'
|
|
gradleLint.ignore('unused-dependency') {
|
|
compile 'com.google.gwt:gwt-user:2.8.2'
|
|
}
|
|
compile 'com.google.http-client:google-http-client:1.22.0'
|
|
compile 'com.google.http-client:google-http-client-appengine:1.22.0'
|
|
compile 'com.google.http-client:google-http-client-jackson2:1.22.0'
|
|
compile 'com.google.oauth-client:google-oauth-client:1.22.0'
|
|
maybe_runtime 'com.google.oauth-client:google-oauth-client-appengine:1.22.0'
|
|
compile 'com.google.oauth-client:google-oauth-client-java6:1.22.0'
|
|
compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0'
|
|
maybe_runtime 'com.google.oauth-client:google-oauth-client-servlet:1.22.0'
|
|
maybe_runtime 'com.google.protobuf:protobuf-java:2.6.0'
|
|
compile 'com.google.re2j:re2j:1.1'
|
|
compile 'com.google.template:soy:2018-03-14'
|
|
maybe_runtime 'com.googlecode.charts4j:charts4j:1.3'
|
|
compile 'com.googlecode.json-simple:json-simple:1.1.1'
|
|
compile 'com.ibm.icu:icu4j:57.1'
|
|
compile 'com.jcraft:jsch:0.1.53'
|
|
maybe_runtime 'com.jcraft:jzlib:1.1.3'
|
|
maybe_runtime 'com.squareup:javapoet:1.8.0'
|
|
maybe_runtime 'com.squareup:javawriter:2.5.1'
|
|
maybe_runtime 'com.sun.activation:javax.activation:1.2.0'
|
|
maybe_runtime 'com.thoughtworks.paranamer:paranamer:2.7'
|
|
maybe_runtime 'commons-codec:commons-codec:1.6'
|
|
maybe_runtime 'commons-logging:commons-logging:1.1.1'
|
|
compile 'dnsjava:dnsjava:2.1.7'
|
|
compile 'io.netty:netty-buffer:4.1.28.Final'
|
|
compile 'io.netty:netty-codec:4.1.28.Final'
|
|
compile 'io.netty:netty-codec-http:4.1.28.Final'
|
|
compile 'io.netty:netty-common:4.1.28.Final'
|
|
compile 'io.netty:netty-handler:4.1.28.Final'
|
|
maybe_runtime 'io.netty:netty-resolver:4.1.28.Final'
|
|
maybe_runtime 'io.netty:netty-tcnative:2.0.12.Final'
|
|
maybe_runtime 'io.netty:netty-tcnative-boringssl-static:2.0.12.Final'
|
|
compile 'io.netty:netty-transport:4.1.28.Final'
|
|
maybe_runtime 'it.unimi.dsi:fastutil:6.5.16'
|
|
maybe_runtime 'javax.annotation:jsr250-api:1.0'
|
|
testCompile 'javax.annotation:jsr250-api:1.0'
|
|
compile 'javax.inject:javax.inject:1'
|
|
compile 'javax.mail:mail:1.4'
|
|
compile 'javax.servlet:servlet-api:2.5'
|
|
compile 'javax.xml.bind:jaxb-api:2.3.0'
|
|
maybe_runtime 'javax.xml.soap:javax.xml.soap-api:1.4.0'
|
|
compile 'jline:jline:1.0'
|
|
compile 'joda-time:joda-time:2.3'
|
|
compile 'org.apache.avro:avro:1.8.2'
|
|
maybe_runtime 'org.apache.beam:beam-runners-direct-java:2.2.0'
|
|
testCompile 'org.apache.beam:beam-runners-direct-java:2.2.0'
|
|
compile 'org.apache.beam:beam-runners-google-cloud-dataflow-java:2.1.0'
|
|
maybe_runtime 'org.apache.beam:beam-sdks-common-runner-api:2.1.0'
|
|
compile 'org.apache.beam:beam-sdks-java-core:2.2.0'
|
|
compile 'org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.1.0'
|
|
compile 'org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.2.0'
|
|
maybe_runtime 'org.apache.commons:commons-compress:1.8.1'
|
|
maybe_runtime 'org.apache.ftpserver:ftplet-api:1.0.6'
|
|
testCompile 'org.apache.ftpserver:ftplet-api:1.0.6'
|
|
maybe_runtime 'org.apache.ftpserver:ftpserver-core:1.0.6'
|
|
testCompile 'org.apache.ftpserver:ftpserver-core:1.0.6'
|
|
compile 'org.apache.httpcomponents:httpclient:4.5.2'
|
|
compile 'org.apache.httpcomponents:httpcore:4.4.4'
|
|
maybe_runtime 'org.apache.mina:mina-core:2.0.4'
|
|
maybe_runtime 'org.apache.sshd:sshd-core:2.0.0'
|
|
testCompile 'org.apache.sshd:sshd-core:2.0.0'
|
|
maybe_runtime 'org.apache.sshd:sshd-scp:2.0.0'
|
|
testCompile 'org.apache.sshd:sshd-scp:2.0.0'
|
|
maybe_runtime 'org.apache.sshd:sshd-sftp:2.0.0'
|
|
testCompile 'org.apache.sshd:sshd-sftp:2.0.0'
|
|
compile 'org.apache.tomcat:servlet-api:6.0.45'
|
|
maybe_runtime 'org.apache.tomcat:tomcat-annotations-api:8.0.5'
|
|
testCompile 'org.apache.tomcat:tomcat-annotations-api:8.0.5'
|
|
compile 'org.bouncycastle:bcpg-jdk15on:1.52'
|
|
compile 'org.bouncycastle:bcpkix-jdk15on:1.52'
|
|
compile 'org.bouncycastle:bcprov-jdk15on:1.52'
|
|
maybe_runtime 'org.codehaus.jackson:jackson-core-asl:1.9.13'
|
|
maybe_runtime 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
|
|
compile 'org.joda:joda-money:0.10.0'
|
|
compile 'org.json:json:20160810'
|
|
maybe_runtime 'org.khronos:opengl-api:gl1.1-android-2.1_r1'
|
|
maybe_runtime 'org.mortbay.jetty:jetty:6.1.26'
|
|
testCompile 'org.mortbay.jetty:jetty:6.1.26'
|
|
compile 'org.mortbay.jetty:servlet-api:2.5-20081211'
|
|
maybe_runtime 'org.mortbay.jetty:jetty-util:6.1.26'
|
|
maybe_runtime 'org.slf4j:slf4j-api:1.7.16'
|
|
maybe_runtime 'org.tukaani:xz:1.5'
|
|
maybe_runtime 'org.xerial.snappy:snappy-java:1.1.4-M3'
|
|
compile 'org.yaml:snakeyaml:1.17'
|
|
compile 'xerces:xmlParserAPIs:2.6.2'
|
|
compile 'xpp3:xpp3:1.1.4c'
|
|
|
|
// Known issue: nebula-lint misses inherited dependency.
|
|
compile project(':third_party')
|
|
|
|
// Include auto-value in compile until nebula-lint understands
|
|
// annotationProcessor
|
|
gradleLint.ignore('unused-dependency') {
|
|
compile 'com.google.auto.value:auto-value:1.6.2'
|
|
}
|
|
annotationProcessor 'com.google.auto.value:auto-value:1.6.2'
|
|
testAnnotationProcessor 'com.google.auto.value:auto-value:1.6.2'
|
|
annotationProcessor 'com.google.dagger:dagger-compiler:2.15'
|
|
testAnnotationProcessor 'com.google.dagger:dagger-compiler:2.15'
|
|
|
|
// Use compile to work around nebula bug. This should be testCompile.
|
|
compile 'com.google.appengine:appengine-testing:1.9.58'
|
|
|
|
testCompile 'com.google.guava:guava-testlib:25.0-jre'
|
|
testCompile 'com.google.monitoring-client:contrib:1.0.4'
|
|
testCompile 'com.google.truth:truth:0.42'
|
|
testCompile 'com.google.truth.extensions:truth-java8-extension:0.39'
|
|
testCompile 'org.hamcrest:hamcrest-all:1.3'
|
|
testCompile 'org.hamcrest:hamcrest-core:1.3'
|
|
testCompile 'org.hamcrest:hamcrest-library:1.3'
|
|
testCompile 'junit:junit:4.12'
|
|
testCompile 'org.mockito:mockito-all:1.9.5'
|
|
|
|
// Indirect dependency found by undeclared-dependency check. Such
|
|
// dependencies should go after all other compile and testCompile
|
|
// dependencies to avoid overriding them accidentally.
|
|
compile 'javax.servlet:javax.servlet-api:3.1.0' // google-api-client-appeng
|
|
|
|
// Dependencies needed for jaxb compilation.
|
|
// Use jaxb 2.2.11 because 2.3 is known to break the Ant task we use.
|
|
// TODO: upgrade jaxb versions to 2.4.0, already in beta by Sept 2018
|
|
jaxb 'javax.xml.bind:jaxb-api:2.2.11'
|
|
jaxb 'com.sun.activation:javax.activation:1.2.0'
|
|
jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.11'
|
|
jaxb 'com.sun.xml.bind:jaxb-impl:2.2.11'
|
|
jaxb 'com.sun.xml.bind:jaxb-osgi:2.2.11'
|
|
|
|
// Dependency needed for soy to java compilation.
|
|
soy 'com.google.template:soy:2018-03-14'
|
|
|
|
// Dependencies needed for compiling stylesheets to javascript
|
|
css 'com.google.closure-stylesheets:closure-stylesheets:1.5.0'
|
|
css 'args4j:args4j:2.0.26'
|
|
}
|
|
|
|
task jaxbToJava {
|
|
doLast {
|
|
file(generatedDir).mkdirs()
|
|
|
|
// Temp dir to hold schema and bindings files. Files must be in the same
|
|
// directory because the bindings (.xjb) file does not declare relative
|
|
// paths to schema (.xsd) files.
|
|
def xjcTempSourceDir = file("${temporaryDir}/xjc")
|
|
xjcTempSourceDir.mkdirs()
|
|
ant.copy(
|
|
todir: "${xjcTempSourceDir}",
|
|
overwrite: true) {
|
|
fileSet(
|
|
dir: "${javaDir}/google/registry/xml/xsd",
|
|
includes: '**.xsd')
|
|
}
|
|
ant.copy(
|
|
todir: "${xjcTempSourceDir}",
|
|
overwrite: true,
|
|
file:
|
|
"${javaDir}/google/registry/xjc/bindings.xjb")
|
|
|
|
ant.taskdef(
|
|
name: 'xjc',
|
|
classname: 'com.sun.tools.xjc.XJCTask',
|
|
classpath: configurations.jaxb.asPath)
|
|
ant.xjc(
|
|
destdir: "${generatedDir}",
|
|
binding: "${xjcTempSourceDir}/bindings.xjb",
|
|
removeOldOutput: 'yes', extension: 'true') {
|
|
project.fileTree(
|
|
dir: new File("$xjcTempSourceDir"),
|
|
include: ['**/*.xsd'])
|
|
.addToAntBuilder(ant, 'schema', FileCollection.AntType.FileSet)
|
|
// -npa: do not generate package-info.java files. They will be generated
|
|
// below.
|
|
arg(line: '-npa -quiet -extension')
|
|
}
|
|
exec {
|
|
workingDir "${generatedDir}"
|
|
|
|
executable "${javaDir}/google/registry/xjc/make_pkginfo.sh"
|
|
args "${javaDir}/google/registry/xjc/package-info.java.in",
|
|
"${generatedDir}/google/registry/xjc"
|
|
}
|
|
}
|
|
}
|
|
|
|
task soyToJava {
|
|
ext.soyToJava = { javaPackage, outputDirectory, soyFiles ->
|
|
javaexec {
|
|
main = "com.google.template.soy.SoyParseInfoGenerator"
|
|
classpath configurations.soy
|
|
args "--javaPackage", "${javaPackage}",
|
|
"--outputDirectory", "${outputDirectory}",
|
|
"--javaClassNameSource", "filename",
|
|
"--allowExternalCalls", "true",
|
|
"--srcs", "${soyFiles.join(',')}"
|
|
}
|
|
}
|
|
|
|
doLast {
|
|
|
|
soyToJava('google.registry.tools.soy',
|
|
"${generatedDir}/google/registry/tools/soy",
|
|
fileTree(
|
|
dir: "${javaDir}/google/registry/tools/soy",
|
|
include: ['**/*.soy']))
|
|
|
|
soyToJava('google.registry.ui.soy.registrar',
|
|
"${generatedDir}/google/registry/ui/soy/registrar",
|
|
fileTree(
|
|
dir: "${javaDir}/google/registry/ui/soy/registrar",
|
|
include: ['**/*.soy']))
|
|
|
|
soyToJava('google.registry.ui.soy',
|
|
"${generatedDir}/google/registry/ui/soy",
|
|
files {
|
|
file("${javaDir}/google/registry/ui/soy").listFiles()
|
|
}.filter {
|
|
it.name.endsWith(".soy")
|
|
})
|
|
}
|
|
}
|
|
|
|
task stylesheetsToJavascript {
|
|
ext.cssCompile = { outputName, debug, cssFiles ->
|
|
javaexec {
|
|
main = "com.google.common.css.compiler.commandline.ClosureCommandLineCompiler"
|
|
classpath configurations.css
|
|
|
|
def argsBuffer = [
|
|
"--output-file", "${outputName}.css",
|
|
"--output-source-map", "${outputName}.css.map",
|
|
"--input-orientation", "LTR",
|
|
"--output-orientation", "NOCHANGE",
|
|
"--output-renaming-map", "${outputName}.css.js",
|
|
"--output-renaming-map-format", "CLOSURE_COMPILED_SPLIT_HYPHENS"
|
|
]
|
|
if (debug) {
|
|
argsBuffer.addAll(["--rename", "DEBUG", "--pretty-print"])
|
|
} else {
|
|
argsBuffer.addAll(["--rename", "CLOSURE"])
|
|
}
|
|
|
|
argsBuffer.addAll(cssFiles)
|
|
args argsBuffer
|
|
}
|
|
}
|
|
|
|
doLast {
|
|
def cssSourceDir = "${javaDir}/google/registry/ui/css"
|
|
def outputDir = "${project.buildDir}/resources/main/google/registry/ui/css"
|
|
file("${outputDir}").mkdirs()
|
|
def srcFiles = [
|
|
"${cssSourceDir}/console.css",
|
|
"${cssSourceDir}/contact-settings.css",
|
|
"${cssSourceDir}/contact-us.css",
|
|
"${cssSourceDir}/dashboard.css",
|
|
"${cssSourceDir}/epp.css",
|
|
"${cssSourceDir}/forms.css",
|
|
"${cssSourceDir}/kd_components.css",
|
|
"${cssSourceDir}/registry.css",
|
|
"${cssSourceDir}/resources.css",
|
|
"${cssSourceDir}/security-settings.css"
|
|
]
|
|
cssCompile("${outputDir}/registrar_bin", false, srcFiles)
|
|
cssCompile("${outputDir}/registrar_dbg", true, srcFiles)
|
|
}
|
|
}
|
|
|
|
compileJava.dependsOn jaxbToJava
|
|
compileJava.dependsOn soyToJava
|
|
|
|
// stylesheetsToJavascript must happen after processResources, which wipes the
|
|
// resources folder before copying data into it.
|
|
stylesheetsToJavascript.dependsOn processResources
|
|
classes.dependsOn stylesheetsToJavascript
|
|
|
|
|
|
test {
|
|
// Test exclusion patterns:
|
|
// - *TestCase.java are inherited by concrete test classes.
|
|
// - *TestSuite.java are excluded to avoid duplicate execution of suite
|
|
// members. See README in this directory for more information.
|
|
exclude "**/*TestCase.*", "**/*TestSuite.*"
|
|
|
|
// Use a single JVM to execute all tests. See README in this directory for
|
|
// more information.
|
|
maxParallelForks 1
|
|
|
|
// Use a single thread to execute all tests in a JVM. See README in this
|
|
// directory for more information.
|
|
forkEvery 1
|
|
|
|
// Uncomment to see test outputs in stdout.
|
|
//testLogging.showStandardStreams = true
|
|
}
|