mirror of
https://github.com/google/nomulus.git
synced 2025-08-04 08:52:12 +02:00
Combining all tests in one suite and drop the forkEvery=1 directive. Issue was fixed by [] and [] TESTED=Run locally with maxParallelForks =1 and 5, and tested on travis with maxParallelForks=5 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=229414759
436 lines
17 KiB
Groovy
436 lines
17 KiB
Groovy
plugins {
|
|
id 'java-library'
|
|
}
|
|
|
|
// 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 += generatedDir
|
|
}
|
|
resources {
|
|
exclude '**/*.xjb'
|
|
}
|
|
}
|
|
test {
|
|
resources {
|
|
exclude '**/*.xjb', '**/*.xsd'
|
|
}
|
|
}
|
|
}
|
|
|
|
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.
|
|
maybeRuntime
|
|
}
|
|
|
|
// 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 {
|
|
def deps = rootProject.dependencyMap
|
|
|
|
// Custom-built objectify jar at commit ecd5165, included in Nomulus
|
|
// release.
|
|
implementation files(
|
|
"${rootDir}/../third_party/objectify/v4_1/objectify-4.1.3.jar")
|
|
testImplementation project(':third_party')
|
|
|
|
compile deps['com.beust:jcommander']
|
|
compile deps['com.google.api-client:google-api-client']
|
|
maybeRuntime deps['com.google.api-client:google-api-client-appengine']
|
|
maybeRuntime deps['com.google.api-client:google-api-client-jackson2']
|
|
compile deps['com.google.monitoring-client:metrics']
|
|
compile deps['com.google.monitoring-client:stackdriver']
|
|
compile deps['com.google.api-client:google-api-client-java6']
|
|
maybeRuntime deps['com.google.api-client:google-api-client-servlet']
|
|
compile deps['com.google.apis:google-api-services-admin-directory']
|
|
compile deps['com.google.apis:google-api-services-appengine']
|
|
compile deps['com.google.apis:google-api-services-bigquery']
|
|
maybeRuntime deps['com.google.apis:google-api-services-clouddebugger']
|
|
compile deps['com.google.apis:google-api-services-cloudkms']
|
|
maybeRuntime deps['com.google.apis:google-api-services-cloudresourcemanager']
|
|
compile deps['com.google.apis:google-api-services-dataflow']
|
|
compile deps['com.google.apis:google-api-services-dns']
|
|
compile deps['com.google.apis:google-api-services-drive']
|
|
compile deps['com.google.apis:google-api-services-groupssettings']
|
|
compile deps['com.google.apis:google-api-services-monitoring']
|
|
compile deps['com.google.apis:google-api-services-sheets']
|
|
maybeRuntime deps['com.google.apis:google-api-services-storage']
|
|
// TODO(b/71631624): change appengine:appengine-api-1.0-sdk to
|
|
// testCompileOnly after BillingEmailUtilsTest.java is fixed.
|
|
compile deps['com.google.appengine:appengine-api-1.0-sdk']
|
|
maybeRuntime deps['com.google.appengine:appengine-api-labs']
|
|
maybeRuntime deps['com.google.appengine:appengine-api-stubs']
|
|
testCompile deps['com.google.appengine:appengine-api-stubs']
|
|
compile deps['com.google.appengine.tools:appengine-gcs-client']
|
|
compile deps['com.google.appengine.tools:appengine-mapreduce']
|
|
compile deps['com.google.appengine.tools:appengine-pipeline']
|
|
compile deps['com.google.appengine:appengine-remote-api']
|
|
maybeRuntime deps['com.google.appengine:appengine-tools-sdk']
|
|
compile deps['com.google.auth:google-auth-library-credentials']
|
|
compile deps['com.google.auth:google-auth-library-oauth2-http']
|
|
maybeRuntime deps['com.google.auto:auto-common']
|
|
maybeRuntime deps['com.google.auto.factory:auto-factory']
|
|
compile deps['com.google.code.gson:gson']
|
|
compile deps['com.google.auto.value:auto-value-annotations']
|
|
maybeRuntime deps['com.google.cloud.bigdataoss:gcsio']
|
|
maybeRuntime deps['com.google.cloud.bigdataoss:util']
|
|
compile deps['com.google.code.findbugs:jsr305']
|
|
compile deps['com.google.dagger:dagger']
|
|
maybeRuntime deps['com.google.dagger:dagger-producers']
|
|
compile deps['com.google.errorprone:error_prone_annotations']
|
|
maybeRuntime deps['com.google.errorprone:javac-shaded']
|
|
compile deps['com.google.flogger:flogger']
|
|
runtime deps['com.google.flogger:flogger-system-backend']
|
|
maybeRuntime deps['com.google.gdata:core']
|
|
maybeRuntime deps['com.google.googlejavaformat:google-java-format']
|
|
compile deps['com.google.guava:guava']
|
|
gradleLint.ignore('unused-dependency') {
|
|
compile deps['com.google.gwt:gwt-user']
|
|
}
|
|
compile deps['com.google.http-client:google-http-client']
|
|
compile deps['com.google.http-client:google-http-client-appengine']
|
|
compile deps['com.google.http-client:google-http-client-jackson2']
|
|
compile deps['com.google.oauth-client:google-oauth-client']
|
|
maybeRuntime deps['com.google.oauth-client:google-oauth-client-appengine']
|
|
compile deps['com.google.oauth-client:google-oauth-client-java6']
|
|
compile deps['com.google.oauth-client:google-oauth-client-jetty']
|
|
maybeRuntime deps['com.google.oauth-client:google-oauth-client-servlet']
|
|
maybeRuntime deps['com.google.protobuf:protobuf-java']
|
|
compile deps['com.google.re2j:re2j']
|
|
compile deps['com.google.template:soy']
|
|
maybeRuntime deps['com.googlecode.charts4j:charts4j']
|
|
compile deps['com.googlecode.json-simple:json-simple']
|
|
compile deps['com.jcraft:jsch']
|
|
maybeRuntime deps['com.jcraft:jzlib']
|
|
maybeRuntime deps['com.squareup:javapoet']
|
|
maybeRuntime deps['com.squareup:javawriter']
|
|
maybeRuntime deps['com.sun.activation:javax.activation']
|
|
maybeRuntime deps['com.thoughtworks.paranamer:paranamer']
|
|
maybeRuntime deps['commons-codec:commons-codec']
|
|
maybeRuntime deps['commons-logging:commons-logging']
|
|
compile deps['dnsjava:dnsjava']
|
|
maybeRuntime deps['io.netty:netty-buffer']
|
|
maybeRuntime deps['io.netty:netty-codec']
|
|
maybeRuntime deps['io.netty:netty-codec-http']
|
|
maybeRuntime deps['io.netty:netty-common']
|
|
maybeRuntime deps['io.netty:netty-handler']
|
|
maybeRuntime deps['io.netty:netty-resolver']
|
|
maybeRuntime deps['io.netty:netty-tcnative']
|
|
maybeRuntime deps['io.netty:netty-tcnative-boringssl-static']
|
|
maybeRuntime deps['io.netty:netty-transport']
|
|
maybeRuntime deps['it.unimi.dsi:fastutil']
|
|
maybeRuntime deps['javax.annotation:jsr250-api']
|
|
runtime deps['org.glassfish.jaxb:jaxb-runtime']
|
|
testCompile deps['javax.annotation:jsr250-api']
|
|
compile deps['javax.inject:javax.inject']
|
|
compile deps['javax.mail:mail']
|
|
compile deps['javax.servlet:servlet-api']
|
|
compile deps['javax.xml.bind:jaxb-api']
|
|
maybeRuntime deps['javax.xml.soap:javax.xml.soap-api']
|
|
compile deps['jline:jline']
|
|
compile deps['joda-time:joda-time']
|
|
compile deps['org.apache.avro:avro']
|
|
maybeRuntime deps['org.apache.beam:beam-runners-direct-java']
|
|
testCompile deps['org.apache.beam:beam-runners-direct-java']
|
|
compile deps['org.apache.beam:beam-runners-google-cloud-dataflow-java']
|
|
maybeRuntime deps['org.apache.beam:beam-sdks-common-runner-api']
|
|
compile deps['org.apache.beam:beam-sdks-java-core']
|
|
compile deps['org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core']
|
|
compile deps['org.apache.beam:beam-sdks-java-io-google-cloud-platform']
|
|
maybeRuntime deps['org.apache.commons:commons-compress']
|
|
maybeRuntime deps['org.apache.ftpserver:ftplet-api']
|
|
testCompile deps['org.apache.ftpserver:ftplet-api']
|
|
maybeRuntime deps['org.apache.ftpserver:ftpserver-core']
|
|
testCompile deps['org.apache.ftpserver:ftpserver-core']
|
|
compile deps['org.apache.httpcomponents:httpclient']
|
|
compile deps['org.apache.httpcomponents:httpcore']
|
|
maybeRuntime deps['org.apache.mina:mina-core']
|
|
maybeRuntime deps['org.apache.sshd:sshd-core']
|
|
testCompile deps['org.apache.sshd:sshd-core']
|
|
maybeRuntime deps['org.apache.sshd:sshd-scp']
|
|
testCompile deps['org.apache.sshd:sshd-scp']
|
|
maybeRuntime deps['org.apache.sshd:sshd-sftp']
|
|
testCompile deps['org.apache.sshd:sshd-sftp']
|
|
compile deps['org.apache.tomcat:servlet-api']
|
|
maybeRuntime deps['org.apache.tomcat:tomcat-annotations-api']
|
|
testCompile deps['org.apache.tomcat:tomcat-annotations-api']
|
|
compile deps['org.bouncycastle:bcpg-jdk15on']
|
|
testCompile deps['org.bouncycastle:bcpkix-jdk15on']
|
|
compile deps['org.bouncycastle:bcprov-jdk15on']
|
|
maybeRuntime deps['org.codehaus.jackson:jackson-core-asl']
|
|
maybeRuntime deps['org.codehaus.jackson:jackson-mapper-asl']
|
|
compile deps['org.joda:joda-money']
|
|
compile deps['org.json:json']
|
|
maybeRuntime deps['org.khronos:opengl-api']
|
|
maybeRuntime deps['org.mortbay.jetty:jetty']
|
|
testCompile deps['org.mortbay.jetty:jetty']
|
|
compile deps['org.mortbay.jetty:servlet-api']
|
|
maybeRuntime deps['org.mortbay.jetty:jetty-util']
|
|
maybeRuntime deps['org.slf4j:slf4j-api']
|
|
maybeRuntime deps['org.tukaani:xz']
|
|
maybeRuntime deps['org.xerial.snappy:snappy-java']
|
|
compile deps['xerces:xmlParserAPIs']
|
|
compile deps['xpp3:xpp3']
|
|
|
|
// Known issue: nebula-lint misses inherited dependency.
|
|
compile project(':third_party')
|
|
compile project(':util')
|
|
|
|
// Include auto-value in compile until nebula-lint understands
|
|
// annotationProcessor
|
|
gradleLint.ignore('unused-dependency') {
|
|
compile deps['com.google.auto.value:auto-value']
|
|
}
|
|
annotationProcessor deps['com.google.auto.value:auto-value']
|
|
testAnnotationProcessor deps['com.google.auto.value:auto-value']
|
|
annotationProcessor deps['com.google.dagger:dagger-compiler']
|
|
testAnnotationProcessor deps['com.google.dagger:dagger-compiler']
|
|
|
|
testCompile deps['com.google.appengine:appengine-testing']
|
|
testCompile deps['com.google.guava:guava-testlib']
|
|
testCompile deps['com.google.monitoring-client:contrib']
|
|
testCompile deps['com.google.truth:truth']
|
|
testCompile deps['com.google.truth.extensions:truth-java8-extension']
|
|
testCompile deps['org.hamcrest:hamcrest-all']
|
|
testCompile deps['org.hamcrest:hamcrest-core']
|
|
testCompile deps['org.hamcrest:hamcrest-library']
|
|
testCompile deps['junit:junit']
|
|
testCompile deps['org.mockito:mockito-all']
|
|
|
|
// Indirect dependency found by undeclared-dependency check. Such
|
|
// dependencies should go after all other compile and testCompile
|
|
// dependencies to avoid overriding them accidentally.
|
|
compile deps['javax.servlet:javax.servlet-api'] // google-api-client-appeng
|
|
compile deps['com.google.oauth-client:google-oauth-client-java6']
|
|
|
|
// 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 deps['javax.xml.bind:jaxb-api']
|
|
jaxb deps['com.sun.activation:javax.activation']
|
|
jaxb deps['com.sun.xml.bind:jaxb-xjc']
|
|
jaxb deps['com.sun.xml.bind:jaxb-impl']
|
|
jaxb deps['com.sun.xml.bind:jaxb-osgi']
|
|
|
|
// Dependency needed for soy to java compilation.
|
|
soy deps['com.google.template:soy']
|
|
|
|
// Dependencies needed for compiling stylesheets to javascript
|
|
css deps['com.google.closure-stylesheets:closure-stylesheets']
|
|
css deps['args4j:args4j']
|
|
|
|
// Tool dependencies. used for doc generation.
|
|
compile files("${System.properties['java.home']}/../lib/tools.jar")
|
|
}
|
|
|
|
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.otesetup',
|
|
"${generatedDir}/google/registry/ui/soy/otesetup",
|
|
fileTree(
|
|
dir: "${javaDir}/google/registry/ui/soy/otesetup",
|
|
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")
|
|
})
|
|
|
|
soyToJava('google.registry.reporting.spec11.soy',
|
|
"${generatedDir}/google/registry/reporting/spec11/soy",
|
|
fileTree(
|
|
dir: "${javaDir}/google/registry/reporting/spec11/soy",
|
|
include: ['**/*.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
|
|
|
|
// Make testing artifacts available to be depended up on by other projects.
|
|
// TODO: factor out google.registry.testing to be a separate project.
|
|
task testJar(type: Jar) {
|
|
classifier = 'test'
|
|
from sourceSets.test.output
|
|
}
|
|
|
|
artifacts {
|
|
testRuntime testJar
|
|
}
|
|
|
|
test {
|
|
// Common exclude pattern. See README in parent directory for explanation.
|
|
exclude "**/*TestCase.*", "**/*TestSuite.*"
|
|
|
|
// Sets the maximum number of test executors that may exist at the same time.
|
|
maxParallelForks 5
|
|
}
|
|
|
|
task nomulus(type: Jar) {
|
|
manifest {
|
|
attributes 'Main-Class': 'google.registry.tools.RegistryTool'
|
|
}
|
|
zip64 = true
|
|
baseName = 'nomulus'
|
|
version = null
|
|
from {
|
|
configurations.runtimeClasspath.collect {
|
|
it.isDirectory() ? it : zipTree(it)
|
|
}
|
|
}
|
|
// Excludes signature files that accompany some dependency jars, like
|
|
// bonuncycastle. It they are present, only classes from those signed jars are
|
|
// made available to the class loader.
|
|
// see https://discuss.gradle.org/t/signing-a-custom-gradle-plugin-thats-downloaded-by-the-build-system-from-github/1365
|
|
exclude "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA"
|
|
with jar
|
|
dependsOn project(':third_party').jar
|
|
}
|
|
|
|
ext.generateDependencyPublications()
|