diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..a7a831927
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: waiting-for-triage
+assignees: ''
+
+---
+**PLEASE READ**: If you have a support contract with Google, please create an issue in the
+[support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure
+a timely response.
+
+We'd love to accept your patches and contributions to this project. There are just a few small
+guidelines you need to follow before opening an issue or a PR:
+
+1. Ensure the issue was not already reported.
+2. Open a new issue if you are unable to find an existing issue addressing your problem. Make sure
+ to include a title and clear description, as much relevant information as possible, and a code
+ sample or an executable test case demonstrating the expected behavior that is not occurring.
+3. Discuss the priority and potential solutions with the maintainers in the issue. The maintainers
+ would review the issue and add a label "Accepting Contributions" once the issue is ready for
+ accepting contributions.
+4. Open a PR only if the issue is labeled with "Accepting Contributions", ensure the PR description
+ clearly describes the problem and solution. Note that an open PR without an issue labeled with "
+ Accepting Contributions" will not be accepted.
+
+See
+also [CONTRIBUTING.md](https://github.com/GoogleCloudPlatform/appengine-plugins/blob/main/CONTRIBUTING.md)
+.
+
+**Describe the bug**
+Please provide details of the problem, including the version of App Engine plugin that you
+are using.
+
+**Sample**
+If possible, please provide a test case or sample application that reproduces
+the problem. This makes it much easier for us to diagnose the problem and to verify that
+we have fixed it.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..603b90133
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,4 @@
+contact_links:
+ - name: Google Cloud Support
+ url: https://cloud.google.com/support/
+ about: If you have a support contract with Google, please use the Google Cloud Support portal.
diff --git a/.kokoro/continuous_mac.sh b/.kokoro/continuous_mac.sh
deleted file mode 100755
index 4e470d890..000000000
--- a/.kokoro/continuous_mac.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-# Fail on any error.
-set -e
-# Display commands to stderr.
-set -x
-
-gcloud components update
-gcloud components install app-engine-java
-
-# Use adopt openjdk 8u202 until kokoro updates its macos images (b/130225695)
-wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_mac_hotspot_8u202b08.tar.gz
-tar -xzf OpenJDK8U-jdk_x64_mac_hotspot_8u202b08.tar.gz
-
-JAVA_HOME="$(pwd)"/jdk8u202-b08/Contents/Home/
-export JAVA_HOME
-
-# temporary workaround until mvn is available in the image by default
-# the integration tests rely on Maven being installed, cannot use the wrapper
-curl https://storage.googleapis.com/cloud-tools-for-java-team-kokoro-build-cache/apache-maven-3.5.0-bin.tar.gz -o apache-maven-3.5.0-bin.tar.gz
-tar -xzf apache-maven-3.5.0-bin.tar.gz
-
-M2_HOME="$(pwd)"/apache-maven-3.5.0
-PATH=$PATH:$M2_HOME/bin
-
-cd git/appengine-plugins
-
-# Use GCP Maven Mirror
-mkdir -p ${HOME}/.m2
-cp settings.xml ${HOME}/.m2
-
-./mvnw clean install -B -U -DskipSurefire=true -Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss:SSS
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index c4bf51a72..024e37d60 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.8.4"
+ ".": "2.8.7"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 731152c1b..bfb04608d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [2.8.7](https://github.com/GoogleCloudPlatform/appengine-plugins/compare/v2.8.6...v2.8.7) (2026-03-27)
+
+
+### Bug Fixes
+
+* Update DevServer to handle empty POST requests ([#1072](https://github.com/GoogleCloudPlatform/appengine-plugins/issues/1072)) ([5c45ff8](https://github.com/GoogleCloudPlatform/appengine-plugins/commit/5c45ff800be91da935a7a9884ba0d025a529281a))
+
+## [2.8.6](https://github.com/GoogleCloudPlatform/appengine-plugins/compare/v2.8.5...v2.8.6) (2025-11-18)
+
+
+### Dependencies
+
+* upgrade commons-lang3 to 3.18.0 ([#1061](https://github.com/GoogleCloudPlatform/appengine-plugins/issues/1061)) ([1dfcad3](https://github.com/GoogleCloudPlatform/appengine-plugins/commit/1dfcad30937a66f4414dd419a487eb6ea6a3a81c))
+
+## [2.8.5](https://github.com/GoogleCloudPlatform/appengine-plugins/compare/v2.8.4...v2.8.5) (2025-11-14)
+
+
+### Dependencies
+
+* ensure commons-lang3 v3.18.0 used for gradle ([#1058](https://github.com/GoogleCloudPlatform/appengine-plugins/issues/1058)) ([2ad9903](https://github.com/GoogleCloudPlatform/appengine-plugins/commit/2ad99037f0cb1be576ff906996ed819b84883aec))
+* upgrade commons-io to 2.20.0 ([#1056](https://github.com/GoogleCloudPlatform/appengine-plugins/issues/1056)) ([40b5cfa](https://github.com/GoogleCloudPlatform/appengine-plugins/commit/40b5cfab7391c1a09a5bb70dc73d821d47fd0e13))
+
## [2.8.4](https://github.com/GoogleCloudPlatform/appengine-plugins/compare/v2.8.3...v2.8.4) (2025-10-20)
diff --git a/app-gradle-plugin/build.gradle.kts b/app-gradle-plugin/build.gradle.kts
index 77ee5f1d5..7931e6687 100644
--- a/app-gradle-plugin/build.gradle.kts
+++ b/app-gradle-plugin/build.gradle.kts
@@ -20,7 +20,7 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
*/
group = "com.google.cloud.tools"
-version = "2.8.5-SNAPSHOT" // {x-version-update:app-gradle-plugin:current}
+version = "2.8.7" // {x-version-update:app-gradle-plugin:current}
plugins {
id("java")
@@ -49,7 +49,10 @@ java {
dependencies {
implementation(localGroovy())
implementation(gradleApi())
- api("com.google.cloud.tools:appengine-plugins-core:0.13.5-SNAPSHOT") // {x-version-update:appengine-plugins-core:current}
+ api("com.google.cloud.tools:appengine-plugins-core:0.13.7") // {x-version-update:appengine-plugins-core:current}
+
+ implementation("org.apache.commons:commons-lang3:3.18.0")
+ implementation("commons-io:commons-io:2.20.0")
testImplementation("commons-io:commons-io:2.11.0")
testImplementation("junit:junit:4.13.2")
diff --git a/app-maven-plugin/pom.xml b/app-maven-plugin/pom.xml
index 535ff2b75..9baa063db 100644
--- a/app-maven-plugin/pom.xml
+++ b/app-maven-plugin/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud.tools
appengine-maven-plugin
- 2.8.5-SNAPSHOT
+ 2.8.7
maven-plugin
App Engine Maven Plugin
@@ -92,7 +92,7 @@
com.google.cloud.tools
appengine-plugins-core
- 0.13.5-SNAPSHOT
+ 0.13.7
@@ -114,7 +114,12 @@
commons-io
commons-io
- 2.15.1
+ 2.20.0
+
+
+ org.apache.commons
+ commons-lang3
+ 3.18.0
@@ -167,6 +172,38 @@
org.apache.maven.plugins
maven-plugin-plugin
3.6.4
+
+
+ org.codehaus.plexus
+ plexus-i18n
+ 1.0-beta-10
+
+
+ *
+ *
+
+
+
+
+ org.apache.maven.reporting
+ maven-reporting-impl
+ 3.0.0
+
+
+ org.apache.maven.doxia
+ doxia-site-renderer
+
+
+ org.apache.maven.doxia
+ doxia-core
+
+
+ org.apache.maven.doxia
+ doxia-sink-api
+
+
+
+
default-descriptor
@@ -203,7 +240,7 @@
maven-checkstyle-plugin
- 3.1.0
+ 3.6.0
com.puppycrawl.tools
@@ -288,7 +325,31 @@
org.apache.maven.plugins
maven-pmd-plugin
- 3.16.0
+ 3.21.2
+
+
+ org.apache.maven.reporting
+ maven-reporting-impl
+ 3.2.0
+
+
+ org.codehaus.plexus
+ plexus-container-default
+
+
+
+
+ org.apache.maven.doxia
+ doxia-site-renderer
+ 1.11.1
+
+
+ org.codehaus.plexus
+ plexus-container-default
+
+
+
+
false
true
@@ -349,7 +410,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.7
+ 0.8.12
@@ -450,7 +511,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.3.2
+ 3.11.2
attach-javadocs
diff --git a/appengine-plugins-core/pom.xml b/appengine-plugins-core/pom.xml
index 52f3d7464..d292423ef 100644
--- a/appengine-plugins-core/pom.xml
+++ b/appengine-plugins-core/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud.tools
appengine-plugins-core
- 0.13.5-SNAPSHOT
+ 0.13.7
App Engine Plugins Core Library
@@ -110,7 +110,7 @@
org.apache.commons
commons-compress
- 1.26.1
+ 1.28.0
@@ -190,6 +190,56 @@
org.apache.felix
maven-bundle-plugin
5.1.9
+
+
+ org.codehaus.plexus
+ plexus-i18n
+ 1.0-beta-10
+
+
+ *
+ *
+
+
+
+
+ org.apache.maven.doxia
+ doxia-site-renderer
+ 1.0
+
+
+ org.codehaus.plexus
+ plexus-i18n
+
+
+ org.codehaus.plexus
+ plexus-container-default
+
+
+
+
+ org.apache.felix
+ org.apache.felix.bundlerepository
+ 1.6.6
+
+
+ org.osgi
+ org.osgi.core
+
+
+
+
+ org.apache.felix
+ org.apache.felix.utils
+ 1.6.0
+
+
+ org.osgi
+ org.osgi.core
+
+
+
+
+ 3.0.0
com.google.cloud.tools
@@ -438,9 +489,9 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.3.2
+ 3.11.2
- -Xdoclint:none
+ none
@@ -487,6 +538,7 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.11.0
1.8
1.8
@@ -566,7 +618,7 @@
maven-checkstyle-plugin
- 3.3.0
+ 3.6.0
com.puppycrawl.tools
diff --git a/appengine-plugins-core/src/main/java/com/google/cloud/tools/appengine/operations/DevServer.java b/appengine-plugins-core/src/main/java/com/google/cloud/tools/appengine/operations/DevServer.java
index 2f88fe414..1c74d68bf 100644
--- a/appengine-plugins-core/src/main/java/com/google/cloud/tools/appengine/operations/DevServer.java
+++ b/appengine-plugins-core/src/main/java/com/google/cloud/tools/appengine/operations/DevServer.java
@@ -205,7 +205,8 @@ public void stop(StopConfiguration configuration) throws AppEngineException {
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
- connection.getOutputStream().write('\n');
+ connection.setRequestProperty("Content-Length", "0");
+ connection.getOutputStream().close();
connection.disconnect();
int responseCode = connection.getResponseCode();
if (responseCode < 200 || responseCode > 299) {
diff --git a/pom.xml b/pom.xml
index 83bfccc2a..dc272751d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,11 +25,25 @@
com.google.cloud.tools
appengine-plugins-core
- 0.13.5-SNAPSHOT
+ 0.13.7
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.11.2
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.3.0
+
+
+
com.coveo
diff --git a/versions.txt b/versions.txt
index ce8d764a7..2b783d718 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,6 +1,6 @@
# Format:
# module:released-version:current-version
-app-maven-plugin:2.8.4:2.8.5-SNAPSHOT
-app-gradle-plugin:2.8.4:2.8.5-SNAPSHOT
-appengine-plugins-core:0.13.4:0.13.5-SNAPSHOT
+app-maven-plugin:2.8.7:2.8.7
+app-gradle-plugin:2.8.7:2.8.7
+appengine-plugins-core:0.13.7:0.13.7