java – 简单的protobuf编译与gradle
如果您正在寻找样品gradle protobuf项目看起来
here.
我很难与毕业生和原型, 不幸的是,我是新来的毕业生,不知道原始项目是如何组成的. 这是我未完成的build.gradle文件 apply plugin: 'java' apply plugin: "com.google.protobuf" buildscript { repositories { mavenCentral() } dependencies { classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0' } } repositories { mavenCentral() } dependencies { compile 'com.google.protobuf:protobuf-java:3.0.0-beta-1' } sourceSets { main { proto { srcDir 'src/main/proto' } java { srcDir 'src/main/java' } } test { proto { srcDir 'src/test/proto' } proto { srcDir 'src/test/java' } } } protobuf { // Configure the protoc executable protoc { // Download from repositories artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3' } generateProtoTasks { // all() returns the collection of all protoc tasks all().each { task -> // Here you can configure the task } // In addition to all(),you may get the task collection by various // criteria: // (Java only) returns tasks for a sourceSet ofSourceSet('main') } } 运行jar任务后,我们有: 因为你可以看到gradle将测试和主protos都建立在相同的类目录(红色箭头)中,在jar中我可以看到包含的生成的类(同时应该跳过测试). 但主要的问题是我想将编译原始文件直接编译到适当的源目录(蓝色箭头),之后普通的构建将会做正确的事情…毕竟,我们需要这些类在src中使用它们在业务逻辑. .. 所以我们只需要一个任务,将proto编译成适当的src目录…没有了. src/main/proto to src/main/java src/test/proto to src/test/java 目前的项目是位于here.请帮助配置这个,我很确定很多人会需要它以后… 解决方法
如果我不误解你的问题,那就很简单了.如果你不想区分你自己和生成的源,你只需要添加generateFileBaseDir就像这样generateProtoTasks.generatedFilesBaseDir =’src’
所以整个构建文件看起来像: // ... protobuf { // Configure the protoc executable protoc { // Download from repositories artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3' } generateProtoTasks.generatedFilesBaseDir = 'src' // <- that line generateProtoTasks { // all() returns the collection of all protoc tasks all().each { task -> // Here you can configure the task } 比你的文件夹看起来像: > src / main / java / com / vach / tryout / AddressBookProtos.java 但: sourceSets { main { proto { srcDir 'src/main/proto' } java { // include self written and generated code srcDirs 'src/main/java','generated-sources/main/java' } } // remove the test configuration - at least in your example you don't have a special test proto file } protobuf { // Configure the protoc executable protoc { // Download from repositories artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3' } generateProtoTasks.generatedFilesBaseDir = 'generated-sources' generateProtoTasks { // all() returns the collection of all protoc tasks all().each { task -> // Here you can configure the task } // In addition to all(),you may get the task collection by various // criteria: // (Java only) returns tasks for a sourceSet ofSourceSet('main') } } 你的目录看起来像这样 > src / main / proto / dtos.proto 一个很好的副作用是您可以忽略git配置中的这个生成源目录.这不是发布生成的源代码的好主意. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Spring中property-placeholder的使用与解析详解
- 详解SpringMVC @RequestBody接收Json对象字符串
- java – 定义:Unfinalized与finalizable对象
- 打印管理库函数Winspool.drv
- Java中常见的异常
- java – 从任何给定的日期间隔返回一周的1到7天
- java – 在wicket中处理AutoCompleteTextField的onchange事
- 如果我在文件中有翻译,如何在DSpace中翻译或替换主题词
- 如何否定一个值与java [Integer.Min_Value]中的值相同
- java – 如何在Netbeans上定义jRadioButton的标签位置?