{"id":32192169,"url":"https://github.com/klauern/lein-wsimport","last_synced_at":"2025-10-22T02:00:00.709Z","repository":{"id":3389096,"uuid":"4437738","full_name":"klauern/lein-wsimport","owner":"klauern","description":"Leiningen plugin to use Java's 'wsimport' task from within a project","archived":false,"fork":false,"pushed_at":"2023-11-07T18:50:29.000Z","size":69,"stargazers_count":12,"open_issues_count":2,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-22T01:59:57.719Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/klauern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-05-24T20:35:53.000Z","updated_at":"2025-10-08T23:52:48.000Z","dependencies_parsed_at":"2022-08-25T10:30:49.748Z","dependency_job_id":"34e4b1a4-d1bc-46b1-a780-f870db503254","html_url":"https://github.com/klauern/lein-wsimport","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/klauern/lein-wsimport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klauern%2Flein-wsimport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klauern%2Flein-wsimport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klauern%2Flein-wsimport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klauern%2Flein-wsimport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klauern","download_url":"https://codeload.github.com/klauern/lein-wsimport/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klauern%2Flein-wsimport/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280365593,"owners_count":26318385,"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-21T02:00:06.614Z","response_time":58,"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":[],"created_at":"2025-10-22T01:59:56.691Z","updated_at":"2025-10-22T02:00:00.703Z","avatar_url":"https://github.com/klauern.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lein-wsimport\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fklauern%2Flein-wsimport.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fklauern%2Flein-wsimport?ref=badge_shield)\n\n\nA Leiningen plugin to utilize the JDK's [`wsimport`](http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html) task from a Leiningen project.\n\n## Why?\nSimply put, this is a thin wrapper around the `wsimport` command-line tool provided by Oracle's JDK.  This is polish for your Leiningen project in case you want to save typing `wsimport -some -options, etc.` multiple times for each .WSDL.  \n\nI created this because I am new to Clojure and want to learn/contribute at the same time. \n\n## Usage\nCurrently, this plugin only works against your `project.clj` configuration settings, so if you haven't already, add this to you're `:plugins` vector of your project.clj:\n\n```clj\n[lein-wsimport \"1.0.0\"]\n```\n\nRunning this plugin from the command-line is simple enough:\n\n    $ lein wsimport\n\n\n## Configuration\n\nWsImport is a task that generates .java and java .class files from a SOAP `wsdl` file, so you need to specify that your project will be using java sources:\n\n```clj\n:java-source-paths [ \"target/generated/java\" ] ;; by default, WSDL sources are generated here\n```\n\nTo get this to do something with your wsdls, you will have to configure in your `project.clj` a `:wsimport` map.  A sample is provided below (with all the available options):\n\n```clj          \n:wsimport { :wsdl-list [ \"Sample.wsdl\" \"ec2.wsdl\" … ]\n            :compile-java-sources true ;; or false (by default)\n            :java-output-directory \"target/generated/java\" ;; by default\n            :keep-java-sources true ;; by default\n            :java-package-name \"com.corporate.prefix.package\"\n            :quiet-output true ;; don't show the entirety of the output from Sun's WsImport task\n            :jaxb-binding-files [ \"binding1\" \"binding2\" ]\n            :extra-options [\"-extension\" \"-catalog\" ] ;; takes pretty much anything that you'd call from the command-line. call `wsimport` to see what's available\n          }\n```\n\nMinimally, all you would have to do if you have vanilla WSDLs that you'd like to codegen for (vanilla, error-free SOAP, lol) is specify `:wsdl-list`:\n\n```clj\n:wsimport { :wsdl-list [\"List.wsdl\" \"of.wsdl\" \"wsdls.wsl\"] }\n```\n\nThen, from the command-line, just call `lein wsimport` to get your sources generated and/or compiled.\n\n\n### Limitation: no separation of project configs per profile\nI have not written any handling of profiles and handling multiple and possibly competing WSDL options.  I know there might be cases where you would have a couple `.wsdl` files you want to bring in that each will require separate options.  I don't have anything in place to handle that (yet).  As is the open-source way, patches are welcome.\n\n## Alternatives\n\nThere's only one alternative that I know of, [clj-soap](https://bitbucket.org/taka2ru/clj-soap).  It uses Axis2 under the covers, and if you're a fan of that framework (I'm not) it's a good option.  I would love to see this project used with [Apache CXF](http://cxf.apache.org) instead, but there aren't a whole lot of alternatives out in the SOAP space.  This is both good and bad:  \n\n  - bad -- not a lot of variety or options in Clojure for enterprisey things (SOAP is far from dead in the enterprise, like COBOL); \n  - good -- we all hope SOAP is dying a slow painful death for which new languages decide not to waste alot of time developing against.\n\n  I hope for the latter, honestly, but this plugin wouldn't exist if I didn't need to work with SOAP or expected others to have to wade through legacy APIs.\n\n## License\n\nCopyright © 2012 Nick Klauer (klauer@gmail.com)\n\nDistributed under the Eclipse Public License, the same as Clojure.\n\n\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fklauern%2Flein-wsimport.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fklauern%2Flein-wsimport?ref=badge_large)\n\n## References:\n\nSOAP is a beast, here's some tips and help:\n\n- [`clj-soap`](https://bitbucket.org/taka2ru/clj-soap) - SOAP framework with Axi2 back-end that is written in Clojure if you don't want to use the Clojure/Java Interop with this plugin\n- [JAX-WS](http://jax-ws.java.net) - Framework for which much of the SOAP/Java interfaces are based off of.  This will probably explain why `wsimport` generates what it does, and how you might be able to use it.\n- [Soapuser.com](http://www.soapuser.com/index.html) - hahaha I just had to link this.  If you don't know what SOAP is, this is probably a good place to read about it, but you can tell it's a bit…dated?\n- [using the client api with a local WSDL](http://metro.java.net/guide/ch02.html#developing-client-application-with-locally-packaged-wsdl) - Again, this is just the Metro docs, but you get the picture.  We're not generating a wrapper around JAX-WS, so the JAX-WS site is your best resource for understanding what `wsimport` generates for you.\n\nTODO:\n=====\n\n- Implement command-line options parser ?\n- more tests\n- more wsdl examples\n- profile separation of `wsdl` options from a default, blanket set of options","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklauern%2Flein-wsimport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklauern%2Flein-wsimport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklauern%2Flein-wsimport/lists"}