我想用gradle在groovy类上使用Mapstruct映射器。build.gradle中的配置看起来像一个Java项目。
dependencies {
...
compile 'org.mapstruct:mapstruct:1.4.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final' // if you are using mapstruct in test code
}
问题是没有生成映射器的实现类。我还尝试为groovy编译任务应用不同的选项,但它不起作用。
compileGroovy {
options.annotationProcessorPath = configurations.annotationProcessor
// if you need to configure mapstruct component model
options.compilerArgs << "-Amapstruct.defaultComponentModel=default"
options.setAnnotationProcessorGeneratedSourcesDirectory( file("$projectDir/src/main/generated/groovy"))
}
有人知道Mapstruct是否可以与groovy类一起工作,以及我必须如何配置它吗?
所以你可以使用这个版本:
plugins {
id 'groovy'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
implementation 'org.codehaus.groovy:groovy-all:3.0.9'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
}
compileGroovy.groovyOptions.javaAnnotationProcessing = true
有了这个汽车
(与他们的示例略有不同)
import groovy.transform.Immutable
@Immutable
class Car {
String make;
int numberOfSeats;
CarType type;
}
还有这个CarDto
(同样,略有修改)
import groovy.transform.ToString
@ToString
class CarDto {
String make;
int seatCount;
String type;
}
然后,您需要在车载地图中
进行的唯一更改是忽略 Groovy 添加到对象的 metaClass
属性:
import org.mapstruct.Mapper
import org.mapstruct.Mapping
import org.mapstruct.factory.Mappers
@Mapper
interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper(CarMapper)
@Mapping(source = "numberOfSeats", target = "seatCount")
@Mapping(target = "metaClass", ignore = true)
CarDto carToCarDto(Car car)
}
然后你可以这样做:
class Main {
static main(args) {
Car car = new Car("Morris", 5, CarType.SEDAN);
CarDto carDto = CarMapper.INSTANCE.carToCarDto(car);
println carDto
}
}
它打印出:
main.CarDto(Morris, 5, SEDAN)
我有以下Java问题 我有以下通用类,它们可能被描绘为: 其中
问题内容: 有时,我只想为条目列表执行一个函数-例如: 有时我需要这些东西来进行模块初始化,所以我不想在全局名称空间中占用x之类的空间。一种解决方案是将map与lambda一起使用: 但这当然会创建一个不错的列表[None,None,…],所以我的问题是,是否存在没有返回列表的类似函数-因为我只是不需要它。 (当然,我也可以使用_x,因此不会留下可见的轮廓线-但地图解决方案看起来很整洁…) 问题答
这是我的新pom,简化了,我创建了新项目,并添加了最小值以能够运行spock http://maven.apache.org/maven-v4_0_0.xsd" 但我仍然无法运行测试,现在我得到了 信息:Groovyc:编译模型测试时:java。lang.NoClassDefFoundError:org需要org/codehaus/groovy/ast/MethodCallTransformati
问题内容: 我想要一张包含重复键的地图。 我知道有很多地图实现(Eclipse向我展示了大约50个),所以我敢肯定一定有一个允许这样做的地图实现。我知道编写自己的地图很容易做到这一点,但是我宁愿使用一些现有的解决方案。 也许在Commons Collections或Google Collections中? 问题答案: 你正在搜索多图,而commons-collection和Guava确实都有几种实
问题内容: 你是否知道在给定超时后会自动清除条目的Java Map或类似标准数据存储?这意味着老化,旧的过期条目会自动“老化”。 最好在可通过Maven访问的开源库中? 我知道自己实现该功能的方法,并且过去已经做过几次,所以我并不是在这方面寻求建议,而是寻求指向一个好的参考实现的指针。 像WeakHashMap这样的基于WeakReference的解决方案不是一个选择,因为我的密钥很可能是非int
我正在用-库在中创建一个随机图。 这将创建以下情节: 如你所见,它创建了两个不同的图——即使给定相同的节点和边。我如何让R图显示相同的图,这样我就可以在顺序相同的情况下突出显示一些边/节点。 目标是创建一个随机网络,在一定程度上,两个节点通过一条边连接(上面的例子是,对于节点)。然后,每次我绘制该图时,都会将节点绘制在同一点上(即使节点大小不同)。 我如何做到这一点?请注意,我不限于