Hello community,

here is the log from the commit of package gradle for openSUSE:Factory checked 
in at 2019-11-19 13:44:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gradle (Old)
 and      /work/SRC/openSUSE:Factory/.gradle.new.26869 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gradle"

Tue Nov 19 13:44:54 2019 rev:8 rq:749228 version:4.4.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/gradle/gradle.changes    2019-09-18 
13:14:56.496645702 +0200
+++ /work/SRC/openSUSE:Factory/.gradle.new.26869/gradle.changes 2019-11-19 
13:45:02.084394882 +0100
@@ -1,0 +2,42 @@
+Sun Nov 17 20:04:50 UTC 2019 - Fridrich Strba <fst...@suse.com>
+
+- Package a full gradle instead of the open apis only
+- Upgrade to version 4.4.1
+- Added patches:
+  * 0001-Gradle-local-mode.patch
+    + Use gradle local mode by default
+  * 0002-Remove-Class-Path-from-manifest.patch
+    + Remove classpath from manifest
+  * 0003-Implement-XMvn-repository-factory-method.patch
+    + Implement factory methods for xmvn repository
+  * 0004-Use-unversioned-dependency-JAR-names.patch
+    + Use unversioned jar files for dependencies
+  * 0005-Port-to-Maven-3.3.9-and-Eclipse-Aether.patch
+    + Port to maven 3.3.9 and maven-resolver
+  * 0006-Disable-code-quality-checks.patch
+    + Disable code quality checks useless for rpm build
+  * 0007-Port-to-Kryo-3.0.patch
+    + Fix build with kryo 3.0
+  * 0008-Port-to-Ivy-2.4.0.patch
+    + Fix build with apache-ivy 2.4.0
+  * 0009-Port-to-Polyglot-0.1.8.patch
+    + Allow building with tesla-polyglot >= 0.1.8
+  * 0010-Port-from-Simple-4-to-Jetty-9.patch
+    + build using org.eclipse.jetty:jetty-server instead of
+      org.simpleframework:simple
+  * 0011-Disable-benchmarks.patch
+    + Do not run benchmarks useless during rpm build
+  * 0012-Disable-patching-of-external-modules.patch
+    + Disable patching of external modules during the build
+  * 0013-Add-missing-transitive-dependencies.patch
+    + Add transitive dependencies for aqute-bndlib, jansi and zinc
+  * 0014-Disable-ideNative-module.patch
+    + Do not build ideNative module
+  * 0015-Disable-docs-build.patch
+    + Do not build docs needing asciidoctorj that we don't have
+  * 0016-Port-to-guava-20.0.patch
+    + Fix build with guava 20.0
+  * 0017-Set-core-api-source-level-to-8.patch
+    + Build core-api submodule with source/target 8
+
+-------------------------------------------------------------------

Old:
----
  v3.2.1.zip

New:
----
  0001-Gradle-local-mode.patch
  0002-Remove-Class-Path-from-manifest.patch
  0003-Implement-XMvn-repository-factory-method.patch
  0004-Use-unversioned-dependency-JAR-names.patch
  0005-Port-to-Maven-3.3.9-and-Eclipse-Aether.patch
  0006-Disable-code-quality-checks.patch
  0007-Port-to-Kryo-3.0.patch
  0008-Port-to-Ivy-2.4.0.patch
  0009-Port-to-Polyglot-0.1.8.patch
  0010-Port-from-Simple-4-to-Jetty-9.patch
  0011-Disable-benchmarks.patch
  0012-Disable-patching-of-external-modules.patch
  0013-Add-missing-transitive-dependencies.patch
  0014-Disable-ideNative-module.patch
  0015-Disable-docs-build.patch
  0016-Port-to-guava-20.0.patch
  0017-Set-core-api-source-level-to-8.patch
  _constraints
  all-released-versions.json
  gradle-4.4.1-src.zip
  gradle-font-metadata.xml
  gradle-jquery-metadata.xml
  gradle-launcher.sh.in
  gradle-man.txt
  gradle.desktop

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gradle.spec ++++++
--- /var/tmp/diff_new_pack.AOKfII/_old  2019-11-19 13:45:03.968393952 +0100
+++ /var/tmp/diff_new_pack.AOKfII/_new  2019-11-19 13:45:03.972393950 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gradle
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,63 +17,393 @@
 
 
 Name:           gradle
-Version:        3.2.1
+Version:        4.4.1
 Release:        0
-Summary:        Groovy-based build system
+Summary:        Build automation tool
+# Some examples and integration tests are under GNU LGPL and Boost
+# Software License, but are not used to create binary package.
 License:        Apache-2.0
-Group:          Development/Tools
-Url:            https://www.gradle.org/
-Source0:        https://github.com/gradle/gradle/archive/v%{version}.zip
-Patch0:         gradle-CVE-2019-16370.patch
-BuildRequires:  java-devel
-BuildRequires:  javapackages-tools
+URL:            http://www.gradle.org/
+
+Source0:        
http://services.gradle.org/distributions/gradle-%{version}-src.zip
+Source1:        
http://services.gradle.org/versions/all#/all-released-versions.json
+Source2:        gradle-font-metadata.xml
+Source3:        gradle-jquery-metadata.xml
+Source4:        gradle-launcher.sh.in
+Source5:        gradle.desktop
+Source6:        gradle-man.txt
+
+Patch0001:      0001-Gradle-local-mode.patch
+Patch0002:      0002-Remove-Class-Path-from-manifest.patch
+Patch0003:      0003-Implement-XMvn-repository-factory-method.patch
+Patch0004:      0004-Use-unversioned-dependency-JAR-names.patch
+Patch0005:      0005-Port-to-Maven-3.3.9-and-Eclipse-Aether.patch
+Patch0006:      0006-Disable-code-quality-checks.patch
+Patch0007:      0007-Port-to-Kryo-3.0.patch
+Patch0008:      0008-Port-to-Ivy-2.4.0.patch
+Patch0009:      0009-Port-to-Polyglot-0.1.8.patch
+Patch0010:      0010-Port-from-Simple-4-to-Jetty-9.patch
+Patch0011:      0011-Disable-benchmarks.patch
+Patch0012:      0012-Disable-patching-of-external-modules.patch
+Patch0013:      0013-Add-missing-transitive-dependencies.patch
+Patch0014:      0014-Disable-ideNative-module.patch
+Patch0015:      0015-Disable-docs-build.patch
+Patch0016:      0016-Port-to-guava-20.0.patch
+# it depends on ant which is Java 8+
+Patch0017:      0017-Set-core-api-source-level-to-8.patch
+
+Patch100:       gradle-CVE-2019-16370.patch
+
+BuildRequires:  gradle-local
+BuildRequires:  xmvn-subst
+
+# Generic build dependencies
+BuildRequires:  desktop-file-utils
+BuildRequires:  glibc-locale-base
+BuildRequires:  hostname
+BuildRequires:  procps
 BuildRequires:  unzip
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildArch:      noarch
 
-%description
-A flexible groovy-based build tool.
+# Not to have to own the directories
+BuildRequires:  hicolor-icon-theme
 
-%package open-api
-Summary:        Open API definition for %{name}
-Group:          Development/Tools
-Requires:       jpackage-utils
-
-%description open-api
-Open API definition for gradle. It provides a simple versioned way to
-interact with gradle. The open API jar is all that is needed to
-develop/distribute a plugin. It provides some static functions that
-dynamically load gradle from a directory you specify to do things like
-create the UI or execute gradle commands directly (and I think some gradle
-debugger information may soon be accessible there). All you need is the
-gradle home directory and the open API jar.
+# manpage build dependencies
+BuildRequires:  asciidoc
+BuildRequires:  xmlto
+
+# Artifacts required for Gradle build
+BuildRequires:  mvn(antlr:antlr)
+BuildRequires:  mvn(biz.aQute.bnd:bndlib)
+BuildRequires:  mvn(bsh:bsh)
+BuildRequires:  mvn(ch.qos.logback:logback-classic)
+BuildRequires:  mvn(ch.qos.logback:logback-core)
+BuildRequires:  mvn(com.amazonaws:aws-java-sdk-core)
+BuildRequires:  mvn(com.amazonaws:aws-java-sdk-kms)
+BuildRequires:  mvn(com.amazonaws:aws-java-sdk-s3)
+BuildRequires:  mvn(com.beust:jcommander)
+BuildRequires:  mvn(com.esotericsoftware.kryo:kryo)
+BuildRequires:  mvn(com.esotericsoftware:minlog)
+BuildRequires:  mvn(com.esotericsoftware:reflectasm)
+BuildRequires:  mvn(com.fasterxml.jackson.core:jackson-annotations)
+BuildRequires:  mvn(com.fasterxml.jackson.core:jackson-core)
+BuildRequires:  mvn(com.fasterxml.jackson.core:jackson-databind)
+BuildRequires:  mvn(com.google.code.findbugs:findbugs)
+BuildRequires:  mvn(com.google.code.findbugs:jsr305)
+BuildRequires:  mvn(com.google.code.gson:gson)
+BuildRequires:  mvn(com.google.guava:guava-jdk5:20.0)
+BuildRequires:  mvn(com.google.guava:guava:20.0)
+BuildRequires:  mvn(com.google.http-client:google-http-client)
+BuildRequires:  mvn(com.google.oauth-client:google-oauth-client)
+BuildRequires:  mvn(com.googlecode.jarjar:jarjar)
+BuildRequires:  mvn(com.googlecode.jatl:jatl)
+BuildRequires:  mvn(com.jcraft:jsch)
+BuildRequires:  mvn(com.sun:tools)
+BuildRequires:  mvn(com.typesafe.zinc:zinc)
+BuildRequires:  mvn(com.uwyn:jhighlight)
+BuildRequires:  mvn(commons-beanutils:commons-beanutils)
+BuildRequires:  mvn(commons-cli:commons-cli)
+BuildRequires:  mvn(commons-codec:commons-codec)
+BuildRequires:  mvn(commons-collections:commons-collections)
+BuildRequires:  mvn(commons-configuration:commons-configuration)
+BuildRequires:  mvn(commons-io:commons-io)
+BuildRequires:  mvn(commons-lang:commons-lang)
+BuildRequires:  mvn(dom4j:dom4j)
+BuildRequires:  mvn(javax.inject:javax.inject)
+BuildRequires:  mvn(javax.servlet:javax.servlet-api)
+BuildRequires:  mvn(jaxen:jaxen)
+BuildRequires:  mvn(jline:jline)
+BuildRequires:  mvn(joda-time:joda-time)
+BuildRequires:  mvn(junit:junit)
+BuildRequires:  mvn(net.java.dev.jna:jna)
+BuildRequires:  mvn(net.jcip:jcip-annotations)
+BuildRequires:  mvn(net.rubygrapefruit:native-platform)
+BuildRequires:  mvn(net.sourceforge.nekohtml:nekohtml)
+BuildRequires:  mvn(org.antlr:antlr4-runtime)
+BuildRequires:  mvn(org.apache.ant:ant)
+BuildRequires:  mvn(org.apache.ant:ant-launcher)
+BuildRequires:  mvn(org.apache.commons:commons-compress)
+BuildRequires:  mvn(org.apache.commons:commons-lang3)
+BuildRequires:  mvn(org.apache.geronimo.specs:geronimo-annotation_1.0_spec)
+BuildRequires:  mvn(org.apache.httpcomponents:httpclient)
+BuildRequires:  mvn(org.apache.httpcomponents:httpcore)
+BuildRequires:  mvn(org.apache.ivy:ivy)
+BuildRequires:  mvn(org.apache.maven.wagon:wagon-file)
+BuildRequires:  mvn(org.apache.maven.wagon:wagon-http)
+BuildRequires:  mvn(org.apache.maven.wagon:wagon-http-shared)
+BuildRequires:  mvn(org.apache.maven.wagon:wagon-provider-api)
+BuildRequires:  mvn(org.apache.maven:maven-aether-provider)
+BuildRequires:  mvn(org.apache.maven:maven-artifact)
+BuildRequires:  mvn(org.apache.maven:maven-builder-support)
+BuildRequires:  mvn(org.apache.maven:maven-compat)
+BuildRequires:  mvn(org.apache.maven:maven-core)
+BuildRequires:  mvn(org.apache.maven:maven-model)
+BuildRequires:  mvn(org.apache.maven:maven-model-builder)
+BuildRequires:  mvn(org.apache.maven:maven-plugin-api)
+BuildRequires:  mvn(org.apache.maven:maven-repository-metadata)
+BuildRequires:  mvn(org.apache.maven:maven-settings)
+BuildRequires:  mvn(org.apache.maven:maven-settings-builder)
+BuildRequires:  mvn(org.apache.xbean:xbean-reflect)
+BuildRequires:  mvn(org.apache:apache:pom:)
+BuildRequires:  mvn(org.bouncycastle:bcpg-jdk15on)
+BuildRequires:  mvn(org.bouncycastle:bcprov-jdk15on)
+BuildRequires:  mvn(org.codehaus.groovy.modules.http-builder:http-builder)
+BuildRequires:  mvn(org.codehaus.groovy:groovy-all)
+BuildRequires:  mvn(org.codehaus.plexus:plexus-classworlds)
+BuildRequires:  mvn(org.codehaus.plexus:plexus-component-annotations)
+BuildRequires:  mvn(org.codehaus.plexus:plexus-interpolation)
+BuildRequires:  mvn(org.codehaus.plexus:plexus-utils)
+BuildRequires:  mvn(org.codenarc:CodeNarc)
+BuildRequires:  mvn(org.eclipse.aether:aether-api)
+BuildRequires:  mvn(org.eclipse.aether:aether-connector-basic)
+BuildRequires:  mvn(org.eclipse.aether:aether-impl)
+BuildRequires:  mvn(org.eclipse.aether:aether-spi)
+BuildRequires:  mvn(org.eclipse.aether:aether-transport-wagon)
+BuildRequires:  mvn(org.eclipse.aether:aether-util)
+BuildRequires:  mvn(org.eclipse.jdt:core)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-annotations)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-jsp)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-plus)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-security)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-server)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-servlet)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-util)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-webapp)
+BuildRequires:  mvn(org.eclipse.jetty:jetty-xml)
+BuildRequires:  mvn(org.eclipse.jgit:org.eclipse.jgit)
+BuildRequires:  mvn(org.eclipse.sisu:org.eclipse.sisu.inject)
+BuildRequires:  mvn(org.eclipse.sisu:org.eclipse.sisu.plexus)
+BuildRequires:  mvn(org.fusesource.hawtjni:hawtjni-runtime)
+BuildRequires:  mvn(org.fusesource.jansi:jansi)
+BuildRequires:  mvn(org.fusesource.jansi:jansi-native)
+BuildRequires:  mvn(org.gmetrics:GMetrics)
+BuildRequires:  mvn(org.jsoup:jsoup)
+BuildRequires:  mvn(org.mozilla:rhino)
+BuildRequires:  mvn(org.objenesis:objenesis)
+BuildRequires:  mvn(org.ow2.asm:asm-all)
+BuildRequires:  mvn(org.parboiled:parboiled-core)
+BuildRequires:  mvn(org.parboiled:parboiled-java)
+BuildRequires:  mvn(org.pegdown:pegdown)
+BuildRequires:  mvn(org.samba.jcifs:jcifs)
+BuildRequires:  mvn(org.slf4j:jcl-over-slf4j)
+BuildRequires:  mvn(org.slf4j:jul-to-slf4j)
+BuildRequires:  mvn(org.slf4j:log4j-over-slf4j)
+BuildRequires:  mvn(org.slf4j:slf4j-api)
+BuildRequires:  mvn(org.sonatype.oss:oss-parent:pom:)
+BuildRequires:  mvn(org.sonatype.plexus:plexus-cipher)
+BuildRequires:  mvn(org.sonatype.plexus:plexus-sec-dispatcher)
+BuildRequires:  mvn(org.sonatype.pmaven:pmaven-common)
+BuildRequires:  mvn(org.sonatype.pmaven:pmaven-groovy)
+BuildRequires:  mvn(org.testng:testng)
+BuildRequires:  mvn(xerces:xercesImpl) 
mvn(org.apache.httpcomponents:httpclient)
+BuildRequires:  mvn(xml-apis:xml-apis)
+# Avoid building with bootstrap versions of those
+#!BuildRequires: groovy-lib sbt gpars
+# But we want to avoid cycle with oneself
+#!BuildRequires: gradle-bootstrap
+BuildConflicts: java-devel >= 9
+
+Obsoletes:      %{name}-bootstrap
+
+# Artifacts required for Gradle build which don't have Maven metadata
+# and thus no mvn provides.
+BuildRequires:  lato-fonts
+BuildRequires:  liberation-fonts
+
+# Generic runtime dependencies.
+Requires:       bash
+Requires:       hicolor-icon-theme
+Requires:       javapackages-tools
+
+# Theoretically Gradle might be usable with just JRE, but typical Gradle
+# workflow requires full JDK, so we recommend it here.
+Recommends:     java-devel
+
+# Providers of symlinks in Gradle lib/ directory. Generated with:
+# for l in $(find /usr/share/gradle -type l); do rpm -qf --qf 'Requires:       
%{name}\n' $(readlink -e $l); done | sort -u | grep -v gradle
+Requires:       ant
+Requires:       apache-commons-cli
+Requires:       apache-commons-codec
+Requires:       apache-commons-collections
+Requires:       apache-commons-compress
+Requires:       apache-commons-io
+Requires:       apache-commons-lang
+Requires:       apache-commons-lang3
+Requires:       apache-ivy
+Requires:       aqute-bndlib
+Requires:       atinject
+Requires:       aws-sdk-java-core
+Requires:       aws-sdk-java-kms
+Requires:       aws-sdk-java-s3
+Requires:       base64coder
+Requires:       beust-jcommander
+Requires:       bouncycastle
+Requires:       bouncycastle-pg
+Requires:       bsh2
+Requires:       ecj
+Requires:       glassfish-servlet-api
+Requires:       google-gson
+Requires:       google-guice
+Requires:       groovy-lib
+Requires:       guava20
+Requires:       hawtjni-runtime
+Requires:       httpcomponents-client
+Requires:       httpcomponents-core
+Requires:       jackson-annotations
+Requires:       jackson-core
+Requires:       jackson-databind
+Requires:       jansi
+Requires:       jansi-native
+Requires:       jatl
+Requires:       jcifs
+Requires:       jcip-annotations
+Requires:       jcl-over-slf4j
+Requires:       jetty-server
+Requires:       jetty-util
+Requires:       jgit
+Requires:       joda-time
+Requires:       jsch
+Requires:       jsr-305
+Requires:       jul-to-slf4j
+Requires:       junit
+Requires:       kryo
+Requires:       log4j-over-slf4j
+Requires:       maven-lib
+Requires:       maven-resolver-api
+Requires:       maven-resolver-connector-basic
+Requires:       maven-resolver-impl
+Requires:       maven-resolver-spi
+Requires:       maven-resolver-transport-wagon
+Requires:       maven-resolver-util
+Requires:       maven-wagon-file
+Requires:       maven-wagon-http
+Requires:       maven-wagon-http-shared
+Requires:       maven-wagon-provider-api
+Requires:       minlog
+Requires:       native-platform
+Requires:       nekohtml
+Requires:       objectweb-asm
+Requires:       objenesis
+Requires:       plexus-cipher
+Requires:       plexus-classworlds
+Requires:       plexus-containers-component-annotations
+Requires:       plexus-interpolation
+Requires:       plexus-sec-dispatcher
+Requires:       plexus-utils
+Requires:       reflectasm
+Requires:       rhino
+Requires:       sisu-inject
+Requires:       sisu-plexus
+Requires:       slf4j
+Requires:       snakeyaml
+Requires:       tesla-polyglot-common
+Requires:       tesla-polyglot-groovy
+Requires:       testng
+Requires:       xbean
+Requires:       xerces-j2
+Requires:       xml-commons-apis
+
+%description
+Gradle is build automation evolved. Gradle can automate the building,
+testing, publishing, deployment and more of software packages or other
+types of projects such as generated static websites, generated
+documentation or indeed anything else.
+
+Gradle combines the power and flexibility of Ant with the dependency
+management and conventions of Maven into a more effective way to
+build. Powered by a Groovy DSL and packed with innovation, Gradle
+provides a declarative way to describe all kinds of builds through
+sensible defaults. Gradle is quickly becoming the build system of
+choice for many open source projects, leading edge enterprises and
+legacy automation challenges.
 
 %prep
-%setup -q
-%patch0 -p1
+%autosetup -p1
+
+# Remove bundled wrapper JAR
+rm -rf gradle/wrapper/
+# Remove bundled JavaScript
+>subprojects/diagnostics/src/main/resources/org/gradle/api/tasks/diagnostics/htmldependencyreport/jquery.jstree.js
+
+# This file is normally downloaded from Internet during package build
+mkdir -p build
+cp %{SOURCE1} build/all-released-versions.json
+
+# quality checks for which we don't have deps
+rm -r buildSrc/src/main/groovy/org/gradle/binarycompatibility
+rm 
buildSrc/src/main/groovy/org/gradle/build/docs/CacheableAsciidoctorTask.groovy
+
+# jquery and fonts don't have Maven metadata
+%mvn_config resolverSettings/metadataRepositories/repository %{SOURCE2}
+%mvn_config resolverSettings/metadataRepositories/repository %{SOURCE3}
+
+# Tests for build script currently fail, but the build works.
+# TODO: enble tests
+rm -rf buildSrc/src/test
+
+# Compilation with Fedora versions of some libraries produces
+# warnings. Lets not treat them as errors to make the build work.
+sed -i 's/"-Werror" <<//' gradle/strictCompile.gradle
+
+removeProject() {
+sed -i "/'$1'/d" settings.gradle
+sed -i "s/'$1',\?//" build.gradle
+}
+removeProject resourcesGcs
+rm -r subprojects/resources-gcs
+rm -r subprojects/ide-native
 
 %build
-# Build Open API subpackage
-pushd subprojects/open-api/src/main/java
-find -name '*.java' |xargs javac -source 1.6 -target 1.6
-find -name '*.class' |xargs jar cf gradle-open-api.jar
-popd
+export LANG=en_US.UTF8
+# Disables parallel build and daemon mode
+rm gradle.properties
+gradle-local --offline --no-daemon install xmvnInstall \
+    -Pgradle_installPath=$PWD/inst \
+    -PfinalRelease -Dbuild.number="%{?fedora:Fedora }%{?rhel:Red Hat 
}%{version}-%{release}"
+
+# manpage build
+mkdir man
+asciidoc -b docbook -d manpage -o man/gradle.xml %{SOURCE6}
+xmlto man man/gradle.xml -o man
 
 %install
-install -d %{buildroot}%{_javadir}
-# Open API
-pushd subprojects/open-api/src/main/java
-install -p -m644 gradle-open-api.jar \
-        %{buildroot}%{_javadir}/gradle-open-api-%{version}.jar
-ln -s gradle-open-api-%{version}.jar \
-        %{buildroot}%{_javadir}/gradle-open-api.jar
-popd
-
-%files open-api
-%defattr(-,root,root,-)
-%{_javadir}/gradle-open-api-%{version}.jar
-%{_javadir}/gradle-open-api.jar
-%license LICENSE
-%doc subprojects/distributions/src/toplevel/NOTICE
+cp subprojects/distributions/src/toplevel/NOTICE .
+cp subprojects/docs/src/samples/application/src/dist/LICENSE .
+
+install -d -m 755 %{buildroot}%{_javadir}/%{name}/
+
+rm -rf inst/bin/gradle.bat inst/media
+ln -sf %{_bindir}/%{name} inst/bin/gradle
+find inst/lib -type f -name 'gradle*' | sed 
's:.*/\(gradle-.*\)-%{version}.*:ln -sf %{_javadir}/%{name}/\1.jar &:' | bash -x
+ln -sf $(find-jar ecj/ecj) inst/lib/plugins/ecj.jar
+xmvn-subst -s $(find inst/lib -type f)
+# TODO figure out why this one is missing
+ln -s $(find-jar commons-lang) inst/lib/
+cp -a inst %{buildroot}%{_datadir}/%{name}
+
+%mvn_install
+
+install -d -m 755 %{buildroot}%{_bindir}/
+cat %{SOURCE4} | sed "s#@BASH@#$(which bash)#g" >gradle.sh
+chmod +x %{name}.sh
+install -p -m 755 %{name}.sh %{buildroot}%{_bindir}/%{name}
+
+desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE5}
+
+for r in 16 24 32 48 64 128 256; do
+    install -d -m 755 %{buildroot}%{_datadir}/icons/hicolor/${r}x${r}/apps/
+    install -p -m 644 
subprojects/distributions/src/toplevel/media/gradle-icon-${r}x${r}.png \
+        %{buildroot}%{_datadir}/icons/hicolor/${r}x${r}/apps/%{name}.png
+done
+
+install -d -m 755 %{buildroot}%{_mandir}/man1/
+install -p -m 644 man/gradle.1 %{buildroot}%{_mandir}/man1/gradle.1
+
+%files -f .mfiles
+%{_bindir}/%{name}
+%{_datadir}/%{name}
+%{_datadir}/applications/%{name}.desktop
+%{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_mandir}/man1/gradle.1*
+%license LICENSE NOTICE
 
 %changelog

++++++ 0001-Gradle-local-mode.patch ++++++
>From a20dbae1bff7997e720b767ce7c6c0aca51b3574 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Wed, 15 Oct 2014 14:23:30 +0200
Subject: [PATCH 01/17] Gradle local mode

---
 build.gradle                                         | 1 +
 buildSrc/build.gradle                                | 3 +++
 subprojects/docs/docs.gradle                         | 1 +
 subprojects/docs/src/transforms/release-notes.gradle | 1 +
 subprojects/reporting/reporting.gradle               | 1 +
 5 files changed, 7 insertions(+)

diff --git a/build.gradle b/build.gradle
index aea7a65c3b3..7d8ac910b04 100644
--- a/build.gradle
+++ b/build.gradle
@@ -197,6 +197,7 @@ allprojects {
         maven { url 'https://repo.gradle.org/gradle/libs-releases' }
         maven { url 'https://repo.gradle.org/gradle/libs-milestones' }
         maven { url "https://repo.gradle.org/gradle/libs-snapshots"; }
+        xmvn()
     }
 
     // patchExternalModules lives in the root project - we need to activate 
normalization there, too.
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index bdf01f600dc..196acdb4b73 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -29,6 +29,9 @@ repositories {
     maven { url 'https://repo.gradle.org/gradle/libs-releases' }
     maven { url "https://repo.gradle.org/gradle/libs-snapshots"; }
     maven { url "https://plugins.gradle.org/m2/"; }
+    xmvn()
+    maven { url 'https://repo.gradle.org/gradle/libs' }
+    mavenCentral()
 }
 
 dependencies {
diff --git a/subprojects/docs/docs.gradle b/subprojects/docs/docs.gradle
index 9704e5214bd..e960da3eb1a 100755
--- a/subprojects/docs/docs.gradle
+++ b/subprojects/docs/docs.gradle
@@ -41,6 +41,7 @@ apply plugin: 'javascript-base'
 apply plugin: 'org.asciidoctor.convert'
 
 repositories {
+    xmvn()
     javaScript.googleApis()
 
     ivy {
diff --git a/subprojects/docs/src/transforms/release-notes.gradle 
b/subprojects/docs/src/transforms/release-notes.gradle
index a4410e35049..8bfe924c972 100644
--- a/subprojects/docs/src/transforms/release-notes.gradle
+++ b/subprojects/docs/src/transforms/release-notes.gradle
@@ -1,5 +1,6 @@
 buildscript {
     repositories {
+        xmvn()
         mavenCentral()
     }
     dependencies {
diff --git a/subprojects/reporting/reporting.gradle 
b/subprojects/reporting/reporting.gradle
index a467c71be4d..92981631cb8 100644
--- a/subprojects/reporting/reporting.gradle
+++ b/subprojects/reporting/reporting.gradle
@@ -7,6 +7,7 @@ configurations {
 }
 
 repositories {
+    xmvn()
     javaScript.googleApis()
 }
 
-- 
2.17.2

++++++ 0002-Remove-Class-Path-from-manifest.patch ++++++
>From b2a5d7f3bd79639fbd391f3b2ce74a6f1e6023de Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Sun, 9 Nov 2014 17:52:30 +0100
Subject: [PATCH 02/17] Remove Class-Path from manifest

---
 .../installation/CurrentGradleInstallationLocator.java    | 8 +-------
 .../org/gradle/api/internal/classpath/ManifestUtil.java   | 3 +++
 subprojects/launcher/launcher.gradle                      | 3 +++
 .../launcher/daemon/client/DefaultDaemonStarter.java      | 6 +-----
 4 files changed, 8 insertions(+), 12 deletions(-)

diff --git 
a/subprojects/core-api/src/main/java/org/gradle/internal/installation/CurrentGradleInstallationLocator.java
 
b/subprojects/core-api/src/main/java/org/gradle/internal/installation/CurrentGradleInstallationLocator.java
index 88d6b0be44d..fe9086c5c29 100644
--- 
a/subprojects/core-api/src/main/java/org/gradle/internal/installation/CurrentGradleInstallationLocator.java
+++ 
b/subprojects/core-api/src/main/java/org/gradle/internal/installation/CurrentGradleInstallationLocator.java
@@ -51,13 +51,7 @@ abstract class CurrentGradleInstallationLocator {
     }
 
     private static File findDistDir(Class<?> clazz) {
-        File codeSource = ClasspathUtil.getClasspathForClass(clazz);
-        if (codeSource.isFile()) {
-            return determineDistRootDir(codeSource);
-        } else {
-            // Loaded from a classes dir - assume we're running from the ide 
or tests
-            return null;
-        }
+        return new File("/usr/share/gradle");
     }
 
     /**
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/classpath/ManifestUtil.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/classpath/ManifestUtil.java
index 193f91079a4..2f8bc364401 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/classpath/ManifestUtil.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/classpath/ManifestUtil.java
@@ -71,6 +71,9 @@ public class ManifestUtil {
                 return EMPTY;
             }
             String classpathEntry = 
manifest.getMainAttributes().getValue("Class-Path");
+            if (classpathEntry == null) {
+                classpathEntry = 
manifest.getMainAttributes().getValue("X-Gradle-Class-Path");
+            }
             if (classpathEntry == null || classpathEntry.trim().length() == 0) 
{
                 return EMPTY;
             }
diff --git a/subprojects/launcher/launcher.gradle 
b/subprojects/launcher/launcher.gradle
index 23f161cfcee..db50238a34a 100644
--- a/subprojects/launcher/launcher.gradle
+++ b/subprojects/launcher/launcher.gradle
@@ -49,6 +49,9 @@ task configureJar {
 jar {
     dependsOn configureJar
     manifest.mainAttributes('Main-Class': "org.gradle.launcher.GradleMain")
+    doFirst {
+        jar.manifest.mainAttributes('X-Gradle-Class-Path': 
"${project(':core').jar.archivePath.name} 
${project(':baseServices').jar.archivePath.name}")
+    }
 }
 
 task startScripts(type: GradleStartScriptGenerator) {
diff --git 
a/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/client/DefaultDaemonStarter.java
 
b/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/client/DefaultDaemonStarter.java
index 830aaf34cfe..2c57544bb51 100755
--- 
a/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/client/DefaultDaemonStarter.java
+++ 
b/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/client/DefaultDaemonStarter.java
@@ -73,17 +73,13 @@ public class DefaultDaemonStarter implements DaemonStarter {
         ModuleRegistry registry = new 
DefaultModuleRegistry(gradleInstallation);
         ClassPath classpath;
         List<File> searchClassPath;
-        if (gradleInstallation == null) {
+        {
             // When not running from a Gradle distro, need runtime impl for 
launcher plus the search path to look for other modules
             classpath = ClassPath.EMPTY;
             for (Module module : 
registry.getModule("gradle-launcher").getAllRequiredModules()) {
                 classpath = classpath.plus(module.getClasspath());
             }
             searchClassPath = registry.getAdditionalClassPath().getAsFiles();
-        } else {
-            // When running from a Gradle distro, only need launcher jar. The 
daemon can find everything from there.
-            classpath = 
registry.getModule("gradle-launcher").getImplementationClasspath();
-            searchClassPath = Collections.emptyList();
         }
         if (classpath.isEmpty()) {
             throw new IllegalStateException("Unable to construct a bootstrap 
classpath when starting the daemon");
-- 
2.17.2

++++++ 0003-Implement-XMvn-repository-factory-method.patch ++++++
>From 46e4a62a1e5e78b46a76a6d6669356de8dd51e06 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Sun, 9 Nov 2014 21:37:37 +0100
Subject: [PATCH 03/17] Implement XMvn repository factory method

---
 .../artifacts/BaseRepositoryFactory.java      |  2 +
 .../dsl/DefaultRepositoryHandler.java         |  5 ++
 .../DefaultBaseRepositoryFactory.java         | 62 +++++++++++++++++++
 3 files changed, 69 insertions(+)

diff --git 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/BaseRepositoryFactory.java
 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/BaseRepositoryFactory.java
index bfcbf4f618b..760782370e5 100644
--- 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/BaseRepositoryFactory.java
+++ 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/BaseRepositoryFactory.java
@@ -43,4 +43,6 @@ public interface BaseRepositoryFactory {
     IvyArtifactRepository createIvyRepository();
 
     MavenArtifactRepository createMavenRepository();
+
+    ArtifactRepository createXMvnResolver();
 }
diff --git 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/DefaultRepositoryHandler.java
 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/DefaultRepositoryHandler.java
index 1640b68a114..d1770e97352 100644
--- 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/DefaultRepositoryHandler.java
+++ 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/DefaultRepositoryHandler.java
@@ -43,6 +43,7 @@ public class DefaultRepositoryHandler extends 
DefaultArtifactRepositoryContainer
     public static final String FLAT_DIR_DEFAULT_NAME = "flatDir";
     private static final String MAVEN_REPO_DEFAULT_NAME = "maven";
     private static final String IVY_REPO_DEFAULT_NAME = "ivy";
+    private static final String XMVN_REPO_DEFAULT_NAME = "xmvn";
 
     private final BaseRepositoryFactory repositoryFactory;
 
@@ -112,4 +113,8 @@ public class DefaultRepositoryHandler extends 
DefaultArtifactRepositoryContainer
     public IvyArtifactRepository ivy(Closure closure) {
         return ivy(ConfigureUtil.configureUsing(closure));
     }
+
+    public ArtifactRepository xmvn() {
+        return addRepository(repositoryFactory.createXMvnResolver(), 
XMVN_REPO_DEFAULT_NAME);
+    }
 }
diff --git 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultBaseRepositoryFactory.java
 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultBaseRepositoryFactory.java
index 0110370ff22..58c98f4e923 100644
--- 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultBaseRepositoryFactory.java
+++ 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultBaseRepositoryFactory.java
@@ -46,8 +46,15 @@ import org.gradle.internal.resource.local.FileStore;
 import org.gradle.internal.resource.local.LocallyAvailableResourceFinder;
 
 import java.io.File;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
 import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
 import java.util.Map;
+import java.util.Set;
 
 public class DefaultBaseRepositoryFactory implements BaseRepositoryFactory {
     private final LocalMavenRepositoryLocator localMavenRepositoryLocator;
@@ -171,4 +178,59 @@ public class DefaultBaseRepositoryFactory implements 
BaseRepositoryFactory {
             return repository.getName() + '(' + url + ')';
         }
     }
+
+    public ArtifactRepository createXMvnResolver() {
+        // Check if XMvn connector is available and inform user if it's not.
+        // This is more user-friendly as it prevents cryptic stack traces.
+        if (!new 
File("/usr/share/java/xmvn/xmvn-connector-gradle.jar").exists())
+            throw new RuntimeException("Local mode for Gradle is not available 
because XMvn Gradle connector is not installed. "
+                                       + "To use local mode you need to 
install gradle-local package.");
+
+        // XMvn connector for Gradle is an external library and it is not
+        // included in default Gradle classpath. Before it can be accessed
+        // we need to add its implementation JARs to current class loader.
+        /*
+        try {
+            ClassLoader classLoader = getClass().getClassLoader();
+            Set<URL> newUrls = new LinkedHashSet<URL>();
+            newUrls.add(new 
File("/usr/share/java/xmvn/xmvn-api.jar").toURI().toURL());
+            newUrls.add(new 
File("/usr/share/java/xmvn/xmvn-launcher.jar").toURI().toURL());
+            newUrls.add(new 
File("/usr/share/java/xmvn/xmvn-connector-gradle.jar").toURI().toURL());
+            Method getterMethod = classLoader.getClass().getMethod("getURLs");
+            Object[] currentUrls = (Object[]) getterMethod.invoke(classLoader);
+            newUrls.removeAll(Arrays.asList(currentUrls));
+            Method adderMethod = classLoader.getClass().getMethod("addURLs", 
Iterable.class);
+            adderMethod.invoke(classLoader, newUrls);
+        } catch (ReflectiveOperationException e) {
+            throw new RuntimeException("Unable to inject XMvn JARs to Gradle 
class loader", e);
+        } catch (MalformedURLException e) {
+            // Should not happen
+            throw new RuntimeException(e);
+        }
+        */
+        Class xmvnClass;
+
+        try {
+            URL[] newUrls = new URL[] {
+                new File("/usr/share/java/xmvn/xmvn-api.jar").toURI().toURL(),
+                new File("/usr/share/java/xmvn/xmvn-core.jar").toURI().toURL(),
+                new 
File("/usr/share/java/xmvn/xmvn-connector-gradle.jar").toURI().toURL()
+            };
+            ClassLoader classLoader = new URLClassLoader(newUrls, 
getClass().getClassLoader());
+            String xmvnConnectorRole = 
"org.fedoraproject.xmvn.connector.gradle.GradleResolver";
+            xmvnClass = classLoader.loadClass(xmvnConnectorRole);
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException("Unable to inject XMvn JARs to Gradle 
class loader", e);
+        } catch (MalformedURLException e) {
+            // Should not happen
+            throw new RuntimeException(e);
+        }
+
+        try {
+            return (ArtifactRepository) 
xmvnClass.getConstructor(MetaDataParser.class, 
ImmutableModuleIdentifierFactory.class, FileResourceRepository.class)
+                .newInstance(pomParser, moduleIdentifierFactory, 
fileResourceRepository);
+        } catch (ReflectiveOperationException e) {
+            throw new RuntimeException("Failed to inject XMvn resolver", e);
+        }
+    }
 }
-- 
2.17.2

++++++ 0004-Use-unversioned-dependency-JAR-names.patch ++++++
>From df35f5573411746ea2a3d01bfa3f2bcbb01648c3 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Sat, 7 Feb 2015 15:28:03 +0100
Subject: [PATCH 04/17] Use unversioned dependency JAR names

---
 .../gradle/api/internal/classpath/DefaultModuleRegistry.java    | 2 +-
 .../java/org/gradle/api/internal/plugins/GroovyJarFile.java     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/classpath/DefaultModuleRegistry.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/classpath/DefaultModuleRegistry.java
index bcd55e367d2..0ead27197d6 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/classpath/DefaultModuleRegistry.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/classpath/DefaultModuleRegistry.java
@@ -227,7 +227,7 @@ public class DefaultModuleRegistry implements 
ModuleRegistry {
     }
 
     private File findJar(String name) {
-        Pattern pattern = Pattern.compile(Pattern.quote(name) + 
"-\\d.+\\.jar");
+        Pattern pattern = Pattern.compile(Pattern.quote(name) + 
"(?:-\\d.+)?\\.jar");
         if (gradleInstallation != null) {
             for (File libDir : gradleInstallation.getLibDirs()) {
                 for (File file : libDir.listFiles()) {
diff --git 
a/subprojects/plugins/src/main/java/org/gradle/api/internal/plugins/GroovyJarFile.java
 
b/subprojects/plugins/src/main/java/org/gradle/api/internal/plugins/GroovyJarFile.java
index 5b7329999ae..c4c778e65a6 100644
--- 
a/subprojects/plugins/src/main/java/org/gradle/api/internal/plugins/GroovyJarFile.java
+++ 
b/subprojects/plugins/src/main/java/org/gradle/api/internal/plugins/GroovyJarFile.java
@@ -23,7 +23,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class GroovyJarFile {
-    private static final Pattern FILE_NAME_PATTERN = 
Pattern.compile("(groovy(?:-all)?)-(\\d.*?)(-indy)?.jar");
+    private static final Pattern FILE_NAME_PATTERN = 
Pattern.compile("(groovy(?:-all)?)(?:-(\\d.*?))?(-indy)?.jar");
 
     private final File file;
     private final Matcher matcher;
-- 
2.17.2

++++++ 0005-Port-to-Maven-3.3.9-and-Eclipse-Aether.patch ++++++
>From d5dc17df18ae38230761b9ce9efbfdd66217ec37 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Mon, 6 Jul 2015 09:57:22 +0200
Subject: [PATCH 05/17] Port to Maven 3.3.9 and Eclipse Aether

---
 gradle/dependencies.gradle                    | 23 ++++++---
 .../internal/maven/MavenProjectsCreator.java  |  7 +--
 .../action/AbstractMavenPublishAction.java    | 49 +++++++++----------
 .../action/LoggingMavenTransferListener.java  |  6 +--
 .../internal/action/MavenDeployAction.java    | 31 ++++++------
 .../internal/action/MavenInstallAction.java   | 10 ++--
 .../action/SnapshotVersionManager.java        | 16 +++---
 7 files changed, 76 insertions(+), 66 deletions(-)

diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index 73cf0b1ee08..54dc27d7fbe 100755
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -123,12 +123,18 @@ libraries.nekohtml = 
dependencies.module("net.sourceforge.nekohtml:nekohtml:1.9.
 libraries.maven3 = 
dependencies.module("org.apache.maven:maven-core:${versions.maven}") {
     dependency "org.apache.maven:maven-settings:${versions.maven}@jar"
     dependency "org.apache.maven:maven-settings-builder:${versions.maven}@jar"
+    dependency "org.apache.maven:maven-builder-support:${versions.maven}@jar"
+
+    //sisu:
+    dependency "org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.0@jar"
+    dependency "org.eclipse.sisu:org.eclipse.sisu.inject:0.3.0@jar"
+    dependency "org.sonatype.sisu:sisu-guice:3.2.5:no_aop@jar"
+    dependency "javax.inject:javax.inject:1@jar"
 
     //plexus:
     dependency "org.codehaus.plexus:plexus-utils:2.1@jar"
     dependency "org.codehaus.plexus:plexus-interpolation:1.14@jar"
     dependency "org.codehaus.plexus:plexus-component-annotations:1.5.5@jar"
-    dependency "org.codehaus.plexus:plexus-container-default:1.5.5@jar"
     dependency "org.codehaus.plexus:plexus-classworlds:2.4@jar"
 
     //sonatype plexus
@@ -150,14 +156,17 @@ libraries.maven3 = 
dependencies.module("org.apache.maven:maven-core:${versions.m
     dependency 'org.apache.maven.wagon:wagon-file:2.4@jar'
     dependency 'org.apache.maven.wagon:wagon-http:2.4@jar'
     dependency 'org.apache.maven.wagon:wagon-provider-api:2.4@jar'
-    dependency 'org.apache.maven.wagon:wagon-http-shared4:2.4@jar'
+    dependency 'org.apache.maven.wagon:wagon-http-shared:2.4@jar'
 
     //eather:
-    dependency "org.sonatype.aether:aether-api:1.13.1@jar"
-    dependency "org.sonatype.aether:aether-impl:1.13.1@jar"
-    dependency "org.sonatype.aether:aether-spi:1.13.1@jar"
-    dependency "org.sonatype.aether:aether-util:1.13.1@jar"
-    dependency 'org.sonatype.aether:aether-connector-wagon:1.13.1@jar'
+    dependency "org.eclipse.aether:aether-api:1.0.0.v20140518@jar"
+    dependency "org.eclipse.aether:aether-impl:1.0.0.v20140518@jar"
+    dependency "org.eclipse.aether:aether-spi:1.0.0.v20140518@jar"
+    dependency "org.eclipse.aether:aether-util:1.0.0.v20140518@jar"
+    dependency 'org.eclipse.aether:aether-connector-basic:1.0.0.v20140518@jar'
+    dependency 'org.eclipse.aether:aether-transport-wagon:1.0.0.v20140518@jar'
+
+    dependency 'org.apache.commons:commons-lang3:3.4@jar'
 }
 
 libraries.spock = [
diff --git 
a/subprojects/build-init/src/main/java/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
 
b/subprojects/build-init/src/main/java/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
index 7a858124b29..69a580405b4 100644
--- 
a/subprojects/build-init/src/main/java/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
+++ 
b/subprojects/build-init/src/main/java/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
@@ -25,12 +25,13 @@ import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.DefaultContainerConfiguration;
 import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.util.DefaultRepositorySystemSession;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
 import org.gradle.util.CollectionUtils;
 
 import java.io.File;
@@ -55,7 +56,7 @@ public class MavenProjectsCreator {
     private Set<MavenProject> createNow(Settings settings, File pomFile) 
throws PlexusContainerException, PlexusConfigurationException, 
ComponentLookupException, MavenExecutionRequestPopulationException, 
ProjectBuildingException {
         ContainerConfiguration containerConfiguration = new 
DefaultContainerConfiguration()
                 .setClassWorld(new ClassWorld("plexus.core", 
ClassWorld.class.getClassLoader()))
-                .setName("mavenCore");
+                
.setName("mavenCore").setClassPathScanning(PlexusConstants.SCANNING_INDEX).setAutoWiring(true);
 
         DefaultPlexusContainer container = new 
DefaultPlexusContainer(containerConfiguration);
         ProjectBuilder builder = container.lookup(ProjectBuilder.class);
diff --git 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/AbstractMavenPublishAction.java
 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/AbstractMavenPublishAction.java
index 9dd6e695afd..7d65dde67e3 100644
--- 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/AbstractMavenPublishAction.java
+++ 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/AbstractMavenPublishAction.java
@@ -18,11 +18,11 @@ package org.gradle.api.publication.maven.internal.action;
 
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.repository.internal.MavenRepositorySystemSession;
-import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
-import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.DefaultContainerConfiguration;
 import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.classworlds.ClassWorld;
@@ -30,16 +30,16 @@ import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.gradle.api.GradleException;
 import org.gradle.internal.UncheckedException;
-import org.sonatype.aether.RepositoryException;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.artifact.ArtifactType;
-import org.sonatype.aether.impl.Deployer;
-import org.sonatype.aether.impl.internal.DefaultDeployer;
-import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
-import org.sonatype.aether.util.DefaultRepositorySystemSession;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactType;
+import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.artifact.DefaultArtifact;
 
 import java.io.File;
 import java.io.FileReader;
@@ -60,9 +60,8 @@ abstract class AbstractMavenPublishAction implements 
MavenPublishAction {
 
     protected AbstractMavenPublishAction(File pomFile, List<File> wagonJars) {
         container = newPlexusContainer(wagonJars);
-        session = new MavenRepositorySystemSession();
+        session = MavenRepositorySystemUtils.newSession();
         session.setTransferListener(new LoggingMavenTransferListener());
-        session.getConfigProperties().put("maven.metadata.legacy", "true");
 
         Model pom = parsePom(pomFile);
         pomArtifact = new DefaultArtifact(pom.getGroupId(), 
pom.getArtifactId(), "pom", pom.getVersion()).setFile(pomFile);
@@ -70,7 +69,11 @@ abstract class AbstractMavenPublishAction implements 
MavenPublishAction {
     }
 
     public void setLocalMavenRepositoryLocation(File localMavenRepository) {
-        session.setLocalRepositoryManager(new 
SimpleLocalRepositoryManager(localMavenRepository));
+        try {
+            session.setLocalRepositoryManager(new 
SimpleLocalRepositoryManagerFactory().newInstance(session, new 
LocalRepository(localMavenRepository)));
+        } catch (NoLocalRepositoryManagerException e) {
+            throw UncheckedException.throwAsUncheckedException(e);
+        }
     }
 
     public void setMainArtifact(File file) {
@@ -117,7 +120,11 @@ abstract class AbstractMavenPublishAction implements 
MavenPublishAction {
                     classRealm.addURL(jar.toURI().toURL());
                 }
             }
-            return new DefaultPlexusContainer(new 
DefaultContainerConfiguration().setRealm(classRealm));
+            ContainerConfiguration conf = new DefaultContainerConfiguration();
+            conf.setClassPathScanning(PlexusConstants.SCANNING_INDEX);
+            conf.setAutoWiring(true);
+            conf.setRealm(classRealm);
+            return new DefaultPlexusContainer(conf);
         } catch (PlexusContainerException e) {
             throw UncheckedException.throwAsUncheckedException(e);
         } catch (MalformedURLException e) {
@@ -127,14 +134,6 @@ abstract class AbstractMavenPublishAction implements 
MavenPublishAction {
 
     private RepositorySystem newRepositorySystem() {
         try {
-            DefaultDeployer deployer = (DefaultDeployer) 
getContainer().lookup(Deployer.class);
-            // This is a workaround for 
https://issues.gradle.org/browse/GRADLE-3324.
-            // Somehow the ArrayList 'result' in 
`org.sonatype.aether.impl.internal.Utils#sortMetadataGeneratorFactories` ends up
-            // being a list of nulls on windows and IBM's 1.6 JDK.
-            deployer.setMetadataFactories(null);
-            deployer.addMetadataGeneratorFactory(new 
VersionsMetadataGeneratorFactory());
-            deployer.addMetadataGeneratorFactory(new 
SnapshotMetadataGeneratorFactory());
-            deployer.addMetadataGeneratorFactory(snapshotVersionManager);
             return container.lookup(RepositorySystem.class);
         } catch (ComponentLookupException e) {
             throw UncheckedException.throwAsUncheckedException(e);
diff --git 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/LoggingMavenTransferListener.java
 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/LoggingMavenTransferListener.java
index 5d75a16744b..46287cff506 100644
--- 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/LoggingMavenTransferListener.java
+++ 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/LoggingMavenTransferListener.java
@@ -18,9 +18,9 @@ package org.gradle.api.publication.maven.internal.action;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.sonatype.aether.transfer.AbstractTransferListener;
-import org.sonatype.aether.transfer.TransferEvent;
-import org.sonatype.aether.transfer.TransferEvent.RequestType;
+import org.eclipse.aether.transfer.AbstractTransferListener;
+import org.eclipse.aether.transfer.TransferEvent;
+import org.eclipse.aether.transfer.TransferEvent.RequestType;
 
 class LoggingMavenTransferListener extends AbstractTransferListener {
     private static final Logger LOGGER = 
LoggerFactory.getLogger(LoggingMavenTransferListener.class);
diff --git 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenDeployAction.java
 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenDeployAction.java
index 220e8535c18..c9891dfb583 100644
--- 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenDeployAction.java
+++ 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenDeployAction.java
@@ -19,14 +19,15 @@ import org.apache.maven.artifact.ant.RemoteRepository;
 import org.gradle.api.GradleException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.deployment.DeployRequest;
-import org.sonatype.aether.deployment.DeploymentException;
-import org.sonatype.aether.repository.Authentication;
-import org.sonatype.aether.repository.Proxy;
-import org.sonatype.aether.util.repository.DefaultProxySelector;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.deployment.DeployRequest;
+import org.eclipse.aether.deployment.DeploymentException;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.util.repository.AuthenticationBuilder;
+import org.eclipse.aether.util.repository.DefaultProxySelector;
 
 import java.io.File;
 import java.util.Collection;
@@ -57,7 +58,7 @@ public class MavenDeployAction extends 
AbstractMavenPublishAction {
             throw new GradleException("Must specify a repository for 
deployment");
         }
 
-        org.sonatype.aether.repository.RemoteRepository aetherRepo = 
createRepository(gradleRepo);
+        org.eclipse.aether.repository.RemoteRepository aetherRepo = 
createRepository(gradleRepo);
 
         DeployRequest request = new DeployRequest();
         request.setRepository(aetherRepo);
@@ -69,22 +70,22 @@ public class MavenDeployAction extends 
AbstractMavenPublishAction {
         repositorySystem.deploy(session, request);
     }
 
-    private org.sonatype.aether.repository.RemoteRepository 
createRepository(RemoteRepository gradleRepo) {
-        org.sonatype.aether.repository.RemoteRepository repo = new 
org.sonatype.aether.repository.RemoteRepository("remote", 
gradleRepo.getLayout(), gradleRepo.getUrl());
+    private org.eclipse.aether.repository.RemoteRepository 
createRepository(RemoteRepository gradleRepo) {
+        org.eclipse.aether.repository.RemoteRepository.Builder repoBuilder = 
new org.eclipse.aether.repository.RemoteRepository.Builder("remote", 
gradleRepo.getLayout(), gradleRepo.getUrl());
 
         org.apache.maven.artifact.ant.Authentication auth = 
gradleRepo.getAuthentication();
         if (auth != null) {
-            repo.setAuthentication(new Authentication(auth.getUserName(), 
auth.getPassword(), auth.getPrivateKey(), auth.getPassphrase()));
+            repoBuilder.setAuthentication(new 
AuthenticationBuilder().addUsername(auth.getUserName()).addPassword(auth.getPassword()).addPrivateKey(auth.getPrivateKey(),
 auth.getPassphrase()).build());
         }
 
         org.apache.maven.artifact.ant.Proxy proxy = gradleRepo.getProxy();
         if (proxy != null) {
             DefaultProxySelector proxySelector = new DefaultProxySelector();
-            Authentication proxyAuth = new Authentication(proxy.getUserName(), 
proxy.getPassword());
+            Authentication proxyAuth = new 
AuthenticationBuilder().addUsername(proxy.getUserName()).addPassword(proxy.getPassword()).build();
             proxySelector.add(new Proxy(proxy.getType(), proxy.getHost(), 
proxy.getPort(), proxyAuth), proxy.getNonProxyHosts());
-            repo.setProxy(proxySelector.getProxy(repo));
+            repoBuilder.setProxy(proxySelector.getProxy(repoBuilder.build()));
         }
 
-        return repo;
+        return repoBuilder.build();
     }
 }
diff --git 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenInstallAction.java
 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenInstallAction.java
index 37d9dc52d5b..3b121111f2b 100644
--- 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenInstallAction.java
+++ 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/MavenInstallAction.java
@@ -15,11 +15,11 @@
  */
 package org.gradle.api.publication.maven.internal.action;
 
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.installation.InstallRequest;
-import org.sonatype.aether.installation.InstallationException;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.installation.InstallRequest;
+import org.eclipse.aether.installation.InstallationException;
 
 import java.io.File;
 import java.util.Collection;
diff --git 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/SnapshotVersionManager.java
 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/SnapshotVersionManager.java
index 1fedf1d281a..b1ee8c09a1a 100644
--- 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/SnapshotVersionManager.java
+++ 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/action/SnapshotVersionManager.java
@@ -16,13 +16,13 @@
 
 package org.gradle.api.publication.maven.internal.action;
 
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.deployment.DeployRequest;
-import org.sonatype.aether.impl.MetadataGenerator;
-import org.sonatype.aether.impl.MetadataGeneratorFactory;
-import org.sonatype.aether.installation.InstallRequest;
-import org.sonatype.aether.metadata.Metadata;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.deployment.DeployRequest;
+import org.eclipse.aether.impl.MetadataGenerator;
+import org.eclipse.aether.impl.MetadataGeneratorFactory;
+import org.eclipse.aether.installation.InstallRequest;
+import org.eclipse.aether.metadata.Metadata;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -35,7 +35,7 @@ class SnapshotVersionManager implements 
MetadataGeneratorFactory, MetadataGenera
     }
 
     @Override
-    public int getPriority() {
+    public float getPriority() {
         return -100;
     }
 
-- 
2.17.2

++++++ 0006-Disable-code-quality-checks.patch ++++++
>From 7298e1704b87799781a23c5b51adb6d6a794c4ee Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Wed, 20 Sep 2017 15:26:10 +0300
Subject: [PATCH 06/17] Disable code quality checks

---
 build.gradle                                   | 4 ----
 buildSrc/build.gradle                          | 9 ---------
 gradle/classycle.gradle                        | 7 -------
 subprojects/distributions/distributions.gradle | 2 --
 4 files changed, 22 deletions(-)

diff --git a/build.gradle b/build.gradle
index 7d8ac910b04..92233aef8c9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -215,15 +215,11 @@ subprojects {
         apply from: "$rootDir/gradle/groovyProject.gradle"
         apply from: "$rootDir/gradle/testWithUnknownOS.gradle"
         apply from: "$rootDir/gradle/java9.gradle"
-        check.dependsOn ":docs:checkstyleApi"
-        check.dependsOn "codeQuality"
     }
 
     if (project in publishedProjects) {
         apply from: "$rootDir/gradle/publish.gradle"
     }
-
-    apply from: "$rootDir/gradle/codeQuality.gradle"
 }
 
 configurations {
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 196acdb4b73..80ccdd03188 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -50,9 +50,6 @@ dependencies {
 
     compile "org.pegdown:pegdown:1.6.0"
     compile "org.jsoup:jsoup:1.6.3"
-    compile 'me.champeau.gradle:japicmp-gradle-plugin:0.2.4'
-    compile 
"org.asciidoctor:asciidoctor-gradle-plugin:$asciidoctorPluginVersion"
-    compile 'com.github.javaparser:javaparser-core:2.4.0'
 }
 
 ext.isCiServer = System.getenv().containsKey("CI")
@@ -60,9 +57,3 @@ ext.isCiServer = System.getenv().containsKey("CI")
 apply from: '../gradle/compile.gradle'
 apply from: '../gradle/dependencies.gradle'
 apply from: '../gradle/classycle.gradle'
-
-if (!isCiServer || (isCiServer && Boolean.getBoolean('enableCodeQuality'))) {
-    apply from: '../gradle/codeQuality.gradle'
-}
-
-apply from: "../gradle/ciReporting.gradle"
diff --git a/gradle/classycle.gradle b/gradle/classycle.gradle
index ba44bdfed3b..5396cf3c5ed 100644
--- a/gradle/classycle.gradle
+++ b/gradle/classycle.gradle
@@ -1,11 +1,4 @@
 allprojects {
     ext.useClassycle = { params = [:] ->
-        def excludePatterns = params.exclude ?: []
-
-        apply plugin: org.gradle.plugins.classycle.ClassyclePlugin
-
-        tasks.withType(org.gradle.plugins.classycle.Classycle).all() {
-            it.excludePatterns = excludePatterns
-        }
     }
 }
diff --git a/subprojects/distributions/distributions.gradle 
b/subprojects/distributions/distributions.gradle
index 2ff68e89277..1283e42c700 100644
--- a/subprojects/distributions/distributions.gradle
+++ b/subprojects/distributions/distributions.gradle
@@ -131,5 +131,3 @@ integTestTasks.all {
     systemProperty 'org.gradle.public.api.includes', 
publicApiIncludes.join(':')
     systemProperty 'org.gradle.public.api.excludes', 
publicApiExcludes.join(':')
 }
-
-apply from: 'binary-compatibility.gradle'
-- 
2.17.2

++++++ 0007-Port-to-Kryo-3.0.patch ++++++
>From 67e10af4d925d4cef15be9aa48781d439c29f171 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Fri, 12 Jun 2015 12:04:53 +0200
Subject: [PATCH 07/17] Port to Kryo 3.0

---
 .../org/gradle/internal/serialize/kryo/KryoBackedEncoder.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/subprojects/messaging/src/main/java/org/gradle/internal/serialize/kryo/KryoBackedEncoder.java
 
b/subprojects/messaging/src/main/java/org/gradle/internal/serialize/kryo/KryoBackedEncoder.java
index c63e4340069..9f93df4ab8a 100644
--- 
a/subprojects/messaging/src/main/java/org/gradle/internal/serialize/kryo/KryoBackedEncoder.java
+++ 
b/subprojects/messaging/src/main/java/org/gradle/internal/serialize/kryo/KryoBackedEncoder.java
@@ -78,7 +78,7 @@ public class KryoBackedEncoder extends AbstractEncoder 
implements FlushableEncod
      * Returns the total number of bytes written by this encoder, some of 
which may still be buffered.
      */
     public int getWritePosition() {
-        return output.total();
+        return (int)output.total();
     }
 
     public void flush() {
-- 
2.17.2

++++++ 0008-Port-to-Ivy-2.4.0.patch ++++++
>From 9273768537f428d78e178b328d61c85746ea800e Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Mon, 13 Apr 2015 12:27:00 +0200
Subject: [PATCH 08/17] Port to Ivy 2.4.0

---
 .../ivyresolve/parser/IvyXmlModuleDescriptorParser.java         | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/IvyXmlModuleDescriptorParser.java
 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/IvyXmlModuleDescriptorParser.java
index 9a86d9cb183..c29f1952eb7 100644
--- 
a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/IvyXmlModuleDescriptorParser.java
+++ 
b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/IvyXmlModuleDescriptorParser.java
@@ -1207,7 +1207,7 @@ public class IvyXmlModuleDescriptorParser extends 
AbstractModuleDescriptorParser
                 buffer = null;
                 state = State.INFO;
             } else if (state == State.EXTRA_INFO) {
-                getMd().getExtraInfo().put(new NamespaceId(uri, localName), 
buffer == null ? "" : buffer.toString());
+                ((Map)getMd().getExtraInfo()).put(new NamespaceId(uri, 
localName), buffer == null ? "" : buffer.toString());
                 buffer = null;
                 state = State.INFO;
             } else if (state == State.DESCRIPTION) {
-- 
2.17.2

++++++ 0009-Port-to-Polyglot-0.1.8.patch ++++++
>From e0fd3d1d53e2a477ae55534bbc9180a40537bf65 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Tue, 21 Apr 2015 15:12:44 +0200
Subject: [PATCH 09/17] Port to Polyglot 0.1.8

---
 .../maven/internal/pom/CustomModelBuilder.java  | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/pom/CustomModelBuilder.java
 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/pom/CustomModelBuilder.java
index e311d4993b6..91d5fa22d95 100644
--- 
a/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/pom/CustomModelBuilder.java
+++ 
b/subprojects/maven/src/main/java/org/gradle/api/publication/maven/internal/pom/CustomModelBuilder.java
@@ -20,11 +20,15 @@ import org.apache.maven.model.Model;
 import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.gradle.api.publication.maven.internal.ModelFactory;
 import org.slf4j.LoggerFactory;
+import org.sonatype.maven.polyglot.PolyglotModelManager;
 import org.sonatype.maven.polyglot.execute.ExecuteManager;
 import org.sonatype.maven.polyglot.execute.ExecuteManagerImpl;
+import org.sonatype.maven.polyglot.groovy.GroovyMapping;
 import org.sonatype.maven.polyglot.groovy.builder.ModelBuilder;
+import org.sonatype.maven.polyglot.mapping.XmlMapping;
 
 import java.lang.reflect.Field;
+import java.util.Arrays;
 import java.util.Map;
 
 /**
@@ -33,17 +37,16 @@ import java.util.Map;
 public class CustomModelBuilder extends ModelBuilder {
 
     public CustomModelBuilder(Model model) {
+        PolyglotModelManager modelManager = new PolyglotModelManager();
+        setProp(modelManager.getClass(), modelManager, "log",
+                new 
PlexusLoggerAdapter(LoggerFactory.getLogger(PolyglotModelManager.class)));
+        setProp(modelManager.getClass(), modelManager, "mappings",
+                Arrays.asList(new XmlMapping(), new GroovyMapping()));
         ExecuteManager executeManager = new ExecuteManagerImpl();
         setProp(executeManager.getClass(), executeManager, "log",
                 new 
PlexusLoggerAdapter(LoggerFactory.getLogger(ExecuteManagerImpl.class)));
+        setProp(executeManager.getClass(), executeManager, "manager", 
modelManager);
         setProp(ModelBuilder.class, this, "executeManager", executeManager);
-        setProp(ModelBuilder.class, this, "log",
-                new 
PlexusLoggerAdapter(LoggerFactory.getLogger(ModelBuilder.class)));
-        try {
-            initialize();
-        } catch (InitializationException e) {
-            throw new RuntimeException(e);
-        }
         Map factories = (Map) getProp(FactoryBuilderSupport.class, this, 
"factories");
         factories.remove("project");
         ModelFactory modelFactory = new ModelFactory(model);
-- 
2.17.2

++++++ 0010-Port-from-Simple-4-to-Jetty-9.patch ++++++
>From 9b5c1c859a60229beb20aa9bd4480f82786ff717 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizde...@redhat.com>
Date: Fri, 30 Jan 2015 13:16:40 +0100
Subject: [PATCH 10/17] Port from Simple 4 to Jetty 9

---
 gradle/dependencies.gradle                    |  6 +-
 subprojects/javascript/javascript.gradle      |  2 +-
 .../simple/SimpleHttpFileServerFactory.java   | 38 ++++-----
 .../internal/SimpleFileServerContainer.java   | 82 -------------------
 4 files changed, 23 insertions(+), 105 deletions(-)
 delete mode 100644 
subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java

diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index 54dc27d7fbe..96ff6f58fee 100755
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -68,12 +68,12 @@ libraries.logback_classic = 
dependencies.module('ch.qos.logback:logback-classic:
 }
 
 // Jetty
-libraries.servlet_api = "org.mortbay.jetty:servlet-api:2.5-20081211@jar"
-libraries.jetty_util = 
dependencies.module("org.mortbay.jetty:jetty-util:6.1.26") {
+libraries.servlet_api = "javax.servlet:javax.servlet-api"
+libraries.jetty_util = dependencies.module("org.eclipse.jetty:jetty-util") {
     dependency libraries.slf4j_api
     dependency libraries.servlet_api
 }
-libraries.jetty = dependencies.module("org.mortbay.jetty:jetty:6.1.26") {
+libraries.jetty = dependencies.module("org.eclipse.jetty:jetty-server") {
     dependency libraries.jetty_util
     dependency libraries.servlet_api
 }
diff --git a/subprojects/javascript/javascript.gradle 
b/subprojects/javascript/javascript.gradle
index 1e94bd8de68..18970197521 100644
--- a/subprojects/javascript/javascript.gradle
+++ b/subprojects/javascript/javascript.gradle
@@ -19,7 +19,7 @@ dependencies {
 
     compile "org.mozilla:rhino:1.7R3"
     compile libraries.gson // used by JsHint
-    compile "org.simpleframework:simple:4.1.21" // used by http package in 
envjs
+    compile libraries.jetty // used by http package in envjs
     compile project(':core'), project(":plugins"), project(':workers')
     compile libraries.inject
 
diff --git 
a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java
 
b/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java
index 8a4f692cf4e..6983db21cb4 100644
--- 
a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java
+++ 
b/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java
@@ -16,43 +16,43 @@
 
 package org.gradle.plugins.javascript.envjs.http.simple;
 
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.DefaultHandler;
+import org.eclipse.jetty.server.handler.HandlerList;
+import org.eclipse.jetty.server.handler.ResourceHandler;
 import org.gradle.api.UncheckedIOException;
 import org.gradle.internal.concurrent.Stoppable;
 import org.gradle.plugins.javascript.envjs.http.HttpFileServer;
 import org.gradle.plugins.javascript.envjs.http.HttpFileServerFactory;
-import 
org.gradle.plugins.javascript.envjs.http.simple.internal.SimpleFileServerContainer;
-import org.simpleframework.http.core.Container;
-import org.simpleframework.http.core.ContainerServer;
-import org.simpleframework.http.resource.FileContext;
-import org.simpleframework.transport.Server;
-import org.simpleframework.transport.connect.Connection;
-import org.simpleframework.transport.connect.SocketConnection;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.InetSocketAddress;
 
 public class SimpleHttpFileServerFactory implements HttpFileServerFactory {
 
     public HttpFileServer start(File contentRoot, int port) {
-        Container container = new SimpleFileServerContainer(new 
FileContext(contentRoot));
-
         try {
-            final Server server = new ContainerServer(container);
-            Connection connection = new SocketConnection(server);
-            InetSocketAddress address = new InetSocketAddress(port);
-            InetSocketAddress usedAddress = 
(InetSocketAddress)connection.connect(address);
+            final Server server = new Server(8080);
+
+            ResourceHandler handler = new ResourceHandler();
+            handler.setResourceBase(contentRoot.getPath());
+
+            HandlerList handlers = new HandlerList();
+            handlers.setHandlers(new Handler[] { handler, new DefaultHandler() 
});
+            server.setHandler(handlers);
+
+            server.start();
 
-            return new SimpleHttpFileServer(contentRoot, 
usedAddress.getPort(), new Stoppable() {
+            return new SimpleHttpFileServer(contentRoot, port, new Stoppable() 
{
                 public void stop() {
                     try {
-                        server.stop();
-                    } catch (IOException e) {
+                        server.join();
+                    } catch (InterruptedException e) {
                         throw new UncheckedIOException(e);
                     }
                 }
             });
-        } catch (IOException e) {
+        } catch (Exception e) {
             throw new UncheckedIOException(e);
         }
     }
diff --git 
a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java
 
b/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java
deleted file mode 100644
index 5d67baeeae1..00000000000
--- 
a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2012 the original author or authors.
- *
- * 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.
- */
-
-package org.gradle.plugins.javascript.envjs.http.simple.internal;
-
-import org.apache.commons.io.IOUtils;
-import org.gradle.api.UncheckedIOException;
-import org.simpleframework.http.Request;
-import org.simpleframework.http.Response;
-import org.simpleframework.http.core.Container;
-import org.simpleframework.http.resource.Context;
-import org.simpleframework.http.resource.Index;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.nio.charset.Charset;
-
-public class SimpleFileServerContainer implements Container {
-
-    private final Context context;
-
-    public SimpleFileServerContainer(Context context) {
-        this.context = context;
-    }
-
-    public void handle(Request req, Response resp) {
-        Index requestIndex = context.getIndex(req.getTarget());
-        File targetFile = requestIndex.getFile();
-
-        if (!targetFile.exists()) {
-            resp.setCode(404);
-            resp.setText("Not Found");
-            try {
-                resp.getPrintStream().println(String.format("File '%s' does 
not exist", targetFile.getAbsolutePath()));
-                resp.commit();
-            } catch (IOException e) {
-                throw new UncheckedIOException(e);
-            }
-        }
-
-        String contentType = requestIndex.getContentType();
-        resp.set("Content-Type", contentType);
-
-        OutputStream output = null;
-        try {
-            output = resp.getOutputStream();
-
-            if (contentType.startsWith("text/")) {
-                resp.set("Content-Encoding", Charset.defaultCharset().name());
-                Reader input = new FileReader(requestIndex.getFile());
-                IOUtils.copy(input, output);
-                IOUtils.closeQuietly(input);
-            } else {
-                InputStream input = new 
FileInputStream(requestIndex.getFile());
-                IOUtils.copy(input, output);
-                IOUtils.closeQuietly(input);
-            }
-        } catch (IOException e) {
-            throw new UncheckedIOException(e);
-        } finally {
-            IOUtils.closeQuietly(output);
-        }
-    }
-}
-- 
2.17.2

++++++ 0011-Disable-benchmarks.patch ++++++
>From 36ea3935a6ffef95a530b88fd30ddd579d0da39d Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Fri, 29 Sep 2017 14:10:15 +0300
Subject: [PATCH 11/17] Disable benchmarks

---
 gradle/groovyProject.gradle                    | 4 ----
 subprojects/base-services/base-services.gradle | 6 ------
 subprojects/build-cache/build-cache.gradle     | 6 ------
 subprojects/native/native.gradle               | 8 --------
 4 files changed, 24 deletions(-)

diff --git a/gradle/groovyProject.gradle b/gradle/groovyProject.gradle
index d4479292523..df61e7f1e88 100644
--- a/gradle/groovyProject.gradle
+++ b/gradle/groovyProject.gradle
@@ -124,10 +124,6 @@ if (file("src/performanceTest").exists()) {
     apply from: "$rootDir/gradle/performanceTest.gradle"
 }
 
-if (file("src/jmh").exists()) {
-    apply from: "$rootDir/gradle/jmh.gradle"
-}
-
 apply from: "$rootDir/gradle/distributionTesting.gradle"
 apply from: "$rootDir/gradle/intTestImage.gradle"
 
diff --git a/subprojects/base-services/base-services.gradle 
b/subprojects/base-services/base-services.gradle
index 3f9cb27e2e6..491c0fa46eb 100644
--- a/subprojects/base-services/base-services.gradle
+++ b/subprojects/base-services/base-services.gradle
@@ -16,12 +16,6 @@ dependencies {
     implementation libraries.commons_lang
     implementation libraries.commons_io
     implementation libraries.jcip
-
-    jmh libraries.bouncycastle_provider
-}
-
-jmh {
-    include = ["HashingAlgorithmsBenchmark"]
 }
 
 task buildReceiptResource(type: Copy) {
diff --git a/subprojects/build-cache/build-cache.gradle 
b/subprojects/build-cache/build-cache.gradle
index 005923c563b..01d32928320 100644
--- a/subprojects/build-cache/build-cache.gradle
+++ b/subprojects/build-cache/build-cache.gradle
@@ -26,12 +26,6 @@ dependencies {
     implementation project(":logging")
 
     implementation libraries.commons_io
-
-    jmh libraries.ant
-    jmh libraries.commons_compress
-    jmh "io.airlift:aircompressor:0.8"
-    jmh "org.iq80.snappy:snappy:0.4"
-    jmh "org.kamranzafar:jtar:2.3"
 }
 
 useTestFixtures()
diff --git a/subprojects/native/native.gradle b/subprojects/native/native.gradle
index dfd4db20408..0b59611dfcd 100755
--- a/subprojects/native/native.gradle
+++ b/subprojects/native/native.gradle
@@ -19,14 +19,6 @@ useTestFixtures()
 useTestFixtures(project: ":logging")
 useClassycle()
 
-jmh {
-    fork = 1
-    threads = 2
-    warmupIterations = 10
-    synchronizeIterations = false
-    resultFormat = 'CSV'
-}
-
 task copyJmhReport(type: Copy) {
     destinationDir = file("$buildDir/reports/jmh-html")
 
-- 
2.17.2

++++++ 0012-Disable-patching-of-external-modules.patch ++++++
>From cfdfdb199a7a72b8ca83d76ddc7241b34c1e9d05 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Mon, 2 Oct 2017 17:31:44 +0300
Subject: [PATCH 12/17] Disable patching of external modules

---
 build.gradle | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/build.gradle b/build.gradle
index 92233aef8c9..dc302c5fccf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -252,18 +252,11 @@ configurations {
     }
 }
 
-def patchedExternalModulesDir = new File(buildDir, "external/files")
-def patchedExternalModules = files({ -> 
fileTree(patchedExternalModulesDir).files.sort() })
-patchedExternalModules.builtBy 'patchExternalModules'
-
 dependencies {
-    externalModules 
"org.gradle:gradle-kotlin-dsl:${versions.gradle_kotlin_dsl}"
-    externalModules 
"org.gradle:gradle-kotlin-dsl-tooling-builders:${versions.gradle_kotlin_dsl}"
     coreRuntime project(':launcher')
     coreRuntime project(':runtimeApiInfo')
     runtime project(':wrapper')
     runtime project(":installationBeacon")
-    runtime patchedExternalModules
     gradlePlugins pluginProjects
     gradlePlugins implementationPluginProjects
     gradlePlugins project(':workers')
@@ -273,18 +266,10 @@ dependencies {
     coreRuntimeExtensions project(':dependencyManagement') //See: 
DynamicModulesClassPathProvider.GRADLE_EXTENSION_MODULES
     coreRuntimeExtensions project(':pluginUse')
     coreRuntimeExtensions project(':workers')
-    coreRuntimeExtensions patchedExternalModules
 }
 
 import org.gradle.modules.PatchExternalModules
 
-task patchExternalModules(type: PatchExternalModules) {
-    allModules = configurations.externalModulesRuntime
-    coreModules = configurations.coreRuntime
-    modulesToPatch = configurations.externalModules
-    destination = patchedExternalModulesDir
-}
-
 task verifyIsProductionBuildEnvironment {
     doLast {
         assert javaVersion.java8:
-- 
2.17.2

++++++ 0013-Add-missing-transitive-dependencies.patch ++++++
>From 930ef37f4fe3be61982d5ead5a8620cb65335108 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Mon, 2 Oct 2017 17:33:05 +0300
Subject: [PATCH 13/17] Add missing transitive dependencies

---
 gradle/dependencies.gradle | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index 96ff6f58fee..bbf10217798 100755
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -37,7 +37,10 @@ libraries.ant = 
dependencies.module("org.apache.ant:ant:${versions.ant}") {
 
 libraries.asm =  'org.ow2.asm:asm-debug-all:6.0_ALPHA'
 libraries.cglib = 'cglib:cglib:3.2.5'
-libraries.bndlib = dependencies.module('biz.aQute.bnd:biz.aQute.bndlib:3.4.0')
+libraries.bndlib = dependencies.module('biz.aQute.bnd:bndlib:3.4.0') {
+    dependency 'biz.aQute.bnd:aQute.libg:3.4.0@jar'
+    dependency 'biz.aQute.bnd:biz.aQute.bnd.annotation:3.4.0@jar'
+}
 libraries.commons_cli = 'commons-cli:commons-cli:1.2@jar'
 libraries.commons_io = dependencies.module(versions.commons_io)
 libraries.commons_lang = 'commons-lang:commons-lang:2.6@jar'
@@ -102,8 +105,10 @@ libraries += [
     equalsVerifier: 'nl.jqno.equalsverifier:equalsverifier:2.1.6',
     xbean: 'org.apache.xbean:xbean-reflect:3.4@jar', //required by maven3 
classes
     nativePlatform: 'net.rubygrapefruit:native-platform:0.14',
-    jansi: dependencies.module('org.fusesource.jansi:jansi:1.14'),
-    xerces: "xerces:xercesImpl:2.11.0",
+    jansi: dependencies.module('org.fusesource.jansi:jansi:1.14') {
+        dependency "org.fusesource.jansi:jansi-native:1.14"
+    },
+    xerces: "xerces:xercesImpl:2.9.1",
     objenesis: 'org.objenesis:objenesis:1.2@jar',
     jsoup: 'org.jsoup:jsoup:1.6.3',
     xmlApis: 'xml-apis:xml-apis:1.4.01',
@@ -219,7 +224,11 @@ libraries.awsS3 = [
 ] + libraries.commons_httpclient + libraries.joda
 
 // keep in sync with ScalaLanguagePlugin code
-libraries.zinc = 'com.typesafe.zinc:zinc:0.3.15'
+libraries.zinc = dependencies.module('com.typesafe.zinc:zinc:0.3.15') {
+    dependency "org.scala-sbt:compile"
+    dependency "org.scala-sbt:compiler-integration"
+    dependency "org.scala-sbt:incremental-compiler"
+}
 
 libraries.gcs = [
         
dependencies.create('com.google.apis:google-api-services-storage:v1-rev78-1.22.0')
 {
-- 
2.17.2

++++++ 0014-Disable-ideNative-module.patch ++++++
>From d4c851fb400e9c1f7077c32bd80c943f80eed828 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Mon, 2 Oct 2017 17:34:01 +0300
Subject: [PATCH 14/17] Disable ideNative module

---
 build.gradle                                       | 2 +-
 settings.gradle                                    | 1 -
 subprojects/language-native/language-native.gradle | 2 --
 subprojects/platform-native/platform-native.gradle | 2 --
 subprojects/testing-native/testing-native.gradle   | 3 +--
 5 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/build.gradle b/build.gradle
index dc302c5fccf..0eb2008a845 100644
--- a/build.gradle
+++ b/build.gradle
@@ -151,7 +151,7 @@ ext {
         'ide', 'announce', 'scala', 'signing', 'ear', 'javascript', 
'buildComparison',
         'diagnostics', 'reporting', 'publish', 'ivy', 'jacoco', 'buildInit', 
'platformBase',
         'platformJvm', 'languageJvm', 'languageJava', 'languageGroovy', 
'languageScala',
-        'platformNative', 'platformPlay', 'idePlay', 'languageNative', 
'ideNative', 'testingBase',
+        'platformNative', 'platformPlay', 'idePlay', 'languageNative', 
'testingBase',
         'testingNative', 'testingJvm', 'pluginDevelopment', 'pluginUse', 
'resourcesHttp',
         'resourcesSftp', 'resourcesS3', 'resourcesGcs', 'compositeBuilds', 
'buildCacheHttp'
     ].collect { project(it) }
diff --git a/settings.gradle b/settings.gradle
index ab5013aa5fc..3178a38aba9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -36,7 +36,6 @@ include 'resourcesSftp'
 include 'plugins'
 include 'scala'
 include 'ide'
-include 'ideNative'
 include 'idePlay'
 include 'osgi'
 include 'maven'
diff --git a/subprojects/language-native/language-native.gradle 
b/subprojects/language-native/language-native.gradle
index 00282e6f0f2..f23610aa754 100644
--- a/subprojects/language-native/language-native.gradle
+++ b/subprojects/language-native/language-native.gradle
@@ -18,8 +18,6 @@ dependencies {
     compile project(':core')
     compile project(':platformNative')
     compile project(':maven')
-
-    integTestRuntime project(":ideNative")
 }
 
 useTestFixtures()
diff --git a/subprojects/platform-native/platform-native.gradle 
b/subprojects/platform-native/platform-native.gradle
index 63231a88d6c..236deeeda87 100644
--- a/subprojects/platform-native/platform-native.gradle
+++ b/subprojects/platform-native/platform-native.gradle
@@ -22,8 +22,6 @@ dependencies {
     compile project(':diagnostics')
 
     integTestRuntime project(':maven')
-    // Required to test visual studio project file generation for generated 
sources
-    integTestRuntime project(':ideNative')
 
     testFixturesCompile project(':internalIntegTesting')
 }
diff --git a/subprojects/testing-native/testing-native.gradle 
b/subprojects/testing-native/testing-native.gradle
index c388099a3d3..4e7164fb71c 100644
--- a/subprojects/testing-native/testing-native.gradle
+++ b/subprojects/testing-native/testing-native.gradle
@@ -19,8 +19,7 @@ dependencies {
     compile project(':platformNative')
     compile project(':languageNative')
     compile project(':testingBase')
-
-    integTestRuntime project(':ideNative')
+    compile project(':testingJvm')
 }
 
 useTestFixtures()
-- 
2.17.2

++++++ 0015-Disable-docs-build.patch ++++++
>From 794ada1e70d92ac918bef5c0de69ad988e295918 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Mon, 2 Oct 2017 23:09:09 +0300
Subject: [PATCH 15/17] Disable docs build

---
 subprojects/docs/docs.gradle | 372 +----------------------------------
 1 file changed, 6 insertions(+), 366 deletions(-)

diff --git a/subprojects/docs/docs.gradle b/subprojects/docs/docs.gradle
index e960da3eb1a..f59938642c3 100755
--- a/subprojects/docs/docs.gradle
+++ b/subprojects/docs/docs.gradle
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import org.apache.tools.ant.filters.ReplaceTokens
-import org.gradle.build.docs.AssembleSamplesDocTask
-import org.gradle.build.docs.CacheableAsciidoctorTask
-import org.gradle.build.docs.Docbook2Xhtml
-import org.gradle.build.docs.ExtractSamplesTask
-import org.gradle.build.docs.ExtractSnippetsTask
+import javax.xml.transform.TransformerFactory
+import javax.xml.transform.stream.StreamResult
+import javax.xml.transform.stream.StreamSource
+
 import org.gradle.build.docs.UserGuideSectionVerifier
 import org.gradle.build.docs.UserGuideTransformTask
 import org.gradle.build.docs.Xhtml2Pdf
@@ -38,7 +36,6 @@ apply plugin: 'base'
 apply plugin: 'pegdown'
 apply plugin: 'jsoup'
 apply plugin: 'javascript-base'
-apply plugin: 'org.asciidoctor.convert'
 
 repositories {
     xmvn()
@@ -65,28 +62,6 @@ configurations {
 }
 
 dependencies {
-    asciidoctor 'org.asciidoctor:asciidoctorj:1.5.6'
-
-    userGuideTask 'xalan:xalan:2.7.1', libraries.xerces
-    userGuideTask module('xhtmlrenderer:xhtmlrenderer:R8rc1') {
-        dependency 'itext:itext:2.0.8@jar'
-    }
-    userGuideTask 'xslthl:xslthl:2.0.1@jar'
-
-    userGuideStyleSheets 'docbook:docbook-xsl:1.75.2@zip'
-    jquery "jquery:jquery.min:1.8.0@js"
-    jqueryTipTip "com.drewwilson.code:jquery.tipTip:1.3:minified@js"
-
-    fonts \
-        "lato:regular:6:v0SdcGFAl2aezM9Vq_aFTQ@ttf",
-        "lato:regular-italic:6:LqowQDslGv4DmUBAfWa2Vw@ttf",
-        "lato:bold:6:DvlFBScY1r-FMtZSYIYoYw@ttf",
-        "lato:bold-italic:6:HkF_qI1x_noxlxhrhMQYEKCWcynf_cDxXwCLxiixG1c@ttf",
-        "ubuntumono:regular:3:ViZhet7Ak-LRXZMXzuAfkZ0EAVxt0G0biEntp43Qt6E@ttf",
-        
"ubuntumono:regular-italic:3:KAKuHXAHZOeECOWAHsRKA-LrC4Du4e_yfTJ8Ol60xk0@ttf",
-        "ubuntumono:bold:3:ceqTZGKHipo8pJj4molytp_TkvowlIOtbR7ePgFOpF4@ttf",
-        
"ubuntumono:bold-italic:3:n_d8tv_JOIiYyMXR4eaV9WsGzsqhEorxQDpu60nfWEc@ttf"
-
     testCompile "org.pegdown:pegdown:1.1.0"
     testCompile libraries.jsoup
     testCompile "org.gebish:geb-spock:0.9.3"
@@ -112,174 +87,20 @@ ext {
     samplesSrcDir = file('src/samples')
 }
 
-ext.outputs = [:]
-outputs.samples = files(samplesDir) {
-    builtBy 'samples'
-}
-outputs.distDocs = files(distDocsDir) {
-    builtBy 'distDocs'
-}
-outputs.docs = files(docsDir) {
-    builtBy 'javadocAll', 'userguide', 'dslHtml', 'releaseNotes'
-}
-
-tasks.withType(CacheableAsciidoctorTask) {
-    backends = ['docbook']
-    separateOutputDirs = false
-    options doctype: 'book'
-    inputs.file asciidocSanitizeStylesheet withPropertyName 
"sanitizerStylesheet" withPathSensitivity PathSensitivity.NONE
-
-    extensions {
-        inlinemacro (name: "api") {
-            parent, target, attributes ->
-            def (className, method) = target.split('#', 2) as List
-            def content = "<apilink class=\"$className\""
-            if (method) {
-                // Add space after comma, because we can't have spaces in api: 
targets
-                // Restore Asciidoc's '&hellip;&zwsp;' replacement to the 
original '...'
-                content += " method=\"${method.replaceAll(/,\s*/, ', 
').replaceAll(/\&#8230;\&#8203;/, '...')}\""
-            }
-            content += " />"
-            return content
-        }
-    }
-
-    attributes website: 'http://www.gradle.org'
-
-    doLast {
-        outputDir.eachFileMatch(~/.*.xml/) { File file ->
-            def contents = file.getText("utf-8")
-            try {
-                def transformer = 
TransformerFactory.newInstance().newTransformer(new 
StreamSource(asciidocSanitizeStylesheet))
-                transformer.transform(new StreamSource(new 
StringReader(contents)), new StreamResult(file))
-            } catch (Exception ex) {
-                throw new RuntimeException("Couldn't process $file:\n" + 
contents, ex)
-            }
-        }
-    }
-}
-
-tasks.withType(Docbook2Xhtml) {
-    dependsOn userguideStyleSheets
-    classpath = configurations.userGuideTask
-    stylesheetsDir = userguideStyleSheets.destinationDir
-}
-
-tasks.withType(UserGuideTransformTask) {
-    dependsOn samples, dslDocbook
-    snippetsDir = samples.snippetsDir
-    linksFile = dslDocbook.linksFile
-    websiteUrl = 'http://www.gradle.org'
+ext.outputs = []
 
-    if (name in ["pdfUserguideDocbook"]) {
-        // These will only be valid for releases, but that's ok
-        javadocUrl = "http://www.gradle.org/docs/${->version}/javadoc"
-        dsldocUrl = "http://www.gradle.org/docs/${->version}/dsl"
-    } else {
-        javadocUrl = '../javadoc'
-        dsldocUrl = '../dsl'
-    }
-}
-
-tasks.withType(AssembleDslDocTask) {
-    classDocbookDir = dslSrcDir
-}
-
-task configureCss {
-    doLast {
-        def images = fileTree(dir: "src/docs/css/images", include: 
"*.*").files.collectEntries {
-            [it.name, it.bytes.encodeBase64().toString()]
-        }
-
-        def fonts = 
configurations.fonts.resolvedConfiguration.resolvedArtifacts.collectEntries {
-            def id = it.moduleVersion.id
-            ["${id.group}-${id.name}".toString(), 
it.file.bytes.encodeBase64().toString()]
-        }
-
-        ext.tokens = images + fonts
-        css.inputs.property 'tokens', tokens
-        css.filter ReplaceTokens, tokens: tokens
-    }
-}
-
-task css(type: Sync, dependsOn: configureCss) {
+task css(type: Sync) {
     into "$buildDir/css"
     from "src/docs/css"
     include "*.css"
     include "*.svg"
 }
 
-ext.cssFiles = fileTree(css.destinationDir) {
-    builtBy css
-}
-
-task samples(type: ExtractSnippetsTask) {
-    samples = samplesSrcDir
-    destDir = samplesDir
-    excludes = ['userguideOutput/**',
-                '**/readme.xml',
-                '**/build/**',
-                '**/.gradle/**']
-    nonFiltered = [ 'userguide/tutorial/antLoadfileResources/**',
-                    'native-binaries/cunit/libs/**',
-                    'native-binaries/google-test/libs/**' ]
-    snippetsDir = new File(buildDir, 'snippets')
-}
-
-task userguideStyleSheets(type: Copy) {
-    File stylesheetsDir = new File(srcDocsDir, 'stylesheets')
-    into new File(buildDir, 'stylesheets')
-    from(stylesheetsDir) {
-        include '*.xsl'
-    }
-    from(cssFiles)
-    from({ zipTree(configurations.userGuideStyleSheets.singleFile) }) {
-        // Remove the prefix
-        eachFile { fcd -> fcd.path = 
fcd.path.replaceFirst('^docbook-xsl-[0-9\\.]+/', '') }
-    }
-}
-
-tasks.remove(asciidoctor)
-
-task userguideAsciidoc(type: CacheableAsciidoctorTask) {
-    sourceDir = userguideSrcDir
-    sources { include '*.adoc' }
-    outputDir = asciidocOutputDir
-    inputs.file { defaultImports.importsDestFile } withPropertyName 
'defaultImports' withPathSensitivity PathSensitivity.NONE
-
-    // we pull the default-imports from here:
-    resources {
-        from(generatedResourcesDir)
-        include "**/*.txt"
-    }
-}
-
-task samplesDocbook(type: AssembleSamplesDocTask) {
-    source samplesSrcDir
-    include '**/readme.xml'
-    destFile = new File(docbookSrc, 'samplesList.xml')
-}
-
-task samplesDocs(type: Docbook2Xhtml) {
-    source samplesDocbook
-    destFile = new File(samples.destDir, 'readme.html')
-    stylesheetName = 'standaloneHtml.xsl'
-}
-
 task dslMetaData(type: ExtractDslMetaDataTask) {
     source { javadocAll.source }
     destFile = new File(docbookSrc, 'dsl-meta-data.bin')
 }
 
-task dslDocbook(type: AssembleDslDocTask, dependsOn: [dslMetaData]) {
-    sources = fileTree(dir: dslSrcDir, includes: ['*.xml'])
-    sourceFile = new File(dslSrcDir, 'dsl.xml')
-    classMetaDataFile = dslMetaData.destFile
-    pluginsMetaDataFile = new File(dslSrcDir, 'plugins.xml')
-    destFile = new File(docbookSrc, 'dsl.xml')
-    linksFile = new File(docbookSrc, 'api-links.bin')
-}
-
 task defaultImports(type: GenerateDefaultImportsTask, dependsOn: dslMetaData) {
     metaDataFile = dslMetaData.destFile
     importsDestFile = new File(generatedResourcesDir, "default-imports.txt")
@@ -300,107 +121,6 @@ task defaultImports(type: GenerateDefaultImportsTask, 
dependsOn: dslMetaData) {
     excludePackage 'org.gradle.platform.base.test'
 }
 
-task dslStandaloneDocbook(type: UserGuideTransformTask, dependsOn: 
[dslDocbook]) {
-    sourceFile = dslDocbook.destFile
-    destFile = new File(docbookSrc, 'dsl-standalone.xml')
-    dsldocUrl = '.'
-}
-
-task dslHtml(type: Docbook2Xhtml) {
-    group = "Documentation"
-    source dslStandaloneDocbook
-    destDir = new File(docsDir, 'dsl')
-    stylesheetName = 'dslHtml.xsl'
-    resources = cssFiles + fileTree(dslSrcDir) {
-        include '*.js'
-    }
-    ext.entryPoint = "$destDir/index.html"
-}
-
-task checkSectionIds(type: UserGuideSectionVerifier) {
-    dependsOn userguideAsciidoc
-    docbookFiles = files(
-        fileTree(userguideSrcDir) { include "**/*.xml" },
-        userguideAsciidoc.outputs.files
-    )
-}
-
-[configureCss, samples, samplesDocbook]*.mustRunAfter(checkSectionIds)
-
-task extractSamples(type: ExtractSamplesTask) {
-    // We need default imports since it is included by userguide.xml
-    // We need samplesList.xml (generated by samplesDocbook) since it is 
included by userguide.xml
-    // Both files are not an input since they do not affect the generated 
samples.xml
-    dependsOn defaultImports, samplesDocbook, userguideAsciidoc
-    sourceFile = new File(userguideSrcDir, 'userguide.xml')
-    destFile = new File(docbookSrc, 'samples.xml')
-}
-
-// This is used in the distribution and for the online version
-task userguideDocbook(type: UserGuideTransformTask) {
-    destFile = new File(docbookSrc, 'userguide.xml')
-    dependsOn checkSectionIds
-}
-
-// This is used for the PDF, where we need absolute links to the javadoc etc.
-task pdfUserguideDocbook(type: UserGuideTransformTask) {
-    destFile = new File(docbookSrc, 'remoteUserguide.xml')
-}
-
-configure([userguideDocbook, pdfUserguideDocbook]) {
-    // The master userguide.xml pulls these files in via xi:include, making 
them input
-    includes = files(
-        samplesDocbook,
-        defaultImports.importsDestFile,
-        fileTree(dir: userguideSrcDir, includes: ['*.xml']),
-        userguideAsciidoc.outputs.files
-    )
-
-    dependsOn samples, samplesDocbook, defaultImports
-
-    sourceFile new File(userguideSrcDir, 'userguide.xml')
-}
-
-def imageFiles = fileTree(userguideSrcDir) {
-    include 'img/*.png'
-    include 'img/*.gif'
-    include 'img/*.jpg'
-}
-def resourceFiles = imageFiles + cssFiles
-
-task userguideHtml(type: Docbook2Xhtml) {
-    group = "Documentation"
-    source userguideDocbook
-    destDir = userguideDir
-    stylesheetName = 'userGuideHtml.xsl'
-    resources = resourceFiles
-    ext.entryPoint = "$destDir/userguide.html"
-}
-
-task userguideSingleHtml(type: Docbook2Xhtml) {
-    group = "Documentation"
-    source userguideDocbook
-    destFile = new File(userguideDir, 'userguide_single.html')
-    stylesheetName = 'userGuideSingleHtml.xsl'
-    resources = resourceFiles
-    ext.entryPoint = destFile
-}
-
-task pdfUserguideXhtml(type: Docbook2Xhtml) {
-    source pdfUserguideDocbook
-    destFile = new File(buildDir, 'tmp/userguidePdf/userguidePdf.html')
-    stylesheetName = 'userGuidePdf.xsl'
-    resources = resourceFiles
-    ext.entryPoint = destFile
-}
-
-task userguidePdf(type: Xhtml2Pdf, dependsOn: pdfUserguideXhtml) {
-    sourceFile = pdfUserguideXhtml.destFile
-    destFile = new File(userguideDir, 'userguide.pdf')
-    classpath = configurations.userGuideTask
-    resources = resourceFiles
-}
-
 def javaApiUrl = "https://docs.oracle.com/javase/7/docs/api";
 def groovyApiUrl = 
"http://docs.groovy-lang.org/docs/groovy-${versions.groovy}/html/gapi";
 def mavenApiUrl = 
"http://maven.apache.org/ref/${versions.maven}/maven-model/apidocs";
@@ -431,84 +151,4 @@ task javadocAll(type: Javadoc) {
     ext.entryPoint = "$destinationDir/index.html"
 }
 
-task checkstyleApi(type: Checkstyle) {
-    source javadocAll.source
-    configFile = new File(checkstyle.configDir, "checkstyle-api.xml")
-    classpath = files()
-    reports.xml.destination = file("$checkstyle.reportsDir/checkstyle-api.xml")
-}
-
-task distDocs(type: Docbook2Xhtml) {
-    dependsOn userguideAsciidoc
-    source new File(asciidocOutputDir, 'gettingStarted.xml')
-    destFile = new File(distDocsDir, 'getting-started.html')
-    stylesheetName = 'standaloneHtml.xsl'
-}
-
-task userguide {
-    dependsOn userguideHtml, userguideSingleHtml, userguidePdf
-    description = 'Generates the userguide'
-    group = 'documentation'
-}
-
-task editReleaseNotes() {
-    group = "release notes"
-    doLast {
-        
Class.forName("java.awt.Desktop").newInstance().edit(file("src/docs/release/notes.md"))
-    }
-}
-
-task releaseNotesMarkdown(type: PegDown) {
-    group = "release notes"
-    markdownFile = file("src/docs/release/notes.md")
-    destination = new File(buildDir, "release-notes-raw/release-notes.html")
-}
-
-task releaseNotes(type: Copy) {
-    group = "release notes"
-    ext.fileName = "release-notes.html"
-    into "$docsDir"
-    from releaseNotesMarkdown
-    jsoup.plugins "src/transforms/release-notes.gradle"
-    filter(ReplaceTokens, tokens: [version: project.version.toString(), 
baseVersion: rootProject.baseVersion])
-    ext.entryPoint = file("$docsDir/$fileName")
-}
-
-tasks.addRule("view«Doc Task Name» - Opens entry point") { String taskName ->
-    if (taskName.startsWith("view")) {
-        def realTaskName = (taskName - "view")
-        realTaskName = realTaskName[0].toLowerCase() + realTaskName[1..-1]
-        def task = tasks.findByName(realTaskName)
-        if (task && task.hasProperty("entryPoint")) {
-            tasks.create(taskName) {
-                dependsOn task
-                doLast {
-                    
Class.forName("java.awt.Desktop").newInstance().browse(file(task.entryPoint).toURI())
-                }
-            }
-        }
-    }
-}
-
 sourceSets.main.output.dir generatedResourcesDir, builtBy: defaultImports
-
-['test', 'java9Test'].each {
-    tasks[it].configure {
-        dependsOn releaseNotes
-        inputs.files releaseNotesMarkdown.markdownFile withPropertyName 
"releaseNotesSource" withPathSensitivity PathSensitivity.NONE
-        inputs.dir releaseNotes.destinationDir withPropertyName 
"releaseNotesRendered" withPathSensitivity PathSensitivity.NONE
-        inputs.property "systemProperties", [:]
-        systemProperty "org.gradle.docs.releasenotes.source", 
releaseNotesMarkdown.markdownFile
-        systemProperty "org.gradle.docs.releasenotes.rendered", new 
File(releaseNotes.destinationDir, releaseNotes.fileName)
-    }
-}
-
-task docs {
-    dependsOn javadocAll, userguide, distDocs, samplesDocs, dslHtml, 
releaseNotes
-    description = 'Generates all documentation'
-    group = 'documentation'
-}
-
-task docsZip(type: Zip) {
-    from project.outputs.docs
-}
-- 
2.17.2

++++++ 0016-Port-to-guava-20.0.patch ++++++
>From 24a404aaa3955528385398f15a32440f68670e89 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Sun, 12 Nov 2017 19:08:40 +0200
Subject: [PATCH 16/17] Port to guava 20.0

---
 gradle/dependencies.gradle                                   | 2 +-
 .../org/gradle/api/internal/CompositeDomainObjectSet.java    | 5 +++--
 .../gradle/api/internal/DefaultDomainObjectCollection.java   | 3 ++-
 .../rules/PreviousSuccessTaskStateChanges.java               | 3 ++-
 .../changedetection/state/DefaultFileCollectionSnapshot.java | 3 ++-
 .../OrderInsensitiveTaskFilePropertyCompareStrategy.java     | 3 +--
 .../state/TaskFilePropertyCompareStrategy.java               | 2 +-
 .../api/internal/tasks/CompositeTaskOutputPropertySpec.java  | 4 ++--
 .../org/gradle/api/internal/tasks/DefaultTaskOutputs.java    | 3 ++-
 .../plugin/management/internal/DefaultPluginRequests.java    | 3 ++-
 10 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index bbf10217798..a6148dfa088 100755
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -94,7 +94,7 @@ libraries.commons_httpclient = 
dependencies.module('org.apache.httpcomponents:ht
 libraries += [
     jatl: 'com.googlecode.jatl:jatl:0.2.2',
     dom4j: 'dom4j:dom4j:1.6.1@jar',
-    guava: 'com.google.guava:guava-jdk5:17.0@jar',
+    guava: 'com.google.guava:guava:20.0@jar',
     kryo: 'com.esotericsoftware.kryo:kryo:2.20',
     jsr305: 'com.google.code.findbugs:jsr305:1.3.9@jar',
     groovy: "org.codehaus.groovy:groovy-all:${versions.groovy}",
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/CompositeDomainObjectSet.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/CompositeDomainObjectSet.java
index ee7c1244b51..4619c7d5cd1 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/CompositeDomainObjectSet.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/CompositeDomainObjectSet.java
@@ -24,6 +24,7 @@ import org.gradle.api.specs.Spec;
 import org.gradle.internal.Actions;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -109,7 +110,7 @@ public class CompositeDomainObjectSet<T> extends 
DelegatingDomainObjectSet<T> im
     public Iterator<T> iterator() {
         DomainObjectCompositeCollection store = getStore();
         if (store.isEmpty()) {
-            return Iterators.emptyIterator();
+            return Collections.emptyIterator();
         }
         return SetIterator.of(store);
 
@@ -190,7 +191,7 @@ public class CompositeDomainObjectSet<T> extends 
DelegatingDomainObjectSet<T> im
         @SuppressWarnings("unchecked")
         public Iterator<T> iterator() {
             if (store.isEmpty()) {
-                return Iterators.emptyIterator();
+                return Collections.emptyIterator();
             }
             if (store.size() == 1) {
                 return (Iterator<T>) store.get(0).iterator();
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/DefaultDomainObjectCollection.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/DefaultDomainObjectCollection.java
index 90d89d50866..5bd7f0abd9f 100755
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/DefaultDomainObjectCollection.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/DefaultDomainObjectCollection.java
@@ -32,6 +32,7 @@ import org.gradle.util.ConfigureUtil;
 import java.util.AbstractCollection;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 
 public class DefaultDomainObjectCollection<T> extends AbstractCollection<T> 
implements DomainObjectCollection<T>, WithEstimatedSize {
@@ -107,7 +108,7 @@ public class DefaultDomainObjectCollection<T> extends 
AbstractCollection<T> impl
 
     public Iterator<T> iterator() {
         if (constantTimeIsEmpty()) {
-            return Iterators.emptyIterator();
+            return Collections.emptyIterator();
         }
         return new IteratorImpl(getStore().iterator());
     }
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/rules/PreviousSuccessTaskStateChanges.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/rules/PreviousSuccessTaskStateChanges.java
index c432c33664d..82e3a878a18 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/rules/PreviousSuccessTaskStateChanges.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/rules/PreviousSuccessTaskStateChanges.java
@@ -21,6 +21,7 @@ import org.gradle.api.internal.TaskInternal;
 import org.gradle.api.internal.changedetection.state.TaskExecution;
 
 import javax.annotation.Nullable;
+import java.util.Collections;
 import java.util.Iterator;
 
 public class PreviousSuccessTaskStateChanges implements TaskStateChanges {
@@ -38,7 +39,7 @@ public class PreviousSuccessTaskStateChanges implements 
TaskStateChanges {
     @Override
     public Iterator<TaskStateChange> iterator() {
         if (previousExecution == null || previousExecution.isSuccessful()) {
-            return Iterators.emptyIterator();
+            return Collections.emptyIterator();
         } else {
             return Iterators.singletonIterator(PREVIOUS_FAILURE);
         }
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/DefaultFileCollectionSnapshot.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/DefaultFileCollectionSnapshot.java
index e8705de8f06..a0f0af32ca3 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/DefaultFileCollectionSnapshot.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/DefaultFileCollectionSnapshot.java
@@ -36,6 +36,7 @@ import org.gradle.internal.serialize.HashCodeSerializer;
 
 import javax.annotation.Nullable;
 import java.io.File;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -91,7 +92,7 @@ public class DefaultFileCollectionSnapshot implements 
FileCollectionSnapshot {
     @Override
     public Iterator<TaskStateChange> 
iterateContentChangesSince(FileCollectionSnapshot oldSnapshot, String fileType, 
boolean includeAdded) {
         if (includeAdded && hashCode != null && 
getHash().equals(oldSnapshot.getHash())) {
-            return Iterators.emptyIterator();
+            return Collections.emptyIterator();
         }
         return compareStrategy.iterateContentChangesSince(snapshots, 
oldSnapshot.getSnapshots(), fileType, pathIsAbsolute, includeAdded);
     }
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/OrderInsensitiveTaskFilePropertyCompareStrategy.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/OrderInsensitiveTaskFilePropertyCompareStrategy.java
index c885de8df78..3fdf6e3cf34 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/OrderInsensitiveTaskFilePropertyCompareStrategy.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/OrderInsensitiveTaskFilePropertyCompareStrategy.java
@@ -17,7 +17,6 @@
 package org.gradle.api.internal.changedetection.state;
 
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.Iterators;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.MultimapBuilder;
@@ -143,7 +142,7 @@ class OrderInsensitiveTaskFilePropertyCompareStrategy 
implements TaskFilePropert
                 // Create a single iterator to use for all of the still 
unaccounted files
                 if (unaccountedForPreviousSnapshotsIterator == null) {
                     if (unaccountedForPreviousSnapshots.isEmpty()) {
-                        unaccountedForPreviousSnapshotsIterator = 
Iterators.emptyIterator();
+                        unaccountedForPreviousSnapshotsIterator = 
Collections.emptyIterator();
                     } else {
                         List<Entry<NormalizedFileSnapshot, 
IncrementalFileSnapshotWithAbsolutePath>> entries = 
Lists.newArrayList(unaccountedForPreviousSnapshots.entries());
                         Collections.sort(entries, ENTRY_COMPARATOR);
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/TaskFilePropertyCompareStrategy.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/TaskFilePropertyCompareStrategy.java
index fc58acae02a..3f3fda9cf3e 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/TaskFilePropertyCompareStrategy.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/changedetection/state/TaskFilePropertyCompareStrategy.java
@@ -27,7 +27,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import static com.google.common.collect.Iterators.emptyIterator;
+import static java.util.Collections.emptyIterator;
 import static com.google.common.collect.Iterators.singletonIterator;
 
 public enum TaskFilePropertyCompareStrategy {
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/tasks/CompositeTaskOutputPropertySpec.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/tasks/CompositeTaskOutputPropertySpec.java
index 36b6a56916e..bc6a47cf7ae 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/tasks/CompositeTaskOutputPropertySpec.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/tasks/CompositeTaskOutputPropertySpec.java
@@ -17,7 +17,6 @@
 package org.gradle.api.internal.tasks;
 
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import org.gradle.api.NonNullApi;
 import org.gradle.api.internal.file.FileCollectionInternal;
@@ -28,6 +27,7 @@ import 
org.gradle.api.internal.file.collections.DirectoryFileTree;
 import org.gradle.util.DeferredUtil;
 
 import java.io.File;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -56,7 +56,7 @@ public class CompositeTaskOutputPropertySpec extends 
AbstractTaskOutputPropertyS
     public Iterator<TaskOutputFilePropertySpec> resolveToOutputProperties() {
         Object unpackedPaths = DeferredUtil.unpack(paths);
         if (unpackedPaths == null) {
-            return Iterators.emptyIterator();
+            return Collections.emptyIterator();
         } else if (unpackedPaths instanceof Map) {
             final Iterator<? extends Map.Entry<?, ?>> iterator = ((Map<?, ?>) 
unpackedPaths).entrySet().iterator();
             return new AbstractIterator<TaskOutputFilePropertySpec>() {
diff --git 
a/subprojects/core/src/main/java/org/gradle/api/internal/tasks/DefaultTaskOutputs.java
 
b/subprojects/core/src/main/java/org/gradle/api/internal/tasks/DefaultTaskOutputs.java
index 8920be58787..fb9cfa9a363 100644
--- 
a/subprojects/core/src/main/java/org/gradle/api/internal/tasks/DefaultTaskOutputs.java
+++ 
b/subprojects/core/src/main/java/org/gradle/api/internal/tasks/DefaultTaskOutputs.java
@@ -41,6 +41,7 @@ import org.gradle.api.tasks.TaskOutputFilePropertyBuilder;
 
 import javax.annotation.Nullable;
 import java.io.File;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -203,7 +204,7 @@ public class DefaultTaskOutputs implements 
TaskOutputsInternal {
                         if (propertySpec instanceof 
CacheableTaskOutputFilePropertySpec) {
                             File outputFile = 
((CacheableTaskOutputFilePropertySpec) propertySpec).getOutputFile();
                             if (outputFile == null) {
-                                return Iterators.emptyIterator();
+                                return Collections.emptyIterator();
                             }
                         }
                         return 
Iterators.singletonIterator((TaskOutputFilePropertySpec) propertySpec);
diff --git 
a/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequests.java
 
b/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequests.java
index 6e7cf364a0a..c43282a1e72 100644
--- 
a/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequests.java
+++ 
b/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequests.java
@@ -18,6 +18,7 @@ package org.gradle.plugin.management.internal;
 
 import com.google.common.collect.Iterators;
 
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -60,7 +61,7 @@ public class DefaultPluginRequests implements PluginRequests {
 
         @Override
         public Iterator<PluginRequestInternal> iterator() {
-            return Iterators.emptyIterator();
+            return Collections.emptyIterator();
         }
     }
 }
-- 
2.17.2

++++++ 0017-Set-core-api-source-level-to-8.patch ++++++
>From 3f55c106c3ba0c138c1eaa7bb2054e4aa549302e Mon Sep 17 00:00:00 2001
From: Michael Simacek <msima...@redhat.com>
Date: Mon, 26 Mar 2018 14:07:20 +0200
Subject: [PATCH 17/17] Set core-api source level to 8

---
 subprojects/core-api/core-api.gradle | 2 +-
 subprojects/core/core.gradle         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/subprojects/core-api/core-api.gradle 
b/subprojects/core-api/core-api.gradle
index c90a0b48eec..587729f5da2 100644
--- a/subprojects/core-api/core-api.gradle
+++ b/subprojects/core-api/core-api.gradle
@@ -15,7 +15,7 @@
  */
 apply plugin: 'java-library'
 
-sourceCompatibility = javaVersion.java9Compatible ? 1.6 : 1.5
+sourceCompatibility = 8
 
 dependencies {
     api project(":baseServices")
diff --git a/subprojects/core/core.gradle b/subprojects/core/core.gradle
index 9ca47b639c5..691ec477805 100755
--- a/subprojects/core/core.gradle
+++ b/subprojects/core/core.gradle
@@ -16,7 +16,7 @@
 apply plugin: 'java-library'
 apply from: "$rootDir/gradle/taskProperties.gradle"
 
-sourceCompatibility = javaVersion.java9Compatible ? 1.6 : 1.5
+sourceCompatibility = 8
 
 configurations {
     reports
-- 
2.17.2

++++++ _constraints ++++++
<constraints>
  <hardware>
    <physicalmemory>
      <size unit="M">4096</size>
    </physicalmemory>
    <disk>
      <size unit="G">3</size>
    </disk>
  </hardware>
</constraints> 
++++++ all-released-versions.json ++++++
++++ 3183 lines (skipped)

++++++ gradle-font-metadata.xml ++++++
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/2.0.0";>
  <artifacts>
    <artifact>
      <groupId>lato</groupId>
      <artifactId>bold</artifactId>
      <extension>ttf</extension>
      <classifier>DvlFBScY1r-FMtZSYIYoYw</classifier>
      <version>6</version>
      <path>/usr/share/fonts/truetype/Lato-Bold.ttf</path>
    </artifact>
    <artifact>
      <groupId>lato</groupId>
      <artifactId>bold-italic</artifactId>
      <extension>ttf</extension>
      <classifier>HkF_qI1x_noxlxhrhMQYEKCWcynf_cDxXwCLxiixG1c</classifier>
      <version>6</version>
      <path>/usr/share/fonts/truetype/Lato-BoldItalic.ttf</path>
    </artifact>
    <artifact>
      <groupId>lato</groupId>
      <artifactId>regular</artifactId>
      <extension>ttf</extension>
      <classifier>v0SdcGFAl2aezM9Vq_aFTQ</classifier>
      <version>6</version>
      <path>/usr/share/fonts/truetype/Lato-Regular.ttf</path>
    </artifact>
    <artifact>
      <groupId>lato</groupId>
      <artifactId>regular-italic</artifactId>
      <extension>ttf</extension>
      <classifier>LqowQDslGv4DmUBAfWa2Vw</classifier>
      <version>6</version>
      <path>/usr/share/fonts/truetype/Lato-Italic.ttf</path>
    </artifact>
    <artifact>
      <groupId>ubuntumono</groupId>
      <artifactId>bold</artifactId>
      <extension>ttf</extension>
      <classifier>ceqTZGKHipo8pJj4molytp_TkvowlIOtbR7ePgFOpF4</classifier>
      <version>3</version>
      <path>/usr/share/fonts/truetype/LiberationMono-Bold.ttf</path>
    </artifact>
    <artifact>
      <groupId>ubuntumono</groupId>
      <artifactId>bold-italic</artifactId>
      <extension>ttf</extension>
      <classifier>n_d8tv_JOIiYyMXR4eaV9WsGzsqhEorxQDpu60nfWEc</classifier>
      <version>3</version>
      <path>/usr/share/fonts/truetype/LiberationMono-BoldItalic.ttf</path>
    </artifact>
    <artifact>
      <groupId>ubuntumono</groupId>
      <artifactId>regular</artifactId>
      <extension>ttf</extension>
      <classifier>ViZhet7Ak-LRXZMXzuAfkZ0EAVxt0G0biEntp43Qt6E</classifier>
      <version>3</version>
      <path>/usr/share/fonts/truetype/LiberationMono-Regular.ttf</path>
    </artifact>
    <artifact>
      <groupId>ubuntumono</groupId>
      <artifactId>regular-italic</artifactId>
      <extension>ttf</extension>
      <classifier>KAKuHXAHZOeECOWAHsRKA-LrC4Du4e_yfTJ8Ol60xk0</classifier>
      <version>3</version>
      <path>/usr/share/fonts/truetype/LiberationMono-Italic.ttf</path>
    </artifact>
  </artifacts>
</metadata>
++++++ gradle-jquery-metadata.xml ++++++
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/2.0.0";>
  <artifacts>
    <artifact>
      <groupId>jquery</groupId>
      <artifactId>jquery.min</artifactId>
      <extension>js</extension>
      <version>2.1.1</version>
      <!-- Current build bundles jquery. For now point it to /dev/null to avoid 
bundling. -->
      <!-- <path>/usr/share/javascript/jquery/2/jquery.min.js</path> -->
      <path>/dev/null</path>
    </artifact>
  </artifacts>
</metadata>
++++++ gradle-launcher.sh.in ++++++
#!@BASH@

set -e
ulimit -n $(ulimit -H -n)

# Source system prefs
if [ -f /etc/java/gradle.conf ] ; then
  . /etc/java/gradle.conf
fi

# Source user prefs
if [ -f $HOME/.gradlerc ] ; then
  . $HOME/.gradlerc
fi

. /usr/share/java-utils/java-functions
set_jvm
set_javacmd

set_classpath gradle/gradle-launcher gradle/gradle-core-api gradle/gradle-core 
gradle/gradle-base-services

# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the 
shell quoting and substitution rules
function splitJvmOpts() {
    JVM_OPTS=("$@")
}
eval splitJvmOpts $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=gradle"

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" 
org.gradle.launcher.GradleMain "$@"
++++++ gradle-man.txt ++++++
gradle(1)
=========
:doctype:       manpage
:man source:    GRADLE
:man manual:    Gradle

NAME
----
gradle - build automation tool

SYNOPSIS
--------
*gradle* [option...] [task...]

DESCRIPTION
-----------
Gradle is build automation evolved. Gradle can automate the building,
testing, publishing, deployment and more of software packages or other
types of projects such as generated static websites, generated
documentation or indeed anything else.

Gradle combines the power and flexibility of Ant with the dependency
management and conventions of Maven into a more effective way to
build. Powered by a Groovy DSL and packed with innovation, Gradle
provides a declarative way to describe all kinds of builds through
sensible defaults. Gradle is quickly becoming the build system of
choice for many open source projects, leading edge enterprises and
legacy automation challenges.

OPTIONS
-------
*-?, -h, --help*::
     Shows help message.

*-a, --no-rebuild*::
     Do not rebuild project dependencies.

*-b, --build-file*::
     Specifies the build file.

*-c, --settings-file*::
     Specifies the settings file.

*--configure-on-demand*::
     Only relevant projects are configured in this build run. This means faster 
build for large multi-project builds. [incubating]

*--console*::
     Specifies which type of console output to generate. Values are *plain*, 
*auto* (default) or *rich*.

*--continue*::
     Continues task execution after a task failure.

*-D, --system-prop*::
     Set system property of the JVM (e.g. *-Dmyprop=myvalue*).

*-d, --debug*::
     Log in debug mode (includes normal stacktrace).

*--daemon*::
     Uses the Gradle daemon to run the build. Starts the daemon if not running.

*--foreground*::
     Starts the Gradle daemon in the foreground. [incubating]

*-g, --gradle-user-home*::
     Specifies the gradle user home directory.

*--gui*::
     Launches the Gradle GUI.

*-I, --init-script*::
     Specifies an initialization script.

*-i, --info*::
     Set log level to info.

*-m, --dry-run*::
     Runs the builds with all task actions disabled.

*--max-workers*::
     Configure the number of concurrent workers Gradle is allowed to use. 
[incubating]

*--no-color*::
     Do not use color in the console output. [deprecated - use
     *--console=plain* instead]

*--no-daemon*::
     Do not use the Gradle daemon to run the build.

*--offline*::
     The build should operate without accessing network resources.

*-P, --project-prop*::
     Set project property for the build script (e.g. *-Pmyprop=myvalue*).

*-p, --project-dir*::
     Specifies the start directory for Gradle. Defaults to current directory.

*--parallel*::
     Build projects in parallel. Gradle will attempt to determine the optimal 
number of executor threads to use. [incubating]

*--parallel-threads*::
     Build projects in parallel, using the specified number of executor
     threads. [deprecated - Please use *--parallel*, optionally in
     conjunction with *--max-workers*.] [incubating]

*--profile*::
     Profiles build execution time and generates a report in the
     *<build_dir>/reports/profile* directory.

*--project-cache-dir*::
     Specifies the project-specific cache directory. Defaults to
     *.gradle* in the root project directory.

*-q, --quiet*::
     Log errors only.

*--recompile-scripts*::
     Force build script recompiling.

*--refresh-dependencies*::
     Refresh the state of dependencies.

*--rerun-tasks*::
     Ignore previously cached task results.

*-S, --full-stacktrace*::
     Print out the full (very verbose) stacktrace for all exceptions.

*-s, --stacktrace*::
     Print out the stacktrace for all exceptions.

*--stop*::
     Stops the Gradle daemon if it is running.

*-t, --continuous*::
     Enables continuous build. Gradle does not exit and will re-execute tasks 
when task file inputs change. [incubating]

*-u, --no-search-upward*::
     Don't search in parent folders for a *settings.gradle* file.

*-v, --version*::
     Print version info.

*-x, --exclude-task*::
     Specify a task to be excluded from execution.

SEE ALSO
--------
Official documentation: http://gradle.org/documentation/
++++++ gradle.desktop ++++++
[Desktop Entry]
Name=Gradle
GenericName=Build automation tool
Exec=gradle --gui
Icon=gradle
Terminal=false
Type=Application
Categories=Development;Building;

Reply via email to