{"id":15044187,"url":"https://github.com/gradle/apachecon2021","last_synced_at":"2025-09-29T17:31:32.487Z","repository":{"id":46819990,"uuid":"406900141","full_name":"gradle/apachecon2021","owner":"gradle","description":"Instructions and code repository for the ApacheCon 2021 Gradle Virtual Booth Event","archived":true,"fork":false,"pushed_at":"2021-09-23T15:51:18.000Z","size":797,"stargazers_count":2,"open_issues_count":0,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-09-22T19:04:50.059Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gradle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-15T19:27:32.000Z","updated_at":"2024-08-26T18:05:15.000Z","dependencies_parsed_at":"2022-09-23T04:51:42.947Z","dependency_job_id":null,"html_url":"https://github.com/gradle/apachecon2021","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gradle%2Fapachecon2021","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gradle%2Fapachecon2021/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gradle%2Fapachecon2021/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gradle%2Fapachecon2021/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gradle","download_url":"https://codeload.github.com/gradle/apachecon2021/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219867296,"owners_count":16554408,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-24T20:50:11.212Z","updated_at":"2025-09-29T17:31:27.081Z","avatar_url":"https://github.com/gradle.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build Speed Challenge Banner](challenge_banner.gif)\n\n# ApacheCon 2021 Maven Build Speed Challenge\n## How It Works\n\nRoughly every two hours throughout the ApacheCon 2021 event, the Gradle Enterprise team will host a contest in the Gradle expo booth in HopIn.  Contestants will get a chance to speed up their Maven builds by trying out our Maven Build Cache (https://docs.gradle.com/enterprise/maven-build-cache/) and can verify their results using our free Maven Build Scan(tm)(https://scans.gradle.com/).\n\nTo participate, all you'll need to do is add the free Gradle Enterprise extension to the Maven project of your choice and connect to our contest server. You'll run a cached build, and post a screenshot of your cache savings from the free Build Scan(tm) interface.  The user with the highest cache avoidance savings % per-round will win a fantastic collection of Gradle swag -- that's right, prizes every round!\n\nFeel free to participate as many times as you want, but, once you've won a single challenge you won't be eligible to win another.\n\n\n### Step 1\n\nStart with the Maven project of your choice.  If you'd rather not use a real project that you are working on, feel free to clone an open source one!  Note that project details such as dependencies, console logs, and failure messages will be captured during the scan. Here's everything that the scan will pick up:  (https://docs.gradle.com/enterprise/gradle-plugin/#captured_information)\n\nHere are some alternatives, but remember any Maven project will do!\n\n- Maven Multi-Module Example (https://github.com/jitpack/maven-modular)\n- Spring Boot Apache Camel Archetype:\n```\nmvn archetype:generate \\\n  -DarchetypeGroupId=org.apache.camel.archetypes \\\n  -DarchetypeArtifactId=camel-archetype-spring-boot\n```\n- Maven Build Scan Quickstart (https://github.com/gradle/maven-build-scan-quickstart)\n\nCreate a hidden directory (if it doesn't already exist) in the project root called .mvn.  You can use your IDE.  Alternatively, in Windows you can use the File Explorer, or for Linux/Mac/UNIX you can run:\n\n\u003emkdir .mvn\n\n### Step 2\n\nCreate a file called extensions.xml inside of the .mvn directory, if it doesn't already exist, and add the following code snippet:\n\n```\n\u003cextensions\u003e\n    \u003cextension\u003e\n        \u003cgroupId\u003ecom.gradle\u003c/groupId\u003e\n        \u003cartifactId\u003egradle-enterprise-maven-extension\u003c/artifactId\u003e\n        \u003cversion\u003e1.11\u003c/version\u003e\n    \u003c/extension\u003e\n\u003c/extensions\u003e\n```\n\nIf the file already exists, just add the 'extension' XML block to whatever is already there:\n\n```\n\u003cextensions\u003e\n\n   ...\n\n    \u003cextension\u003e\n        \u003cgroupId\u003ecom.gradle\u003c/groupId\u003e\n        \u003cartifactId\u003egradle-enterprise-maven-extension\u003c/artifactId\u003e\n        \u003cversion\u003e1.11\u003c/version\u003e\n    \u003c/extension\u003e\n\n  ...\n\n\u003c/extensions\u003e\n```\nYou may use the sample extensions.xml file included in this project if you'd like.\n\n### Step 3\n\nCreate a configuration file for the plugin (a file called gradle-enterprise.xml inside of the .mvn directory) and add the code snippet below.  This file contains temporary credentials which will work for the duration of ApacheCon against our public Gradle Enterprise instance.  Note that this instance will not be available after the show, but you can always contact us to set up another one!\n\n```\n\u003cgradleEnterprise\u003e\n    \u003cserver\u003e\n        \u003curl\u003ehttps://events.gradle.com/\u003c/url\u003e\n    \u003c/server\u003e\n    \u003cbuildCache\u003e\n        \u003cremote\u003e\n            \u003cstoreEnabled\u003efalse\u003c/storeEnabled\u003e\n            \u003cserver\u003e\n                \u003ccredentials\u003e\n                    \u003cusername\u003eapachecon2021\u003c/username\u003e\n                    \u003cpassword\u003eap4c#e474c43!\u003c/password\u003e\n                \u003c/credentials\u003e\n            \u003c/server\u003e\n        \u003c/remote\u003e\n    \u003c/buildCache\u003e\n\u003c/gradleEnterprise\u003e\n```\n\n### Step 4\n\nRun the first build with:\n\n\u003emvn clean verify\n\nThe first build will get a baseline score, and will publish a Build Scan(tm) for you to view.  Feel free to check it out!  For the contest, the most important screen will be Performance -\u003e Goal execution -\u003e Avoidance Savings:\n\n![Build Scan Avoidance Savings](build-scan-performance-goals-0-avoid.jpg)\n\nThe first time you run it, nothing will have been cached, so your avoidance will be 0% on the first pass.\n\n### Step 5\n  \nRun the build again, using the same command:\n\n\u003emvn clean verify\n\nThe second will run the same build again, but will pull reusable entries from the Maven Build Cache.  This time you should see significant avoidance savings!\n\n![Build Scan Avoidance Savings](build-scan-performance-goals.jpg)\n\n### Step 6\n\nTake a screenshot of your scan with the Avoidance savings percentage showing and post it to our **#sponsor-gradle** (https://apachecon.slack.com/archives/C02EVP12THA) channel in the ApacheCon Slack.  If you'd rather not post to the slack, you can also email the screenshot to us at: \n\u003etraining-team@gradle.com  \n\nAn hour after the contest begins, the participant with the highest Avoidance savings will win!  Winners will be contacted via the HopIn platform to arrange shipping of prizes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgradle%2Fapachecon2021","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgradle%2Fapachecon2021","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgradle%2Fapachecon2021/lists"}