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

Maven多模块构建报错:无法找到跨模块资源StartupConfiguration

解决方案

1. 依赖WebREST模块的资源(推荐)

在Maven多模块项目中,模块间可通过依赖共享资源。你可以在ConfigurationEngine模块的pom.xml中添加对WebREST模块的依赖,根据需求指定作用域,同时确保WebREST模块的资源被正确打包进jar。

  • 修改ConfigurationEngine的pom.xml:
<dependencies>
    <!-- 依赖WebREST模块 -->
    <dependency>
        <groupId>你的项目groupId</groupId>
        <artifactId>WebREST</artifactId>
        <version>项目版本号</version>
        <!-- 仅测试用例需要则用test scope,主代码也需要则去掉此行 -->
        <scope>test</scope>
    </dependency>
</dependencies>
  • 检查WebREST模块的pom.xml,确保自定义资源目录被配置(默认src/main/resources会自动打包,src/main/prod需手动添加):
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/prod</directory>
        </resource>
    </resources>
</build>

配置完成后,WebREST打包时会包含两个目录的资源,ConfigurationEngine在对应阶段就能通过依赖访问到这些资源。

2. 提取共享资源到独立模块

如果该资源是多个模块共用的,更规范的做法是将其迁移到专门的资源模块(比如common-resources),再让ConfigurationEngine和WebREST都依赖这个模块。

  • 操作步骤:
    1. 创建新模块common-resources,将StartupConfiguration资源放入该模块的src/main/resources目录。
    2. 在WebREST和ConfigurationEngine的pom.xml中添加依赖:
<dependency>
    <groupId>你的项目groupId</groupId>
    <artifactId>common-resources</artifactId>
    <version>项目版本号</version>
    <!-- 根据实际需求指定scope -->
</dependency>

这种方式符合Maven模块化设计思想,避免资源分散维护,后续其他模块需要时可直接依赖。

3. 用Maven资源插件自动复制资源

如果不想调整依赖结构,可借助maven-resources-plugin在ConfigurationEngine的测试阶段自动从WebREST模块复制资源到测试类路径,无需手动操作。

在ConfigurationEngine的pom.xml的build节点下添加:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.3.1</version>
        <executions>
            <execution>
                <id>copy-test-resources</id>
                <phase>process-test-resources</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
                    <resources>
                        <resource>
                            <directory>${project.parent.basedir}/WebREST/src/main/resources</directory>
                            <includes>
                                <include>StartupConfiguration*</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>${project.parent.basedir}/WebREST/src/main/prod</directory>
                            <includes>
                                <include>StartupConfiguration*</include>
                            </includes>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

执行mvn package时,插件会自动将指定资源复制到ConfigurationEngine的测试类路径中。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:07:32