mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 03:57:51 +02:00
For some reason tools.jar (which we don't need in the runtime in the first place) gets exploded readonly, causing subsequent builds to fail since they can't overwrite it. This hack makes it writable at the end of explodeWar.
95 lines
3.3 KiB
Groovy
95 lines
3.3 KiB
Groovy
// Copyright 2019 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
apply from: "${rootDir.path}/projects.gradle"
|
|
apply plugin: 'war'
|
|
|
|
def environment = rootProject.environment
|
|
def gcpProject = rootProject.gcpProject
|
|
|
|
// Set this directory before applying the appengine plugin so that the
|
|
// plugin will recognize this as an app-engine standard app (and also
|
|
// obtains the appengine-web.xml from the correct location)
|
|
project.convention.plugins['war'].webAppDirName =
|
|
"../../core/src/main/java/google/registry/env/${environment}/${project.name}"
|
|
|
|
apply plugin: 'com.google.cloud.tools.appengine'
|
|
|
|
// Get the web.xml file for the service.
|
|
war {
|
|
webInf {
|
|
from "../../core/src/main/java/google/registry/env/common/${project.name}/WEB-INF"
|
|
}
|
|
}
|
|
|
|
def coreResourcesDir = "${rootDir}/core/build/resources/main"
|
|
war {
|
|
from("${coreResourcesDir}/google/registry/ui/html") {
|
|
include "*.html"
|
|
}
|
|
}
|
|
|
|
if (project.path == ":services:default") {
|
|
war {
|
|
from("${coreResourcesDir}/google/registry/ui") {
|
|
include "registrar_bin.js"
|
|
if (environment != "production") {
|
|
include "registrar_bin.js.map"
|
|
}
|
|
into("assets/js")
|
|
}
|
|
from("${coreResourcesDir}/google/registry/ui/css") {
|
|
include "registrar*"
|
|
into("assets/css")
|
|
}
|
|
from("${coreResourcesDir}/google/registry/ui/assets/images") {
|
|
include "**/*"
|
|
into("assets/images")
|
|
}
|
|
}
|
|
}
|
|
|
|
appengine {
|
|
deploy {
|
|
// appengineDeployAll task requires the version to be set. So,
|
|
// this config lets gcloud select a version name when deploying
|
|
// to alpha or sandbox from our workstation.
|
|
if (!rootProject.prodOrSandboxEnv) {
|
|
version = 'GCLOUD_CONFIG'
|
|
}
|
|
projectId = gcpProject
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
compile project(':core')
|
|
}
|
|
|
|
// The tools.jar file gets pulled in from the java environment and for some
|
|
// reason gets exploded "readonly", causing subsequent builds to fail when
|
|
// they can't overwrite it. The hack below makes the file writable after
|
|
// we're done exploding it.
|
|
//
|
|
// Fun fact: We only use this jar for documentation generation and as such we
|
|
// don't need it in our warfile, as it is not used by the application at
|
|
// runtime. But it's not clear how to exclude it, as we seem to be
|
|
// constructing the jar from the entire WEB-INF directory and per-file
|
|
// exclude rules don't seem to work on it. Better solutions are welcome :-)
|
|
explodeWar.doLast {
|
|
file("${it.explodedAppDirectory}/WEB-INF/lib/tools.jar").setWritable(true)
|
|
}
|
|
|
|
rootProject.deploy.dependsOn appengineDeployAll
|
|
rootProject.stage.dependsOn appengineStage
|
|
appengineDeployAll.dependsOn rootProject.verifyDeployment
|