{"id":37028081,"url":"https://github.com/ph4r05/javacard-gradle-plugin","last_synced_at":"2026-01-14T03:20:58.304Z","repository":{"id":57725936,"uuid":"113918433","full_name":"ph4r05/javacard-gradle-plugin","owner":"ph4r05","description":"Gradle plugin for JavaCard development","archived":false,"fork":true,"pushed_at":"2024-03-23T11:59:51.000Z","size":334,"stargazers_count":9,"open_issues_count":7,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-15T09:48:56.452Z","etag":null,"topics":["development","gradle","gradle-plugin","javacard"],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"bertrandmartel/javacard-gradle-plugin","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ph4r05.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-11T23:08:54.000Z","updated_at":"2023-11-05T20:19:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ph4r05/javacard-gradle-plugin","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/ph4r05/javacard-gradle-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ph4r05%2Fjavacard-gradle-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ph4r05%2Fjavacard-gradle-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ph4r05%2Fjavacard-gradle-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ph4r05%2Fjavacard-gradle-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ph4r05","download_url":"https://codeload.github.com/ph4r05/javacard-gradle-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ph4r05%2Fjavacard-gradle-plugin/sbom","scorecard":{"id":730363,"data":{"date":"2025-08-11","repo":{"name":"github.com/ph4r05/javacard-gradle-plugin","commit":"a4f9ce6b38133164197ed3ca52f6f5bf8de6a218"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"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":-1,"reason":"no workflows found","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":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","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":"0 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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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: 0 commits out of 2 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"}}]},"last_synced_at":"2025-08-22T14:13:59.450Z","repository_id":57725936,"created_at":"2025-08-22T14:13:59.451Z","updated_at":"2025-08-22T14:13:59.451Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":["development","gradle","gradle-plugin","javacard"],"created_at":"2026-01-14T03:20:57.701Z","updated_at":"2026-01-14T03:20:58.296Z","avatar_url":"https://github.com/ph4r05.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JavaCard Gradle plugin\n\n[![Build Status](https://travis-ci.org/ph4r05/javacard-gradle-plugin.svg?branch=master)](https://travis-ci.org/ph4r05/javacard-gradle-plugin)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.klinec/gradle-javacard/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.klinec/gradle-javacard)\n[![Coverage Status](https://coveralls.io/repos/github/ph4r05/javacard-gradle-plugin/badge.svg?branch=master)](https://coveralls.io/github/ph4r05/javacard-gradle-plugin?branch=master)\n[![Javadoc](http://javadoc-badge.appspot.com/com.klinec/gradle-javacard.svg?label=javadoc)](http://javadoc-badge.appspot.com/com.klinec/gradle-javacard)\n[![License](http://img.shields.io/:license-mit-blue.svg)](LICENSE.md)\n\nA Gradle plugin for building JavaCard applets.\n\nThis plugin is a wrapper on [ant-javacard](https://github.com/martinpaljak/ant-javacard) and [Global Platform Pro](https://github.com/martinpaljak/GlobalPlatformPro), it is inspired by [gradle-javacard](https://github.com/fidesmo/gradle-javacard)\n\nThis is a fork of a great work [bertrandmartel/javacard-gradle-plugin](https://github.com/bertrandmartel/javacard-gradle-plugin),\nwe extended the work and added some improvements. \n\nGradle 6.4 is the minimal version supported.\n\n## Features\n\n* build JavaCard applets (with the same capabilities as [ant-javacard](https://github.com/martinpaljak/ant-javacard))\n* install cap files\n* list applets\n* write quick testing scripts used to send apdu in a configurable way\n* expose `GpExec` task type that enables usage of [Global Platform Pro](https://github.com/martinpaljak/GlobalPlatformPro) tool inside Gradle\n* include [jcardsim 3.0.5](https://github.com/licel/jcardsim) and [JUnit 4.12](http://junit.org/junit4/) test dependency (clear distinction between JavaCard SDK \u0026 jcardsim SDK) \n* ability to specify key for delete/install/list tasks\n* possibility to add dependency between modules (exp \u0026 jar imported automatically)\n\n## Usage \n\nIt may be the best to start with a simple HelloWorld project using this gradle plugin and demonstrating basic usage.\n\nClone this [https://github.com/crocs-muni/javacard-gradle-template-edu](https://github.com/crocs-muni/javacard-gradle-template-edu)\ntemplate project with `git clone --recursive`, and try:\n- `./gradlew buildJavaCard`\n- `./gradlew installJavaCard`\n- `./gradlew test`\n\nExample gradle script:\n```groovy\nbuildscript {\n    repositories {\n        jcenter()\n        mavenCentral()\n\n        // Repository with Globalplatform, ant-javacard, gppro, gptools, etc.\n        maven { url \"https://javacard.pro/maven\" }\n        maven { url \"https://deadcode.me/mvn\" }\n    }\n    dependencies {\n        classpath 'com.klinec:gradle-javacard:1.8.0'\n    }\n}\n\napply plugin: 'com.klinec.gradle.javacard'\n\nrepositories {\n    mavenCentral()\n    // mavenLocal() // for local maven repository if needed\n\n    // Repository with Globalplatform, ant-javacard, gppro, gptools, etc.\n    maven { url  \"https://dl.bintray.com/ph4r05/jcard\" }\n    maven { url \"https://javacard.pro/maven\" }\n    maven { url \"https://deadcode.me/mvn\" }\n}\n\njavacard {\n\n    config {\n        \n        cap {\n            packageName 'fr.bmartel.javacard'\n            version '0.1'\n            aid '01:02:03:04:05:06:07:08:09'\n            output 'applet.cap'\n            applet {\n                className 'fr.bmartel.javacard.HelloWorld'\n                aid '01:02:03:04:05:06:07:08:09:01:02'\n            }\n        }\n    }\n          \n    scripts {\n        script {\n            name 'select'\n            apdu '00:A4:04:00:0A:01:02:03:04:05:06:07:08:09:01:00'\n        }\n        script {\n            name 'hello'\n            apdu '00:40:00:00:00'\n        }\n        task {\n            name 'sendHello'\n            scripts 'select', 'hello'\n        }\n    }\n}\n```\n\nplugin is available from `jcenter()` or `mavenCentral()`\n\nYou can specify custom GPtool dependency with configuration `gptool`:\n\n```groovy\ndependencies {\n  gptool \"com.github.martinpaljak:gppro:20.08.12\"\n  gptool \"com.github.martinpaljak:gptool:20.08.12\"\n  gptool \"com.github.martinpaljak:globalplatformpro:20.08.12\"\n}\n```\n\nCheck [this project](https://github.com/bertrandmartel/javacard-tutorial) for more usage examples\n\n## JavaCard SDK path\n\nThe path to JavaCard SDK can be specified through : \n\n* use `jc.home` properties in `local.properties` file located in your project root (in the same way as Android projects) : \n  * in project root : `echo \"jc.home=$PWD/oracle_javacard_sdks/jc222_kit\" \u003e\u003e local.properties`\n* using `jckit` attribute (see [ant-javacard](https://github.com/martinpaljak/ant-javacard#syntax))\n* `JC_HOME` global environment variable, for instance using : `export JC_HOME=\"$PWD/sdks/jck222_kit\"`\n\n## Tasks\n\n| task name    | description   |\n|--------------|---------------|\n| buildJavaCard | build JavaCard cap files |\n| installJavaCard | delete existing aid \u0026 install all JavaCard cap files (`gp --delete XXXX --install file.cap`) |\n| listJavaCard | list applets (`gp -l`) |\n\nIt's possible to create custom tasks that will send series of custom apdu :\n\n```groovy\nscripts {\n    script {\n        name 'select'\n        apdu '00:A4:04:00:0A:01:02:03:04:05:06:07:08:09:01:00'\n    }\n    script {\n        name 'hello'\n        apdu '00:40:00:00:00'\n    }\n    task {\n        name 'sendHello'\n        scripts 'select', 'hello'\n    }\n}\n```\n\nThe above will create task `sendHello` that will select applet ID `01:02:03:04:05:06:07:08:09:01` and send the apdu `00:40:00:00:00`.  \nThe order of the scripts's apdu in `task.scripts` is respected.  \n`00:A4:04:00:0A:01:02:03:04:05:06:07:08:09:01:00` or `'00A404000A0102030405060708090100'` are valid apdu.\n\n## Custom Global Platform Pro task\n\nYou can build custom tasks that launch [Global Platform Pro](https://github.com/martinpaljak/GlobalPlatformPro) tool :\n\n```groovy\ntask displayHelp(type: com.klinec.gradle.javacard.gp.GpExec) {\n    description = 'display Global Platform pro help'\n    group = 'help'\n    args '-h'\n}\n```\n\n## More complex example\n\n```groovy\napply plugin: 'javacard'\n\nrepositories {\n    maven {\n        url 'http://dl.bintray.com/bertrandmartel/maven'\n    }\n}\n\njavacard {\n\n    config {\n        jckit '../oracle_javacard_sdks/jc222_kit'\n        cap {\n            packageName 'fr.bmartel.javacard'\n            version '0.1'\n            aid '01:02:03:04:05:06:07:08:09'\n            output 'applet1.cap'\n            applet {\n                className 'fr.bmartel.javacard.HelloSmartcard'\n                aid '01:02:03:04:05:06:07:08:09:01:02'\n            }\n            applet {\n                className 'fr.bmartel.javacard.GoodByeSmartCard'\n                aid '01:02:03:04:05:06:07:08:09:01:03'\n            }\n        }\n        cap {\n            packageName 'fr.bmartel.javacard'\n            version '0.1'\n            aid '01:02:03:04:05:06:07:08:0A'\n            output 'applet2.cap'\n            applet {\n                className 'fr.bmartel.javacard.SomeOtherClass'\n                aid '01:02:03:04:05:06:07:08:09:01:04'\n            }\n            dependencies {\n                local {\n                    jar '/path/to/dependency.jar'\n                    exps '/path/to/expfolder'\n                }\n                remote 'fr.bmartel:gplatform:2.1.1'\n            }\n        }\n    }\n    \n    defaultKey '40:41:42:43:44:45:46:47:48:49:4A:4B:4C:4D:4E:4F'\n    // or \n    /*\n    key {\n        enc '40:41:42:43:44:45:46:47:48:49:4A:4B:4C:4D:4E:4F'\n        kek '40:41:42:43:44:45:46:47:48:49:4A:4B:4C:4D:4E:4F' \n        mac '40:41:42:43:44:45:46:47:48:49:4A:4B:4C:4D:4E:4F' \n    }\n    */\n\n    scripts {\n        script {\n            name 'select'\n            apdu '00:A4:04:00:0A:01:02:03:04:05:06:07:08:09:01:00'\n        }\n        script {\n            name 'hello'\n            apdu '00:40:00:00:00'\n        }\n        task {\n            name 'sendHello'\n            scripts 'select', 'hello'\n        }\n    }\n}\n```\n\nNote1 : the `remote` dependency will automatically download the `jar` (the `jar` file must include the `exp` file)  \nNote2 : you can add as many `local` or `remote` dependency as you want\n\n## Syntax\n\n* javacard [Closure]\n  * config [Closure] - object that holds build configuration **Required**\n    * jckit [String] - path to the JavaCard SDK that is used if individual cap does not specify one. Optional if cap defines one, required otherwise. The path is relative to the module\n    * logLevel [String] - log level of ant-javacard task (\"VERBOSE\",\"DEBUG\",\"INFO\",\"WARN\",\"ERROR\"). default : \"INFO\"\n    * antClassPath [String] - option to specify path to the `ant-javacard.jar`\n    * jcardSim [dependency] - gradle dependency specifier for the JCardSim to use\n    * gptoolVersion [String] - enables you to specify GPtools version that will be used (in case you do not specify custom deps for `gptool` configuration)\n    * addImplicitJcardSim [Boolean] - adds JCardSim dependency to the project, true by default. Recommended: false\n    * addImplicitJcardSimJunit [Boolean] - adds Junit dependency to the jcardsim dependency. Recommended: false and define you own junit version\n    * debugGpPro [Boolean] - if true, adds `-d` param to the GPPro tasks for more verbose output\n    * fixClassPath [Boolean] - if true, tries to fix test classpath if JC `api_classic.jar` appears before jcardsim.\n    * installGpProArgs [List\u003cString\u003e] - List of additional GPPro args to add to the installJavaCard task\n    * cap [Closure] - construct a CAP file **Required**\n      * jckit [String] - path to the JavaCard SDK to be used for this CAP. *Optional if javacard defines one, required otherwise*\n      * targetsdk [String] - path to the target JavaCard SDK to be used for this CAP. Optional, value of jckit used by default. Allows to use a more recent converter to target older JavaCard platforms.\n      * sources [String] - path to Java source code, to be compiled against the current JavaCard SDK. **Required**\n      * sources2 [String] - additional sources to build per-platform applets. Optional.\n      * findSources [boolean] - default:true, if true the sources are determined automatically. The first existing source dir in source sets is taken\n      * defaultSources [boolean] - default:true, if true the first source dir from the source set is used. Otherwise the most recet (last)\n      * classes [String] - path to pre-compiled class files to be assembled into a CAP file. If both classes and sources are specified, compiled class files will be put to classes folder, which is created if missing\n      * include [String] - comma or space separated list of patterns of files that must be included.\n      * exclude [String] - comma or space separated list of patterns of files that must be excluded.\n      * packageName [String] - name of the package of the CAP file. Optional - set to the parent package of the applet class if left unspecified.\n      * version [String] - version of the package. Optional - defaults to 0.0 if left unspecified.\n      * aid [String] - AID (hex) of the package. Recommended - or set to the 5 first bytes of the applet AID if left unspecified.\n      * output [String] - path where to save the generated CAP file. if a filename or a non-absolute path is referenced, the output will be in `build/javacard/{output}` **Required**\n      * export [String] - path (folder) where to place the JAR and generated EXP file. Default output directory is `build/javacard`. Filename depends on `output` filename if referenced. Optional.\n      * jar [String] - path where to save the generated archive JAR file. Optional.\n      * jca [String] - path where to save the generated JavaCard Assembly (JCA) file. Default output directory is `build/javacard`. Filename depends on `output` filename if referenced. Optional.\n      * verify [boolean] - if set to false, disables verification of the resulting CAP file with offcardeverifier. Optional.\n      * debug [boolean] - if set to true, generates debug CAP components. Optional.\n      * ints [boolean] - if set to true, enables support for 32 bit int type. Optional.\n      * javaversion [string] - override the Java source and target version. Optional.\n      * applet [Closure] - for creating an applet inside the CAP\n        * className [String] - class of the Applet where install() method is defined. **Required**\n        * aid [String] - AID (hex) of the applet. Recommended - or set to package aid+i where i is index of the applet definition in the build.xml instruction\n      * dependencies [Closure] - for linking against external components/libraries, like GPSystem or OPSystem\n        * local [Closure] local dependencies must include absolute path to exp/jar\n          * exps [String] - path to the folder keeping .exp files. Required\n          * jar [String] - path to the JAR file for compilation. Optional - only required if using sources mode and not necessary with classes mode if java code is already compiled\n        * remote [String] remote dependencies (ex: \"group:module:1.0\").the remote repository (maven repo) must be included in the project\n  * key [Closure] key configuration (if not defined the default keys will be used)\n    * enc [String] ENC key\n    * kek [String] KEK key\n    * mac [String] MAC key\n  * defaultKey [String] default key used (will be used for enc, kek and mac key if not specified in key closure)\n  * scripts [Closure] - object that holds the configurable scripts to send apdu\n     * script [Closure] - a script referenced by name/apdu value to be sent\n       * name [String] - script name (ex: select)\n       * apdu [String] - apdu value to be sent (it can hold \":\" to separate bytes)\n     * task [Closure] - gradle task to create that will map the specified list of apdu to send\n       * name [String] - task name\n       * scripts [String...] - list of script's name\n  * test [Closure] - additional configuration for tests(*)\n     * dependencies [Closure] - holds test dependencies\n       * compile [String] - add a dependencies (ex: 'junit:junit:4.12')\n\n(*) If you specify at least one dependency, jcardsim \u0026 junit won't be automatically added so you will need to add them manually if you need them for example :\n\n```groovy\ntest {\n    dependencies {\n        compile 'junit:junit:4.12'\n        compile 'com.licel:jcardsim:3.0.4'\n    }\n}\n```\n\n## Compatibility\n\nThis plugin has been tested on following IDE : \n\n* IntelliJ IDEA\n* Android Studio\n* Eclipse\n\nRecommended IDE : IntelliJ IDEA or Android Studio\n\n## License\n\nThe MIT License (MIT) Copyright (c) 2017-2018 Bertrand Martel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fph4r05%2Fjavacard-gradle-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fph4r05%2Fjavacard-gradle-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fph4r05%2Fjavacard-gradle-plugin/lists"}