idea下使用gradle多项目构建生成proto协议并使用

注意事项

项目的路径不能有中文!不能有中文!不能有中文!

1.本文要达到的效果

我们的目的是在protocol子项目中写xx.proto的协议文件,然后产生java代码在shared项目中,其他项目依赖shared项目,从而让其他项目可以使用到proto协议。

2. 建立目录结构

在这里插入图片描述

根目录下setting.gradle配置

rootProject.name = 'multiProject'
include 'project1'
include 'project2'
include 'protocol'
include 'shared'

根目录下build.gradle

由于我需要java和kotlin混编,所以这里也有支持kotlin编译的配置,如果只是java项目,可以去掉对应导入。

buildscript {
    ext {
        kotlin_version = '1.3.72'
    }

    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'com.houjr'
version '1.0-SNAPSHOT'

subprojects {
    apply plugin: 'java'
    apply plugin: 'kotlin'
    apply plugin: 'idea'
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenCentral()
    }

    dependencies {
        compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: kotlin_version
        compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.8.0'
    }
}

protocol子项目的build.gradle中的配置:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.10'
    }
}

apply plugin: 'com.google.protobuf'

sourceSets {
    main {
        proto {
            srcDir 'src/main/proto' //指定.proto文件路径
        }
    }
}

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.8.0'
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java {
                    option "lite"
                }
            }
        }
    }
    //生成目录 "$projectDir/src"   "${project(':shared').projectDir}/src"
    generatedFilesBaseDir = "${project(':shared').projectDir}/src"
}

由于我们把生成目录放在了其他子项目,构建后idea会警告:Duplicate content roots detected…意思是两个项目不能用同一个输出目录,具体成因百度吧,我们之后会用一种巧妙的方式绕过该警告。

3.写proto协议

在这里插入图片描述
在这里插入图片描述

4.产生java代码

在这里插入图片描述
执行之后,会发现shared项目下已经有产生的代码:
在这里插入图片描述

5. 解决之前的警告

但是此时idea并不能识别这是一个源码文件,原因是之前idea的警告:Duplicate content roots detected…。解决方法是在根目录的setting.gradle中取消包含子项目protocol。
在这里插入图片描述
重新构建,就可以了。
在这里插入图片描述
如果下次还想执行generateProto task怎么办呢?很简单,idea会记录每次执行的task。我们可以把该task存起来,这样只需第一次执行时包含protocol子项目,之后就可以不包含了,从而绕过了idea的警告。

6.使用proto协议写代码

我们在project1子项目下的build.gradle中配置依赖shared项目:
project1–build.gradle
在这里插入图片描述
重新构建,然后在project1中使用协议:
在这里插入图片描述
大功告成!

7.后记

由于gradle版本更新很快,网上很多教程都模糊不清。目前我用的gradle版本是6.7,应该是当前最新的版本了。之后有什么问题也可以给我留言讨论。欢迎分享,转载请注明出处。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在使用Gradle构建Spring Boot项目之前,需要确保已经安装了Gradle和相应的Java SDK。接下来,遵循以下步骤创建项目工程: 1.首先创建一个文件夹,并在此文件夹中创建一个build.gradle文件。 2.在build.gradle文件中添加以下代码块来声明Spring Boot插件: ``` plugins { id 'org.springframework.boot' version '2.2.4.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' } ``` 3.接着添加以下代码块来声明项目的依赖: ``` dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'mysql:mysql-connector-java' } ``` 4.运行Gradle来下载和安装项目所需的依赖: ``` gradle clean build ``` 5.创建一个Spring Boot应用程序: ``` package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 6.构建并运行项目: ``` gradle bootRun ``` 以上就是使用Gradle构建Spring Boot项目工程的详细教程。这种方法可以提高开发效率,并将代码与项目依赖性集成在一起。 ### 回答2: Gradle是一款开源的自动化构建工具,是目前最为流行的Java项目自动化构建工具之一,可以帮助我们管理项目依赖、执行构建任务、自动化测试等。 Spring Boot是一个快速开发应用程序的框架,几乎可以零配置使用,可以轻松地构建Web应用程序并且支持很多种开发方式。使用Gradle构建Spring Boot项目工程,可以快速构建Spring Boot应用程序。 以下是详细步骤: 一、创建Spring Boot项目 在开始使用Gradle构建Spring Boot项目之前,首先需要创建Spring Boot项目。可以使用Spring官方提供的Spring Initializr工具来创建Spring Boot项目。 具体步骤如下: 1.访问Spring Initializr网站 https://start.spring.io/ 2.选择项目的基本配置信息,包括项目类型、项目名称、项目包名、项目版本号等。 3.选择项目依赖,例如选中Web、JPA、MySQL等依赖。 4.点击“Generate”按钮生成Spring Boot项目,将项目下载到本地电脑上。 二、配置Gradle 1.在项目根目录下创建build.gradle文件, 具体内容如下: //设置Gradle版本 buildscript { ext { springBootVersion = '2.4.1' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } //设置依赖项 apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.xxx.xxx'//修改为自己的工程名称 version = '0.0.1-SNAPSHOT'//工程版本号 sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'mysql:mysql-connector-java' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 2.保存build.gradle文件后,在终端中执行gradle build命令即可构建项目生成的工程目录如下: /build /classes /generated /libs /reports /resources /tmp /bootJar 三、运行Spring Boot应用程序 1.在build.gradle文件中添加以下配置信息: bootRun { sourceResources = sourceSets.main.output.resourcesDir } 2.在终端中执行gradle bootRun命令,即可运行Spring Boot应用程序,在浏览器中输入http://localhost:8080/hello进行访问。 四、打包应用程序 1.在build.gradle文件中添加以下配置信息,用于打包应用程序: bootJar { archiveName = 'app.jar'// 修改生成的文件名 } 2.在终端中执行gradle bootJar命令进行打包,生成的应用程序在工程目录下的build/libs文件夹中,即可部署到服务器上进行使用。 五、总结 通过Gradle构建Spring Boot项目,可以帮助我们更方便地管理项目依赖,执行构建任务,自动化测试等,从而提高项目开发效率和质量。希望本文对你有所帮助。 ### 回答3: 构建Spring Boot项目工程时,使用Gradle是一个较好的选择。因为Gradle是一个极其强大的构建工具,可以快速方便地构建出高效稳定的项目。下面是使用Gradle构建Spring Boot项目工程的详细教程: 第一步:创建新的Gradle项目 在创建Gradle项目时,需要确保使用Gradle版本是5.0及以上版本。 第二步:添加依赖 在构建Spring Boot项目的过程中,我们需要导入一些必要的依赖,比如web依赖。可以在build.gradle文件中添加以下内容: dependencies { compile('org.springframework.boot:spring-boot-starter-web') } 第三步:添加Spring Boot插件 可以通过在build.gradle文件中添加以下内容,来将spring-boot插件添加到项目中: plugins { id 'org.springframework.boot' version '2.6.0' } 第四步:添加源代码 src/main下新建java目录,java目录下新建包名 com.zxy.springboot ,随后在这个包下新建一个名为 SpringBootDemoApplication.java 的文件; 然后在 SpringBootDemoApplication.java 中添加如下内容: package com.zxy.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoApplication.class, args); } } 第五步:运行程序 在build.gradle所在目录,运行以下命令: gradle bootRun 至此,构建Spring Boot项目工程的详细教程已经介绍完毕。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值