Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala SBT:如何运行注释处理插件_Scala_Jpa_Sbt_Querydsl - Fatal编程技术网

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

Scala SBT:如何运行注释处理插件,scala,jpa,sbt,querydsl,Scala,Jpa,Sbt,Querydsl,有人知道如何配置SBT项目来运行注释处理器(APT)吗?我正在一个web项目上做一些实验,使用一些Java工具,比如QueryDSL,我需要为我的JPA模型类生成QueryDSL类,就像QueryDSL Maven插件那样 提前感谢。您可以手动运行注释处理器(请参阅下面的命令)或执行类似于以下内容的SBT任务: lazy val processAnnotations = taskKey[Unit]("Process annotations") processAnnotations := {

有人知道如何配置SBT项目来运行注释处理器(APT)吗?我正在一个web项目上做一些实验,使用一些Java工具,比如QueryDSL,我需要为我的JPA模型类生成QueryDSL类,就像QueryDSL Maven插件那样


提前感谢。

您可以手动运行注释处理器(请参阅下面的
命令)或执行类似于以下内容的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)
lazy val processAnnotations=taskKey[Unit](“流程注释”)
processAnnotations:={
val log=streams.value.log
log.info(“处理注释…”)
val classpath=((编译中的产品).value++((编译中的dependencyClasspath.value.files))mkString:“
val destinationDirectory=(编译中的类目录)。值
val processor=“com.package.PluginProcessor”
val classesToProcess=Seq(“com.package.Class1”、“com.package.Class2”)mkString“”
val命令=s“javac-cp$classpath-proc:only-processor$processor-XprintRounds-d$destinationDirectory$classesToProcess”
failIfNonZeroExitStatus(命令,“处理注释失败”,日志)
info(“已完成处理注释”)
}
def failIfNonZeroExitStatus(命令:字符串,消息:=>字符串,日志:记录器){
val结果=命令!
如果(结果!=0){
日志错误(消息)
系统错误(“运行命令失败:”+命令)
}
}

packageBin在编译检查中,插件的详细信息在:
https://github.com/CedricGatay/play-querydsl/blob/master/src/main/scala/QueryDSLPlugin.scala
。您可以尝试运行代码,检查以下行:
Seq(“-proc:only”、“-processor”、“com.mysema.query.apt.jpa.JPAAnnotationProcessor”、“-s”、outputDirectory.getAbsolutePath))(streams.log)
我将在一些测试之后查看并发布结果。ThanksI无法在没有任何java源文件的Scala项目中实现这一点--“
javac-proc:only
”命令失败,因为“
javac:no-source files
”如何在
sbt.version=0.13.15
中编写它?