Liking cljdoc? Tell your friends :D

:warning: This repo is not actively maintained.


Build Status

API Docs

A Leiningen plugin to compile Google Protocol Buffers to Java

This plugin provides seamless support for building projects that include .proto files. There is no need to pre-download the protoc compiler. The plugin will manage the dependency for you with cross-platform support. The plugin will work out of the box in Linux, MacOSX, and Windows build environments.


Put [com.circleci/lein-protoc "0.6.0"] into the :plugins vector of your project.clj.

The following options can be configured in the project.clj:

  • :protoc-version the Protocol Buffers Compiler version to use. Defaults to "3.4.0".
  • :proto-source-paths vector of absolute paths or paths relative to the project root that contain the .proto files to be compiled. Defaults to ["src/proto"]
  • :proto-target-path the absolute path or path relative to the project root where the sources should be generated. Defaults to ${target-path}/generated-sources/protobuf
  • :protoc-grpc true (or empty map) to generate interfaces for gRPC service definitions with default settings. Defaults to false. Can optionally provide a map with the following configs:
    • :version version number for gRPC codegen. Defaults to "1.6.1".
    • :target-path absolute path or path relative to the project root where the sources should be generated. Defaults to the :proto-target-path
  • :protoc-timeout timeout value in seconds for the compilation process. Defaults to 60
  • :proto-source-deps vector of project dependencies to include proto files from. Can optionally include a prefix path with the dependency. Defaults to []. Example :proto-source-deps [[ "/resources/proto"] [zip/ping-lib].

The plugin hooks to the javac task so that sources will be generated prior to java compilation. Alternatively, the sources can be generated independently with:

$ lein protoc


lein-protoc is pushed to clojars.

The following should be updated on the main branch if there are new releases:

  • project.clj - version
  • - dependency coordinates
  • - summary of changes


Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Can you improve this documentation? These fine people already did:
Matt Anderson, Ben Sima, Shaun Kaasten, Raj DeviReddy, Patrick Shields & Phil Hagelberg
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close