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

请求提供Maven配置:生成仅含Netflix DGS生成类的独立JAR

解决方案

要生成仅包含Netflix DGS Schema生成类的独立JAR,你可以通过配置Maven的jar插件创建分类器JAR,同时确保生成的源码被正确纳入编译流程。以下是完整的Maven配置:

1. 识别DGS生成类的目录

首先用build-helper-maven-plugin将DGS默认的生成源码目录(target/generated-sources/graphql-java)添加到编译源路径,确保Maven能识别这些生成类:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>${project.build.directory}/generated-sources/graphql-java</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

2. 生成仅含生成类的分类器JAR

配置maven-jar-plugin创建带分类器(如graphql-types)的JAR,只打包DGS生成的类,排除项目自身的业务代码:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>graphql-types-jar</id>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <!-- 分类器,用于区分主JAR和生成类JAR -->
                        <classifier>graphql-types</classifier>
                        <!-- 仅包含DGS生成类的路径(根据实际包结构调整) -->
                        <includes>
                            <include>com/yourcompany/**/graphql/types/**</include>
                            <!-- 生成类在其他路径的话,补充对应规则 -->
                        </includes>
                        <!-- 排除项目自身的业务代码 -->
                        <excludes>
                            <exclude>com/yourcompany/**/service/**</exclude>
                            <exclude>com/yourcompany/**/controller/**</exclude>
                            <!-- 根据项目结构添加需要排除的包 -->
                        </excludes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

3. 可选:发布分类器JAR到仓库

如果要将这个生成类JAR发布到Maven仓库供其他服务使用,添加以下配置:

<!-- 安装到本地仓库 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>install-graphql-types-jar</id>
                    <phase>install</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>${project.build.directory}/${project.artifactId}-${project.version}-graphql-types.jar</file>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                        <classifier>graphql-types</classifier>
                        <packaging>jar</packaging>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <!-- 部署到远程仓库 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>deploy-graphql-types-jar</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy-file</goal>
                    </goals>
                    <configuration>
                        <file>${project.build.directory}/${project.artifactId}-${project.version}-graphql-types.jar</file>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                        <classifier>graphql-types</classifier>
                        <packaging>jar</packaging>
                        <url>${project.distributionManagement.repository.url}</url>
                        <repositoryId>${project.distributionManagement.repository.id}</repositoryId>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

4. 其他服务依赖该JAR的方式

其他服务需要使用这个生成类JAR时,在pom.xml中添加如下依赖:

<dependency>
    <groupId>com.yourcompany</groupId>
    <artifactId>your-project-artifact-id</artifactId>
    <version>your-project-version</version>
    <classifier>graphql-types</classifier>
</dependency>

关键注意事项

  • 务必调整<includes>和<excludes>中的包路径,匹配你的DGS生成类实际所在的包结构。
  • 确保DGS插件已正确配置,能在generate-sources阶段将类生成到指定目录。
  • 避免使用shade/assembly插件,这类插件会合并依赖或打包所有内容,易引发类路径冲突或“包不存在”问题,分类器JAR的方式更轻量精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:22:22