gpt4 book ai didi

scala - SBT:如何运行注释处理插件

转载 作者:行者123 更新时间:2023-12-05 00:24:53 24 4
gpt4 key购买 nike

有谁知道如何配置 SBT 项目来运行注释处理器 (APT)?我正在做一些关于 web 项目的实验,使用一些 Java 工具,比如 QueryDSL,我需要为我的 JPA 模型类生成 querydsl 类,以类似于 QueryDSL Maven 插件的方式。

提前致谢。

最佳答案

您可以手动运行注释处理器(请参阅下面的 command)或实现类似于以下内容的 SBT 任务:

lazy val processAnnotations = taskKey[Unit]("Process annotations")

processAnnotations := {
val log = streams.value.log

log.info("Processing annotations ...")

val classpath = ((products in Compile).value ++ ((dependencyClasspath in Compile).value.files)) mkString ":"
val destinationDirectory = (classDirectory in Compile).value
val processor = "com.package.PluginProcessor"
val classesToProcess = Seq("com.package.Class1", "com.package.Class2") mkString " "

val command = s"javac -cp $classpath -proc:only -processor $processor -XprintRounds -d $destinationDirectory $classesToProcess"

failIfNonZeroExitStatus(command, "Failed to process annotations.", log)

log.info("Done processing annotations.")
}


def failIfNonZeroExitStatus(command: String, message: => String, log: Logger) {
val result = command !

if (result != 0) {
log.error(message)
sys.error("Failed running command: " + command)
}
}

packageBin in Compile <<= (packageBin in Compile) dependsOn (processAnnotations in Compile)

更新 destinationDirectory , processor , 和 classesToProcess有必要的。

您还可以根据您拥有的注释处理器的类型将“-d”标志更改为“-s”(请参阅​​ options for javac )。

关于scala - SBT:如何运行注释处理插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com