如何在其他模块的源集中添加 proto 生成的文件?
How to add proto generated files in source sets of other modules?
我有一个使用 proto 生成 DTO 的多模块 gradle 项目。根项目有两个不同的模块,inventory
和 inventory-api
。 *-api 模块是具有所有 .proto
定义的模块。 inventory
依赖于 inventory-api
这是根 gradle 文件
plugins {
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}
subprojects {
group = 'com.yasinbee.apifirst'
version = '0.0.1-SNAPSHOT'
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java-library'
repositories {
jcenter()
}
dependencyManagement {
imports {
mavenBom("org.springframework.boot:spring-boot-dependencies:2.1.9.RELEASE")
}
}
compileJava {
sourceCompatibility = 11
targetCompatibility = 11
}
}
这是清单gradle文件
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
}
dependencies {
implementation project (':inventory-api')
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
implementation "org.springframework.boot:spring-boot-starter-jdbc"
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.mapstruct:mapstruct:1.4.0.Final"
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.0.Final'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
还有库存-api gradle 包含所有原型内容的文件
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'idea'
apply plugin: 'com.google.protobuf'
dependencies {
implementation 'com.google.protobuf:protobuf-java:3.11.0'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.13'
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.10.1'
}
}
我能够在 inventory-api 模块中使用生成的原型文件。但是,当我尝试从清单模块访问生成的文件时,出现编译错误。
似乎生成的原型文件没有添加到 inventory
应用程序的源集中。如何将*-api模块生成的源文件添加到依赖它们的其他模块中?
通过将 inventory-api
模块的 build.gradle
文件从
更改为 build.gradle
文件解决了这个问题
dependencies {
implementation 'com.google.protobuf:protobuf-java:3.11.0'
}
到
dependencies {
api 'com.google.protobuf:protobuf-java:3.11.0'
}
我有一个使用 proto 生成 DTO 的多模块 gradle 项目。根项目有两个不同的模块,inventory
和 inventory-api
。 *-api 模块是具有所有 .proto
定义的模块。 inventory
依赖于 inventory-api
这是根 gradle 文件
plugins {
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}
subprojects {
group = 'com.yasinbee.apifirst'
version = '0.0.1-SNAPSHOT'
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java-library'
repositories {
jcenter()
}
dependencyManagement {
imports {
mavenBom("org.springframework.boot:spring-boot-dependencies:2.1.9.RELEASE")
}
}
compileJava {
sourceCompatibility = 11
targetCompatibility = 11
}
}
这是清单gradle文件
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
}
dependencies {
implementation project (':inventory-api')
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
implementation "org.springframework.boot:spring-boot-starter-jdbc"
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.mapstruct:mapstruct:1.4.0.Final"
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.0.Final'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
还有库存-api gradle 包含所有原型内容的文件
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'idea'
apply plugin: 'com.google.protobuf'
dependencies {
implementation 'com.google.protobuf:protobuf-java:3.11.0'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.13'
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.10.1'
}
}
我能够在 inventory-api 模块中使用生成的原型文件。但是,当我尝试从清单模块访问生成的文件时,出现编译错误。
似乎生成的原型文件没有添加到 inventory
应用程序的源集中。如何将*-api模块生成的源文件添加到依赖它们的其他模块中?
通过将 inventory-api
模块的 build.gradle
文件从
build.gradle
文件解决了这个问题
dependencies {
implementation 'com.google.protobuf:protobuf-java:3.11.0'
}
到
dependencies {
api 'com.google.protobuf:protobuf-java:3.11.0'
}