saw303:
私はJavaのマッピングにMapstructを使用した単純なJava単一のモジュールのGradleのプロジェクトを抱えています。私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"
}
}
}
私のソースフォルダには、次のJavaソース・コードが含まれています。
src
├── main
│ ├── java
│ │ └── ch
│ │ └── silviowangler
│ │ ├── Person.java
│ │ ├── SomeMapper.java
│ │ └── User.java
│ └── resources
└── test
├── groovy
│ └── ch
│ └── silviowangler
├── java
│ └── ch
│ └── silviowangler
│ └── YoloMapper.java
└── resources
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);
}
そして、YoloMapper
そのようなテスト範囲のルックスでその存在
@Mapper
public interface YoloMapper {
String fromLocalDate(LocalDate localDate);
}
私は実行すると、./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
どのように私は、テスト範囲内Mapstructマッパーの実装を生成する注釈プロセッサを伝えるためのGradleを作ることができますか?
M.Ricciuti:
あなたは、設定する必要があり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"
}