与protobuf一起使用的Clojure示例

时间:2014-02-11 01:49:47

标签: clojure protocol-buffers

修改。此代码现在可以使用。

我试着按照这里的例子:

https://github.com/flatland/clojure-protobuf

我创建了一个新项目:

lein new protobuf

将目录更改为protobuf,我在/ resources / proto / example.proto文件中添加了以下内容:

option java_package = "com.example";

package Example;

message Person {
   required int32  id    = 1;
   required string name  = 2;
   optional string email = 3;
   repeated string likes = 4;
}

我的项目文件如下所示。与上面url中的示例的唯一区别是我修改为1.5.1。

(defproject org.flatland/protobuf "0.8.2-SNAPSHOT"
 :description "Clojure-protobuf provides a clojure interface to Google's protocol buffers."
 :license {:name "Eclipse Public License"
        :url "http://www.eclipse.org/legal/epl-v10.html"}
 :url "https://github.com/flatland/clojure-protobuf"
 :dependencies [[org.clojure/clojure "1.5.1"]
             [org.flatland/protobuf "0.7.1"] 
             [org.flatland/useful "0.11.1"]
             [org.flatland/schematic "0.1.2"]
             [org.flatland/io "0.3.0"]
             [ordered-collections "0.4.2"]]
 :plugins [[lein-protobuf "0.1.1"]]
 :aliases {"testall" ["with-profile" "dev,default:dev,1.3,default:dev,1.5,default" "test"]}
 :profiles {:1.3 {:dependencies [[org.clojure/clojure "1.3.0"]]}
         :1.5 {:dependencies [[org.clojure/clojure "1.5.0-master-SNAPSHOT"]]}
         :dev {:dependencies [[gloss "0.2.2"]]}}
 :repositories {"sonatype-snapshots" {:url "http://oss.sonatype.org/content/repositories/snapshots"
                                   :snapshots true
                                   :releases {:checksum :fail :update :always}}}
 :checksum-deps true
 :java-source-paths ["src"])
然后我做了一个

lein protobuf

现在我进入了REPL

lein repl

我尝试了第一个命令:

(use 'flatland.protobuf.core)

然后我尝试了下一行

(import com.example.Example$Person)

然后示例的其余部分工作正常。

1 个答案:

答案 0 :(得分:0)

看来clojusc/protobuf是维护得更好的分叉。项目自述文件包含一个简单的protobuf示例。它清楚地说明了如何使用protoc编译器和java互操作。