{"id":15222165,"url":"https://github.com/googlecloudplatform/google-cloud-eclipse","last_synced_at":"2026-04-02T01:15:59.452Z","repository":{"id":5555279,"uuid":"53369484","full_name":"GoogleCloudPlatform/google-cloud-eclipse","owner":"GoogleCloudPlatform","description":"Google Cloud Platform plugin for Eclipse","archived":false,"fork":false,"pushed_at":"2025-06-25T17:59:58.000Z","size":14143,"stargazers_count":86,"open_issues_count":164,"forks_count":48,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-06-25T18:45:41.396Z","etag":null,"topics":["app-engine","dataflow","eclipse","eclipse-ide","eclipse-neon","eclipse-oxygen","eclipse-plugin","google","google-cloud-platform","google-cloud-sdk","google-cloud-tools"],"latest_commit_sha":null,"homepage":"","language":"Java","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/GoogleCloudPlatform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-08T00:30:03.000Z","updated_at":"2025-06-25T18:00:04.000Z","dependencies_parsed_at":"2024-06-20T17:18:07.462Z","dependency_job_id":"60e2211e-958a-4051-9891-9a3463f61766","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-eclipse","commit_stats":null,"previous_names":[],"tags_count":79,"template":false,"template_full_name":null,"purl":"pkg:github/GoogleCloudPlatform/google-cloud-eclipse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fgoogle-cloud-eclipse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fgoogle-cloud-eclipse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fgoogle-cloud-eclipse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fgoogle-cloud-eclipse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoogleCloudPlatform","download_url":"https://codeload.github.com/GoogleCloudPlatform/google-cloud-eclipse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fgoogle-cloud-eclipse/sbom","scorecard":{"id":58142,"data":{"date":"2025-08-11","repo":{"name":"github.com/GoogleCloudPlatform/google-cloud-eclipse","commit":"e89c2d6495c45f36d17b5a0518de567ce89c317e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/eclipse-2018-09-java11.yml:1","Warn: no topLevel permission defined: .github/workflows/eclipse-2018-09-java8.yml:1","Warn: no topLevel permission defined: .github/workflows/eclipse-2018-12-java11.yml:1","Warn: no topLevel permission defined: .github/workflows/eclipse-2019-09-java11.yml:1","Warn: no topLevel permission defined: .github/workflows/eclipse-2019-12-java11.yml:1","Warn: no topLevel permission defined: .github/workflows/eclipse-2020-03-java11.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java11.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java11.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java11.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java11.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java11.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java11.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java8.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java8.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java8.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java8.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java8.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java8.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java8.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java8.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-09-java8.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-09-java8.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-12-java11.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-12-java11.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-12-java11.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-12-java11.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/eclipse-2018-12-java11.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2018-12-java11.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2018-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-09-java11.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-09-java11.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-09-java11.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-09-java11.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/eclipse-2019-09-java11.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-09-java11.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-09-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-12-java11.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-12-java11.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-12-java11.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-12-java11.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/eclipse-2019-12-java11.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2019-12-java11.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2019-12-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2020-03-java11.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2020-03-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2020-03-java11.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2020-03-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2020-03-java11.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2020-03-java11.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/eclipse-2020-03-java11.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2020-03-java11.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/eclipse-2020-03-java11.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/GoogleCloudPlatform/google-cloud-eclipse/eclipse-2020-03-java11.yml/master?enable=pin","Info:   0 out of  24 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 1 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-4265-ccf5-phj5","Warn: Project is vulnerable to: GHSA-4g9r-vxhx-9pgx","Warn: Project is vulnerable to: GHSA-7r82-7xv7-xcpj"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T01:09:49.239Z","repository_id":5555279,"created_at":"2025-08-15T01:09:49.239Z","updated_at":"2025-08-15T01:09:49.239Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279970388,"owners_count":26252761,"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","status":"online","status_checked_at":"2025-10-19T02:00:07.647Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["app-engine","dataflow","eclipse","eclipse-ide","eclipse-neon","eclipse-oxygen","eclipse-plugin","google","google-cloud-platform","google-cloud-sdk","google-cloud-tools"],"created_at":"2024-09-28T15:10:53.162Z","updated_at":"2025-10-20T01:30:45.992Z","avatar_url":"https://github.com/GoogleCloudPlatform.png","language":"Java","readme":"[![stable](http://badges.github.io/stability-badges/dist/stable.svg)](http://github.com/badges/stability-badges)\n\n**Deprecation Note**: Cloud Tools for Eclipse is only compatible with the App Engine Java 8 runtime, which will reach the [end of support](https://cloud.google.com/appengine/docs/standard/lifecycle/runtime-lifecycle#end_of_support)\non January 31, 2024. After this date, your existing Java 8 applications will continue\nto run and receive traffic. However, you cannot deploy new or update existing applications\nthat use runtimes [after their end of support date](https://cloud.google.com/appengine/docs/standard/lifecycle/support-schedule#java).\nWe recommend that you [migrate to the latest supported version of Java](https://cloud.google.com/appengine/migration-center/standard/migrate-to-second-gen/java-differences).\n\nThis project provides an Eclipse plugin for building, debugging, and deploying Google Cloud Platform applications.\n\n[End user documentation and installation instructions can be found on cloud.google.com.](https://cloud.google.com/eclipse/docs/?utm_source=github\u0026utm_medium=google-cloud-eclipse\u0026utm_campaign=ToolsforEclipse)\n\n_TL;DR_: `mvn package` should\ngenerate a p2-accessible repository in `gcp-repo/target/repository`.\n\n# Development\n\nThis project is built using _Maven Tycho_, a set of extensions to\nMaven for building Eclipse bundles and features.\n\n## Requirements\n\n1. The [Google Cloud SDK](https://cloud.google.com/sdk/); install this somewhere on your file system and add it to your path.\n\n2. Install the App Engine Java components:\n\n   `$ gcloud components install app-engine-java`\n\n3. JDK 8\n\n4. The [Eclipse IDE](https://www.eclipse.org/downloads/eclipse-packages/).\n   It's easiest to use the _Eclipse IDE for Java EE Developers_ package. You must use\n   Eclipse 4.8 - 4.21 (versions since 4.22 are currently not supported).  We use _target platforms_ to support building\n   for earlier versions of Eclipse.  You also need the following:\n\n   1. The [M2Eclipse plugin](http://www.eclipse.org/m2e/) (also called m2e) is\n      required to import the projects into Eclipse.  M2Eclipse is included in\n      [several packages](https://www.eclipse.org/downloads/compare.php?release=photon),\n      such as the _Eclipse IDE for Java EE Developers_ package.\n\n   2. The [m2e connector for maven-dependency-plugin](https://github.com/ianbrandt/m2e-maven-dependency-plugin)\n      should be installed from `http://ianbrandt.github.io/m2e-maven-dependency-plugin/`.\n      This connector should be prompted for by M2Eclipse.  If not, use\n      _Preferences \u003e Maven \u003e Discovery \u003e Open Catalog_ and search\n      for _Dependency_ and install.\n\n   3. The [Google Java Format plugin for Eclipse](https://github.com/google/google-java-format/).\n      Download the [latest version](https://github.com/google/google-java-format/releases/)\n      and place the jar into your Eclipse installation's `dropins/` directory\n      (on MacOS this may be in `Eclipse.app/Contents/Eclipse/dropins/`).\n\n5. Maven 3.5.0 or later.  Although m2eclipse is bundled with its own Maven install,\n   Maven is necessary to test command-line builds.\n\n6. git (optional: you can use EGit from within Eclipse instead)\n\n7. Clone the project to a local directory using `git clone\n   https://github.com/GoogleCloudPlatform/google-cloud-eclipse.git`.\n\n## Running Tests\n\nIf you're using Goobuntu, first point JAVA_HOME at a stock OpenJDK, not at the Google JDK:\n\n```sh\n$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\n```\n\nIf all you want is to run tests, just do `mvn verify`.\n\nHowever, the integration tests will interfere with your display, disrupt your using your computer, and likely fail if you touch the screen while the integration tests are running. A nice solution on Unix-like systems is to do `xvfb-run mvn verify`. (Install [Xvfb](https://linux.die.net/man/1/xvfb) if necessary.) `xvfb-run` will use a virtual display, and you and the tests will not be disrupted.\n\n## Configuring Maven/Tycho Builds\n\nThe plugin is built using Maven/Tycho and targeted to Java 8.\n\nThe tests need to find the Google Cloud SDK.  You can either:\n\n  1. Place the _SDK_`/bin` directory on your `PATH`\n  2. Set `GOOGLE_CLOUD_SDK_HOME` to point to your SDK\n\n### Changing the Eclipse Platform compilation and testing target\n\nBy default, the build is targeted against Eclipse `2018-09` (4.9).\nYou can explicitly set the `eclipse.target` property to `2018-12` (4.10).\n```\n$ mvn -Declipse.target=2018-12 package\n```\n\n### Adding a new bundle/fragment\n\nWe normally put production code into a bundle and tests as a fragment hosted\nby that bundle, put under the `plugins/` directory.\nFor now we have been committing both the `pom.xml` and Eclipse's\n`.project`, `.classpath`, and `.settings/` files.  We have a master set \nof project settings in [`eclipse/settings`](eclipse/settings/); see the\n[`README.md`](eclipse/settings/README.md) for more details.\n\nOur CI process is configured to run our tests with JaCoCo, which requires\nsome additional configuration to add new bundles and fragments\nin `build/jacoco/`.\n\n\n## Import into Eclipse\n\nWe pull in some dependencies directly from Maven-style repositories,\nsuch as Maven Central and the Sonatype staging repository, which isn't\ndirectly supported within Eclipse.  We have a few hoops to jump\nthrough to set up a working development environment.\n\n### Assemble the IDE Target Platform\n\nThe Eclipse IDE and Tycho both use a _Target Platform_ to manage\nthe dependencies for the source bundles and features under development.\nAlthough Tycho can pull dependencies directly from Maven-style\nrepositories (like [Maven Central](https://search.maven.org)), Eclipse\ncannot.  So we use Tycho to cobble together\na target platform suitable for the Eclipse IDE with the following command.\n```\n$ (cd eclipse; mvn -Pide-target-platform package)        # may want -Declipse.target=XXX\n```\nThis command creates a local copy of the\ntarget platform, including any Maven dependencies, into\n[`eclipse/ide-target-platform/target/repository`](eclipse/ide-target-platform/target/repository).\nYou will use this repository to create a target platform within the IDE,\nas described below.\n\nThe Eclipse version used for the target platform is affected by the\n`eclipse.target` property, described below.\n\nYou must regenerate the target platform and reconfigure the IDE's\ntarget platform whenever dependencies are updated.\n\n### Steps to import into the Eclipse IDE\n\n\n1. Setup JDK 8 in Eclipse (this may already be set up by Eclipse's JRE/JDK auto-discovery)\n\n   1. Select `Window/Preferences` (on Mac `Eclipse/Preferences`).\n\n   2. Under `Java/Installed JREs` click `Add`.\n\n   3. Select Standard VM and click `Next`.\n\n   4. Select the folder that contains the JDK 8 installation by clicking\n      `Directory`.\n\n   5. Click `Finish`.\n\n   6. Select `Java/Installed JREs/Execution Environments` page.\n\n   7. Click on `JavaSE-1.8` in the list on the left under `Execution\n      Environments:`.\n\n   8. The JDK just added should show up in the list on the right along with other\n      installed JDKs/JREs. Set the checkbox next to the JDK 8 added in the\n      previous steps to mark it as compatible with the `JavaSE-1.8` execution\n      environment.\n\n   9. Click `OK`.\n\n2. Set up the Target Platform: you will need to repeat this process whenever\n   items are changed in the target platform, such as a new release of the\n   `appengine-plugins-core`.\n\n   1. As described above, you must first build the target platform with Maven:\n\n      `$ (cd eclipse; mvn -Pide-target-platform package)`\n\n   2. Open the `Preferences` dialog, go to `Plug-in Development` \u003e `Target Platform`.\n\n   3. Click `Add...` \u003e `Nothing` to create a new Target Platform.\n\n   4. Name it `GCP IDE Target Platform`.\n\n   5. Select `Add` \u003e `Software Site`.\n\n   6. Select the `Add...` button (found beside the `Work with:` field) and then select `Local`\n      to find a local repository. Navigate to `.../eclipse/ide-target-platform/target/repository`,\n      and click `OK`.\n\n   7. Once the main content populates, check the `Uncategorized` item to pull in all items. Click `Finish`.\n\n   8. Click `Finish` to complete the new target platform definition.\n\n   9. Select your new target platform (instead of Running Platform) in the `Target Platform` preferences.\n\n   10. Click `Apply and Finish` to load this new target platform.\n\n   11. Eclipse will load the target.\n\n3. Import the projects.\n\n   1. Select `File/Import...` menu in Eclipse.\n\n   2. Select `Existing Maven Projects` from the list.\n\n   3. Click `Browse...` and select the directory that\n      contains the project.\n\n   4. Under `Projects:` the `pom.xml` files representing modules should be\n      displayed. Make sure that all of them are selected _except_ \n      `verify_feature_completeness` and the sub-directories under \n      `eclipse`. You probably need to explicitly unselect these\n      projects. Click `Finish`.\n\n      - The subprojects under the `eclipse` directory define target platforms for the Tycho build. It's easier to edit the files from the `eclipse-setup` project.\n\n   5. Maven may prompt you to install several additional plugin connector plugins from\n      [Tycho](https://eclipse.org/tycho/) if they are not already installed. Click\n      `Finish` to install them. If Eclipse prompts you to install any other\n      plugins, do so.\n\n   6. Restart Eclipse when prompted.\n\n4. Check the imported projects.\n\n   - There should be no errors in the `Markers` or `Problems` views in Eclipse.\n      However you may see several low-priority warnings.\n\n      - You may see Maven-related errors like _\"plugin execution not\n        covered by lifecycle configuration\"_.\n        If so, right-click on the problem and select\n        _Quick Fix_ \u003e _Discover new m2e connectors_\n\tand follow the process to install the recommended plugin\n\tconnectors.\n\n5. Create and initialize a launch configuration:\n\n   1. Right-click the `gcloud-eclipse-tools.launch` file under the\n      `google-cloud-eclipse` module in the `Package Explorer`.\n\n   2. Select `Run As` \u003e `Run Configurations...`\n\n   3. Set variables required for launch:\n\n      1. Go to the second tab for `Arguments`\n\n      2. Click the `Variables...` button for `VM argument:`\n\n      3. Click the `Edit variables...` button\n\n      4. Click `New...`\n\n      5. Set the name to `oauth_id`, and the value to the value you want to use\n        (description optional)\n\n      6. Click `OK`, the variable will appear in the list\n\n      7. Repeat steps 6-8 but use `oauth_secret` as the name and use the\n         corresponding value\n\n      8. Click `OK` to close the edit variables dialog\n\n      9. Click `Cancel` to close the variable selection dialog\n\n      10. Click `Apply` to apply the changes to the run config\n\n   4. From the `Run` menu, select `Run History \u003e gcloud-eclipse-tools`. A new instance of Eclipse launches with the plugin installed.\n\n\n# Updating Target Platforms\n\n### Updating the `.target` files\n\nWe use _Target Platform_ files (`.target`) to collect the dependencies used\nfor the build.  These targets specify exact versions of the bundles and\nfeatures being built against. We currently maintain three target platforms,\ntargeting the latest version of the current, previous, and next releases.\nThis is currently:\n\n  - Eclipse 2018-09 (4.9): [`eclipse/eclipse-2018-09/gcp-eclipse-2018-09.target`](eclipse/eclipse-2018-09/gcp-eclipse-2018-09.target)\n  - Eclipse 2018-12 (4.10): [`eclipse/eclipse-2018-12/gcp-eclipse-2018-12.target`](eclipse/eclipse-2018-12/gcp-eclipse-2018-12.target)\n\nThese `.target` files are generated and *should not be manually updated*.\nUpdating `.target` files directly becomes a chore once it has more than a\ncouple of dependencies.  We instead generate these `.target`s from\n_Target Platform Definition_ `.tpd` files.\nThe `.tpd` files use a simple DSL to specify the bundles and features,\nand the location of the repositories containing them.\nThe `.tpd` files are processed using the [TPD Editor](https://github.com/eclipse-cbi/targetplatform-dsl)\nwhich resolves the specified dependencies and creates a `.target`.\nThe process is:\n\n   1. Install the TPD Editor, if necessary\n      - Use _Help \u003e Install New Software_ and specify `https://download.eclipse.org/cbi/tpd/3.0.0-SNAPSHOT/`\n        as the location.\n      - Restart Eclipse when prompted\n   2. Open the `.tpd` file in Eclipse.\n   3. Make any necessary changes and save.\n      - Note that the TPDs specify artifacts using their _p2 identifiers_.\n        Bundles are specified using their OSGi Bundle Symbolic Name (e.g.,\n        `org.eclipse.core.runtime`).\n        Features are specified using their Feature ID suffixed with `.feature.group`\n        (e.g., `org.eclipse.rcp.feature.group`).\n   4. Select the file in the Package Explorer, right-click, and choose _Create Target Definition File_\n      to update the corresponding .target file.\n\nBoth the `.tpd` and `.target` files should be committed.\n\n### Updating Dependencies\n\nThe IDE Target Platform needs to be rebuilt at the command line\nand reimported into Eclipse when dependency versions are changed:\n\n1. `(cd eclipse; mvn -Pide-target-platform package)`\n2. Preferences \u003e Plug-in Development \u003e Target Platforms\n3. Select your target (\"GCP IDE Target Platform\") and click Edit\n4. Select the location and click Reload to cause any cached info to be discarded.\n5. Click Edit and then select Uncategorized.\n6. Finish / OK until done.\n\n### Updating the Eclipse IDE Target Platforms\n\nThe IDE Target Platform, defined in `eclipse/ide-target-platform`,\nmay need to be updated when dependencies are added or removed.  The\ncontents are defined in the `category.xml` file, which specifies\nthe list of features and bundles that should be included.  This\nfile can be edited using the Category editor in Eclipse.  Ideally\nthe version should be specified as `\"0.0.0\"` to indicate that the\ncurrent version found should be used.  Unlike the `.tpd` file,\nthe identifiers are not p2 identifiers, and so features do not\nrequire the `.feature.group` suffix.\n\n\n## Other Miscellaneous Dev Tasks\n\n### Updating IDE settings\n\nSee [`eclipse/settings/`](eclipse/settings/README.md) for details.\n\n### Configuring Maven/Tycho Toolchains for new JDK releases\n\nNow that OpenJDK is moving to a 6-month release cycle...\n\nWe use Tycho's support for Maven Toolchains to ensure that new\nlanguage features do not creep into the code.  Tycho's support is\nautomatically enabled in the build when compiling with a newer JDK\nthan our minimium supported platform.  When using such a JDK, currently\nanything later than JDK 8, we configure the Tycho compiler plugin to\nuse the [`useJDK=BREE`](https://eclipse.org/tycho/sitedocs/tycho-compiler-plugin/compile-mojo.html)\nsetting to ensure bundles are *compiled* with a JDK that matches\nthe bundle's `Bundle-RequiredExecutionEnvironment`.  However we leave\n`tycho-surefire` to run the tests using the current toolchain\n(the default for\n[`useJDK=SYSTEM`](https://eclipse.org/tycho/sitedocs/tycho-surefire/tycho-surefire-plugin/test-mojo.html#useJDK))\nso as to catch any non-backwards compatible changes.\n\nThese settings require configuring\n[Maven's toolchains](https://maven.apache.org/guides/mini/guide-using-toolchains.html)\nto point to appropriate JRE installations.  Tycho further requires\nthat a toolchain defines an `id` for the specified _Execution\nEnvironment_ identifier.  For example, a `~/.m2/toolchains.xml` to\nconfigure Maven on macOS for 8, and 11 toolchains might be:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF8\"?\u003e\n\u003ctoolchains\u003e\n  \u003ctoolchain\u003e\n    \u003ctype\u003ejdk\u003c/type\u003e\n    \u003cprovides\u003e\n      \u003cid\u003eJavaSE-11\u003c/id\u003e\n      \u003cversion\u003e11\u003c/version\u003e\n      \u003cvendor\u003eopenjdk\u003c/vendor\u003e\n    \u003c/provides\u003e\n    \u003cconfiguration\u003e\n      \u003cjdkHome\u003e/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home\u003c/jdkHome\u003e\n    \u003c/configuration\u003e\n  \u003c/toolchain\u003e\n  \u003ctoolchain\u003e\n    \u003ctype\u003ejdk\u003c/type\u003e\n    \u003cprovides\u003e\n      \u003cid\u003eJavaSE-1.8\u003c/id\u003e\n      \u003cversion\u003e1.8\u003c/version\u003e\n      \u003cvendor\u003eoracle\u003c/vendor\u003e\n    \u003c/provides\u003e\n    \u003cconfiguration\u003e\n      \u003cjdkHome\u003e/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre\u003c/jdkHome\u003e\n    \u003c/configuration\u003e\n  \u003c/toolchain\u003e\n\u003c/toolchains\u003e\n```\n\nNote that _jdkHome_ for `JavaSE-1.8` specifies the\n`jre/` directory: Tycho sets the default boot classpath to\n_jdkHome_`/lib/*`, _jdkHome_`/lib/ext/*`, and _jdkHome_`/lib/endorsed/*`.\nFor many JDKs, including Oracle's JDK and the OpenJDK *prior to Java 9*, those\ndirectories are actually found in the `jre/` directory.  Compilation\nerrors such as `java.lang.String` not found and `java.lang.Exception`\nnot found indicate a misconfigured _jdkHome_.  With the introduction of\n_Java modules_ with Java 9, there is no longer a separate JRE distribution.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglecloudplatform%2Fgoogle-cloud-eclipse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgooglecloudplatform%2Fgoogle-cloud-eclipse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglecloudplatform%2Fgoogle-cloud-eclipse/lists"}