Github Java Maven Actions 持续集成 POM 是在引用自己

Posted

技术标签:

【中文标题】Github Java Maven Actions 持续集成 POM 是在引用自己【英文标题】:Github Java Maven Actions continuous integration POM is referencing itself 【发布时间】:2021-04-16 06:27:50 【问题描述】:

我在 Github Actions(继续集成)中遇到了这个问题,我在 maven 中创建的项目没有成功,因为 POM 正在引用自身。但是我不知道如何解决这个问题。

我的项目中有 4 个模块。

Pac - 父级,使用客户端、服务器、共享、UI

客户端 - 使用共享

服务器 - 使用客户端,共享

共享 - 不使用任何东西

UI - 使用客户端,共享

推送后的 Github Actions

[FATAL] 'dependencies.dependency.[fhict:client:1.0-SNAPSHOT]' for fhict:client:1.0-SNAPSHOT is referencing itself. @ fhict:Pac:1.0-SNAPSHOT, D:\a\Pacman-Multiplayer\Pacman-Multiplayer\pom.xml, line 37, column 21
[FATAL] 'dependencies.dependency.[fhict:server:1.0-SNAPSHOT]' for fhict:server:1.0-SNAPSHOT is referencing itself. @ fhict:Pac:1.0-SNAPSHOT, D:\a\Pacman-Multiplayer\Pacman-Multiplayer\pom.xml, line 43, column 21
[FATAL] 'dependencies.dependency.[fhict:shared:1.0-SNAPSHOT]' for fhict:shared:1.0-SNAPSHOT is referencing itself. @ fhict:Pac:1.0-SNAPSHOT, D:\a\Pacman-Multiplayer\Pacman-Multiplayer\pom.xml, line 31, column 21
 @ 
Error:  The build could not read 3 projects -> [Help 1]
Error:    
Error:    The project fhict:client:1.0-SNAPSHOT (D:\a\Pacman-Multiplayer\Pacman-Multiplayer\client\pom.xml) has 1 error
Error:      'dependencies.dependency.[fhict:client:1.0-SNAPSHOT]' for fhict:client:1.0-SNAPSHOT is referencing itself. @ fhict:Pac:1.0-SNAPSHOT, D:\a\Pacman-Multiplayer\Pacman-Multiplayer\pom.xml, line 37, column 21
Error:    
Error:    The project fhict:server:1.0-SNAPSHOT (D:\a\Pacman-Multiplayer\Pacman-Multiplayer\server\pom.xml) has 1 error
Error:      'dependencies.dependency.[fhict:server:1.0-SNAPSHOT]' for fhict:server:1.0-SNAPSHOT is referencing itself. @ fhict:Pac:1.0-SNAPSHOT, D:\a\Pacman-Multiplayer\Pacman-Multiplayer\pom.xml, line 43, column 21
Error:    
Error:    The project fhict:shared:1.0-SNAPSHOT (D:\a\Pacman-Multiplayer\Pacman-Multiplayer\shared\pom.xml) has 1 error
Error:      'dependencies.dependency.[fhict:shared:1.0-SNAPSHOT]' for fhict:shared:1.0-SNAPSHOT is referencing itself. @ fhict:Pac:1.0-SNAPSHOT, D:\a\Pacman-Multiplayer\Pacman-Multiplayer\pom.xml, line 31, column 21
Error:  
Error:  To see the full stack trace of the errors, re-run Maven with the -e switch.
Error:  Re-run Maven using the -X switch to enable full debug logging.
Error:  
Error:  For more information about the errors and possible solutions, please read the following articles:
Error:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
Error: Process completed with exit code 1.

Pac POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


    <groupId>fhict</groupId>
    <artifactId>Pac</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>client</module>
        <module>server</module>
        <module>shared</module>
        <module>UI</module>
    </modules>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>shared</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>client</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>server</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>


</project>

客户端 POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>fhict</groupId>
        <artifactId>Pac</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>client</artifactId>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jetty.websocket</groupId>
            <artifactId>javax-websocket-client-impl</artifactId>
            <version>9.4.15.v20190215</version>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>shared</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

服务器 POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>fhict</groupId>
        <artifactId>Pac</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>server</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.jetty.websocket</groupId>
            <artifactId>javax-websocket-server-impl</artifactId>
            <version>9.4.15.v20190215</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>shared</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>client</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>

</project>

共享 POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>fhict</groupId>
        <artifactId>Pac</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>shared</artifactId>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
    </dependencies>


</project>

UI POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Pac</artifactId>
        <groupId>fhict</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>UI</artifactId>


    <properties>
        <codeVersion>11</codeVersion>
        <openfxVersion>11.0.2</openfxVersion>
        <mavenVersion>3.8.0</mavenVersion>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>$openfxVersion</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>$openfxVersion</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>$openfxVersion</version>
        </dependency>

        <!-- Junit5 for unit testing -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>client</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>fhict</groupId>
            <artifactId>shared</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

【问题讨论】:

【参考方案1】:

不要在父项目中添加模块作为依赖项。

只需将它们添加为模块即可。

【讨论】:

以上是关于Github Java Maven Actions 持续集成 POM 是在引用自己的主要内容,如果未能解决你的问题,请参考以下文章

通过 GitHub Actions 自动发布项目到 Maven 中央仓库

通过 GitHub Actions 自动发布项目到 Maven 中央仓库

在 Github Actions 中获取 Maven 项目版本

如何在 Github Actions 工作流中从 Github 包访问 Maven 依赖项?

GitHub Actions 工作流

Maven 构建中的 -B 开关是啥?我在 GitHub Actions 中看到它,但在其他地方没有看到