如何解决gradle构建时不会生成Clojure声明规则文件 编辑:
我有一个Spring应用程序,该应用程序集成了从java类触发的clara规则引擎(clojure)文件。使用gradle构建应用程序时,clojure文件不会作为JAR的一部分生成。
因此,在运行the jar时,它将引发以下异常:
Caused by: java.io.FileNotFoundException: Could not locate au/com/acme/mti/mec/runtime/rules/mec__init.class or au/com/acme/mti/mec/runtime/rules/mec.clj on classpath.
在构建/生成jar时,使gradle生成clj文件的最佳方法(或至少一种方法)是什么?
我已经在build.gradle文件中包含一个任务,用于将clj文件从src路径复制到构建路径。它将文件复制到构建路径下,但不在jar中。
build.gradle:
plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'jacoco'
}
group = 'au.com.acme.mti.mec'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
mavenLocal()
maven {
url "http://clojars.org/repo"
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.clojure:clojure:1.9.0'
implementation 'com.cerner:clara-rules:0.20.0'
implementation 'org.projectlombok:lombok'
}
}
task copyRules(type: Copy){
from 'src/main/resources/au.com.acme.mti.mec.runtime.rules/'
into 'build/classes/java/main/au/com/acme/mti/mec/runtime/rules/'
}
test {
test.dependsOn copyRules
useJUnitPlatform()
finalizedBy jacocoTestReport
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination file("${buildDir}/jacocoHtml")
}
}
解决方法
将Clojure文件(Clara规则)放置在某个位置,使其最终位于JAR内的正确位置,这将使复制任务成为绝对(不是用于构建JAR -至少从该部分开始)问题中可以看到build.gradle
中的一个。
- 将文件从
src/main/resources/au.com.acme.mti.mec.runtime.rules
移至src/main/resources/au/com/acme/mti/mec/runtime/rules
- 摆脱
copyRules
任务(它是dependsOn
)
编辑:
添加了一个显示最小工作示例的存储库,该存储库将clj文件仅放入资源https://github.com/christoph-frick/try-java-clara
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。