能否通过JAR打包在Camunda Spring Boot应用间复用DMN?
可以将包含DMN文件的Camunda Spring Boot应用打包为JAR供其他应用复用
调整原应用的打包配置
不要直接用Spring Boot默认的可执行JAR(包含全套依赖,不适合作为依赖引入),需要修改构建配置生成普通类库JAR:- Maven:移除
spring-boot-maven-plugin的executable配置,改用maven-jar-plugin打包仅包含自身代码和资源(DMN文件)的JAR。 - Gradle:使用
jar任务替代bootJar任务,确保生成的JAR不包含Spring Boot启动依赖。
- Maven:移除
确保DMN文件被正确打包
将需复用的DMN文件放在原应用的src/main/resources目录下(比如src/main/resources/dmn/),打包时这些文件会被包含在JAR的resources路径中,方便目标应用读取。在目标应用中引入该JAR依赖
- Maven:将打包好的JAR安装到本地仓库(执行
mvn install:install-file)或上传至私有仓库,然后在目标应用的pom.xml中添加对应依赖坐标。 - Gradle:将JAR放入本地/私有仓库后,在
build.gradle中添加依赖配置。
- Maven:将打包好的JAR安装到本地仓库(执行
在目标应用中加载复用的DMN
Camunda会自动扫描类路径下的DMN文件,JAR引入后,目标应用启动时会自动加载这些决策表,你可以直接通过决策表的key调用,和使用本地DMN无差异。若需指定扫描路径,可自定义Camunda配置:@Bean public DecisionEngineConfiguration decisionEngineConfiguration() { DecisionEngineConfiguration config = new DecisionEngineConfigurationImpl(); config.setResourceRootPath("classpath:dmn/"); return config; }注意事项
- 保证两个应用的Camunda版本一致,避免DMN解析的兼容性问题。
- 打包时尽量只保留DMN文件和必要辅助类,不要引入无关业务代码和依赖,防止出现依赖冲突。
内容的提问来源于stack exchange,提问作者Sunny Sonar
相关产品推荐
相关产品推荐

