2

我正在尝试将 Google 协议缓冲区用于 Java(我是 Java 新手,只是在尝试)。

首先,我使用的是 OSX,并且我已经使用brew install protobuf命令安装了协议缓冲区。

protoc 命令工作正常。

我是MyProtocol.java由 protoc 生成的。

我已经安装了 Java 的协议缓冲区作为它的指令(README.txt)。

mvn install命令创建了.m2目录,我可以protobuf-java-2.4.1.jar在目录中的某处找到文件。

我写了简单的测试 Java 代码只是导入MyProtocol.java它抱怨找不到包com.google.protobuf

所以,我刚刚制作了 jar 文件mvn package并将其目录添加为 CLASSPATH 并且编译良好。

javac -classpath <protobuf-dir>/jara/target/classes Test.java ./com/example/tutorial/AddressBookProtos.java

如果我使用 maven 的存储库目录 ( ~/.m2/repository),它会再次抱怨。

如果我安装软件包,maven 不会为我制作 CLASSPATH 吗?如果没有,我如何使用 maven 安装的包来编译我的代码?

4

2 回答 2

2

Maven Dependency Plugin有一个目标,称为它build-classpath可以满足您的需求。您可以在使用页面获取使用提示

于 2012-09-20T12:02:01.173 回答
1

Maven 不会更改您的设置,因此您可以根据需要设置 CLASSPATH。

但是,Maven 至少可以通过两种方式阻止您:

  • 您可以使用Maven Assembly 插件将所有依赖项收集到一个目录或存档中,这样您只需将一个目录添加到您的 CLASSPATH 即可运行您的程序;
  • 您可以使用Exec Maven 插件将程序的运行添加为 POM 中的目标,然后使用 Maven 运行它。
于 2012-09-20T11:57:00.590 回答