saw*_*303 5 java gradle mapstruct
我有一个简单的Java单一模块Gradle项目,其中使用Mapstruct进行Java映射。我的build.gradle样子是这样的:
plugins {
id 'java-library'
id 'groovy'
id 'net.ltgt.apt' version '0.20'
}
repositories {
jcenter()
}
dependencies {
implementation 'org.mapstruct:mapstruct-jdk8:1.2.0.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.2.0.Final'
testImplementation 'org.codehaus.groovy:groovy-all:2.5.5'
// Use the awesome Spock testing and specification framework even with Java
testImplementation 'org.spockframework:spock-core:1.2-groovy-2.5'
testImplementation 'junit:junit:4.12'
}
sourceSets {
main {
java {
srcDirs "${project.buildDir}/generated/sources/annotationProcessor/java/main"
}
}
test {
java {
srcDirs "${project.buildDir}/generated/sources/annotationProcessor/java/test"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的源文件夹包含以下Java源代码:
src
??? main
? ??? java
? ? ??? ch
? ? ??? silviowangler
? ? ??? Person.java
? ? ??? SomeMapper.java
? ? ??? User.java
? ??? resources
??? test
??? groovy
? ??? ch
? ??? silviowangler
??? java
? ??? ch
? ??? silviowangler
? ??? YoloMapper.java
??? resources
Run Code Online (Sandbox Code Playgroud)
SomeMapper 是一个简单的映射器界面,看起来像这样
@Mapper
public interface SomeMapper {
@Mappings({
@Mapping(target = "firstName", source = "nickname"),
@Mapping(target = "surname", ignore = true),
@Mapping(target = "dateOfBirth", ignore = true)
})
Person fromString(User user);
}
Run Code Online (Sandbox Code Playgroud)
而YoloMapper驻留在测试范围看起来像这样
@Mapper
public interface YoloMapper {
String fromLocalDate(LocalDate localDate);
}
Run Code Online (Sandbox Code Playgroud)
当我运行时./gradlew clean cTJ,构建成功完成,并且注释处理器为生成映射器实现,SimpleMapper但不会为生成任何东西YoloMapper。在build构建模样后的文件夹
build
??? classes
? ??? java
? ??? main
? ? ??? ch
? ? ??? silviowangler
? ? ??? Person.class
? ? ??? SomeMapper.class
? ? ??? SomeMapperImpl.class
? ? ??? User.class
? ??? test
? ??? ch
? ??? silviowangler
? ??? YoloMapper.class
??? generated
? ??? sources
? ??? annotationProcessor
? ??? java
? ??? main
? ? ??? ch
? ? ??? silviowangler
? ? ??? SomeMapperImpl.java
? ??? test
??? tmp
??? compileJava
??? compileTestJava
Run Code Online (Sandbox Code Playgroud)
如何使Gradle告诉注释处理器在测试范围内生成Mapstruct映射器实现?
您需要进行配置testAnnocationProcess,如下:
dependencies{
// for Main sources set
implementation 'org.mapstruct:mapstruct-jdk8:1.2.0.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.2.0.Final'
// for Test sources set
testAnnotationProcessor "org.mapstruct:mapstruct-processor:1.2.0.Final"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |