You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot项目Maven runtime scope不生效问题求助

解决SpringBoot中stanford-corenlp-models runtime scope仍被打包的问题

问题根源

Spring Boot Maven插件的默认逻辑是将runtime scope的依赖包含到最终的可执行Jar包中,这就是你设置了runtime但models依赖依然被打包的原因。而使用provided scope时,Maven不会把依赖打包,但IDEA默认也不会在运行时加载provided依赖,导致项目启动失败。

解决方案

方案1:配置Spring Boot插件排除指定依赖

在模块的pom.xml中,给spring-boot-maven-plugin添加排除规则,把models依赖从打包的Jar中移除,同时保留runtime scope确保IDEA开发时能正常加载依赖。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>edu.stanford.nlp</groupId>
                        <artifactId>stanford-corenlp</artifactId>
                        <classifier>models</classifier>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

执行mvn install后,models依赖不会被打入Jar包,同时开发时IDEA会自动加载该runtime依赖,不影响本地调试。

方案2:用Maven Profile区分开发/打包环境

通过Profile实现开发环境用runtime,打包环境切换为provided,灵活控制依赖的打包行为。

在模块pom.xml中添加:

<profiles>
    <!-- 默认激活开发环境,保留runtime scope -->
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>edu.stanford.nlp</groupId>
                <artifactId>stanford-corenlp</artifactId>
                <classifier>models</classifier>
                <scope>runtime</scope>
            </dependency>
        </dependencies>
    </profile>
    <!-- 打包时激活该Profile,使用provided排除依赖 -->
    <profile>
        <id>package</id>
        <dependencies>
            <dependency>
                <groupId>edu.stanford.nlp</groupId>
                <artifactId>stanford-corenlp</artifactId>
                <classifier>models</classifier>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>
  • 开发时正常运行项目即可,无需额外配置
  • 打包时执行命令:mvn install -P package,生成的Jar包将不包含models依赖

方案3:手动配置IDEA加载provided依赖(适合坚持用provided的场景)

如果一定要使用provided scope,可在IDEA中手动将该依赖加入运行时classpath:

  • 打开Run/Debug Configurations
  • 选中你的Spring Boot运行配置
  • 切换到Dependencies标签页
  • 点击+按钮,选择Library,找到stanford-corenlp:models依赖添加进去
    这样IDEA运行项目时会自动加载该provided依赖,解决启动报错问题。

推荐方案

优先选择方案1,无需切换环境或手动配置IDEA,一步解决打包体积和开发运行的矛盾。

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:53:15