diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/category.xml b/eclipse-distribution/org.springframework.boot.ide.product.e417/category.xml
new file mode 100644
index 000000000..77f67a706
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/category.xml
@@ -0,0 +1,391 @@
+
+
+
+ Spring Tool Suite 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/entitlements.plist b/eclipse-distribution/org.springframework.boot.ide.product.e417/entitlements.plist
new file mode 100644
index 000000000..6a297d495
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/entitlements.plist
@@ -0,0 +1,18 @@
+
+
+
+
+ com.apple.security.cs.allow-jit
+
+ com.apple.security.cs.allow-unsigned-executable-memory
+
+ com.apple.security.cs.disable-executable-page-protection
+
+ com.apple.security.cs.allow-dyld-environment-variables
+
+ com.apple.security.cs.disable-library-validation
+
+ com.apple.security.cs.debugger
+
+
+
diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/macos-notarize.sh b/eclipse-distribution/org.springframework.boot.ide.product.e417/macos-notarize.sh
new file mode 100755
index 000000000..eaf3bde2b
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/macos-notarize.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+DMG=$1
+NOTARIZE_SERVICE_URL=$2
+
+RESPONSE=\
+$(curl -s -X POST \
+ -F file=@${DMG} \
+ -F 'options={"primaryBundleId": "SpringTools4", "staple": true};type=application/json' \
+ ${NOTARIZE_SERVICE_URL}/macos-notarization-service/notarize)
+
+echo "Notarization request submitted"
+echo ${RESPONSE}
+
+UUID=$(echo ${RESPONSE} | jq -r '.uuid')
+
+STATUS=$(echo ${RESPONSE} | jq -r '.notarizationStatus.status')
+
+while [[ ${STATUS} == 'IN_PROGRESS' ]]; do
+ sleep 1m
+ RESPONSE=$(curl -s ${NOTARIZE_SERVICE_URL}/macos-notarization-service/${UUID}/status)
+ STATUS=$(echo ${RESPONSE} | jq -r '.notarizationStatus.status')
+done
+
+if [[ ${STATUS} != 'COMPLETE' ]]; then
+ echo "Notarization failed: ${RESPONSE}"
+ exit 1
+fi
+
+mv "${DMG}" "${DMG}-unnotarized"
+
+curl -o ${DMG} -J ${NOTARIZE_SERVICE_URL}/macos-notarization-service/${UUID}/download
diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/org.springframework.boot.ide.product b/eclipse-distribution/org.springframework.boot.ide.product.e417/org.springframework.boot.ide.product
new file mode 100644
index 000000000..d77712370
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/org.springframework.boot.ide.product
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+ -product org.springframework.boot.ide.branding.sts4
+--launcher.defaultAction openFile
+
+ -Dosgi.requiredJavaVersion=1.8
+-Xms256m
+-Xmx1024m
+-XX:+UseG1GC
+-XX:+UseStringDeduplication
+--add-modules=ALL-SYSTEM
+
+
+
+ -XstartOnFirstThread
+-Dorg.eclipse.swt.internal.carbon.smallFonts -Xdock:icon=../Resources/sts4.icns
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/p2.inf b/eclipse-distribution/org.springframework.boot.ide.product.e417/p2.inf
new file mode 100644
index 000000000..b2c56e04c
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/p2.inf
@@ -0,0 +1,24 @@
+instructions.configure=\
+ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:https${#58}//download.eclipse.org/releases/latest,name:Latest Eclipse Release);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:https${#58}//download.eclipse.org/releases/latest,name:Latest Eclipse Release);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest,name:Spring Tool Suite 4);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest,name:Spring Tool Suite 4);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations,name:Spring Tools 4 Language Servers for Eclipse);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations,name:Spring Tools 4 Language Servers for Eclipse);\
+ org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/dropins);
+
+instructions.unconfigure=\
+ org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:https${#58}//download.eclipse.org/releases/latest);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:https${#58}//download.eclipse.org/releases/latest);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations);\
+ org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations);
+
+ # Bug 530093: make sure we have latest version of a.jre.javase included with product
+# requires.3.namespace=org.eclipse.equinox.p2.iu
+# requires.3.name=a.jre.javase
+# requires.3.range=[9.0.0,9.0.0]
+# requires.4.namespace=org.eclipse.equinox.p2.iu
+# requires.4.name=config.a.jre.javase
+# requires.4.range=[14.0.0,9.0.0]
diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/pom.xml b/eclipse-distribution/org.springframework.boot.ide.product.e417/pom.xml
new file mode 100644
index 000000000..fa39caacd
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/pom.xml
@@ -0,0 +1,479 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot.ide
+ org.springframework.boot.ide
+ 4.7.1-SNAPSHOT
+ ../pom.xml
+
+
+ org.springframework.boot.ide.product
+
+ eclipse-repository
+
+
+ ${accessKey}
+ ${secretKey}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+ 2.5.2
+
+
+ default-install
+ none
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-p2-repository-plugin
+ ${tycho-version}
+
+ false
+
+
+
+
+ org.eclipse.tycho
+ tycho-p2-publisher-plugin
+ ${tycho-version}
+
+ true
+
+
+
+
+ org.eclipse.tycho
+ target-platform-configuration
+ ${tycho-version}
+
+
+
+
+ org.eclipse.tycho
+ tycho-p2-director-plugin
+ ${tycho-version}
+
+
+ materialize-products
+
+ materialize-products
+
+ package
+
+
+ archive-products
+
+ archive-products
+
+ verify
+
+
+
+
+
+ org.springframework.boot.ide.branding.sts4
+ sts-${unqualifiedVersion}.${p2.qualifier}
+
+ SpringToolSuite4.app
+
+ spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}
+
+
+
+ tar.gz
+ tar.gz
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.6.0
+
+
+ generate-license-files
+ package
+
+ exec
+
+
+ java
+
+ -jar
+ ${project.build.directory}/../../common/eclipse-distribution-license-file-generator.jar
+ ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app/Contents/Eclipse/plugins/
+ ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app/Contents/Eclipse/open-source-licenses.txt
+ ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/linux/gtk/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/plugins/
+ ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/linux/gtk/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/open-source-licenses.txt
+ ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/plugins/
+ ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/open-source-licenses.txt
+
+
+
+
+
+ generate-self-extracting-jar
+ verify
+
+ exec
+
+
+ java
+
+ -jar
+ ${project.build.directory}/../../common/self-extracting-jar-creator.jar
+ ${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-win32.win32.x86_64.zip
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.7
+
+
+
+
+ win-exe-signing
+ package
+
+ ${skip.win.signing}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+ osx-app-signing
+ package
+
+ ${skip.osx.signing}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+ osx-dmg-creation
+ verify
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+ osx-dmg-signing
+ verify
+
+ ${skip.osx.signing}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+ osx-dmg-notarizing
+ verify
+
+ ${skip.osx.notarizing}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+ upload-product-bundles
+ deploy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+ update-nightly-downloads
+ deploy
+
+ ${skip.update-nightly-download-page}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+ zip-sts-repository
+ install
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+ upload-sts-repository
+ deploy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+
+ org.springframework.build
+ org.springframework.build.aws.ant
+ 3.1.0.RELEASE
+
+
+ net.java.dev.jets3t
+ jets3t
+ 0.8.1
+
+
+ ant-contrib
+ ant-contrib
+ 20020829
+
+
+
+
+
+
+
+
diff --git a/eclipse-distribution/org.springframework.boot.ide.product.e417/spring-tool-suite-4-dmg-config-e4.17.json b/eclipse-distribution/org.springframework.boot.ide.product.e417/spring-tool-suite-4-dmg-config-e4.17.json
new file mode 100644
index 000000000..c86b0023f
--- /dev/null
+++ b/eclipse-distribution/org.springframework.boot.ide.product.e417/spring-tool-suite-4-dmg-config-e4.17.json
@@ -0,0 +1,10 @@
+{
+ "title": "Spring Tool Suite 4",
+ "icon": "../org.springframework.boot.ide.branding/sts4.icns",
+ "contents": [
+ { "x": 192, "y": 100, "type": "file", "path": "target/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app" },
+ { "x": 448, "y": 100, "type": "link", "path": "/Applications" },
+ { "x": 1000, "y": 2000, "type": "file", "path": "../org.springframework.boot.ide.branding/sts4.icns", "name": ".VolumeIcon.icns" }
+ ],
+ "format": "UDZO"
+}