对父 pom 下的子模块使用 Maven-build-cache

Ven*_*n K 7 caching build maven

我有一个 Maven 项目,有 2 个模块和一个父 pom

<modules>
    <module>api</module>
    <module>service</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

我想利用 Maven 缓存扩展,并且我已将其添加到父 pom 的构建部分中

    <extensions>
        <extension>
            <groupId>org.apache.maven.extensions</groupId>
            <artifactId>maven-build-cache-extension</artifactId>
            <version>1.0.0</version>
        </extension>
    </extensions>
Run Code Online (Sandbox Code Playgroud)

我还添加了一个 maven-build-cache-config.xml 文件,但是似乎每次我运行时都会mvn clean package为我的子模块生成不同的校验和,因此我实际上并没有从缓存中受益,因为我所有的 java文件位于这些子模块中

不幸的是,我尝试了多种配置但没有运气

<?xml version="1.0" encoding="UTF-8" ?>
<cache xmlns="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0 http://maven.apache.org/xsd/cache-config-1.0.0.xsd">
    <configuration>
        <enabled>true</enabled>
        <hashAlgorithm>XX</hashAlgorithm>
    </configuration>
    <input>
        <global>
            <glob>{*.java,*.xml,*.properties}</glob>
            <includes>
                <include>recursive=api/*</include>
                <include>recursive=service/*</include>
            </includes>
        </global>
    </input>
</cache>
Run Code Online (Sandbox Code Playgroud)

如果没有更改,如何使此扩展实际缓存具有相同校验和的子模块的内容。我知道这个扩展是最近才出现的,我在网上找不到任何点击。

编辑

将其中一个子模块注释掉,实际上最终工作正常并且缓存正确启动。该扩展是否可能存在扫描单个模块的限制?

Ven*_*n K 1

事实证明,这个问题是一个“虚惊”。在我的 api 模块中,我有一个 swagger 文件,它将在ignore-generated文件夹中生成 POJO,因此解决方法是在这个特定模块中添加以下内容,然后一切都按预期工作,并进行适当的缓存。

<properties>
        <maven.build.cache.exclude.ignore-generated>${project.basedir}/ignore-generated</maven.build.cache.exclude.ignore-generated>
</properties>
Run Code Online (Sandbox Code Playgroud)