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

Java7环境下Maven打包后Jar缺失生成类的问题求助

问题分析与解决

你的Jar包仅包含META-INF目录和Manifest文件,核心原因是生成的Java源码未被Maven编译,问题出在代码生成插件的目录配置上:

1. 错误的源码生成目录

你使用cxf-codegen-plugin和maven-jaxb2-plugin时,都将生成的源码输出到target/main/java,但Maven默认仅编译src/main/java目录下的代码,且target属于构建输出目录,不会被编译器主动扫描,同时该路径也不符合Maven标准目录结构,导致生成的源码被忽略。

修复步骤

步骤1:修改代码生成插件的输出目录

将两个插件的源码输出路径改为Maven标准的生成源码目录(各自独立子目录避免冲突),并让Maven识别这些目录:

调整cxf-codegen-plugin配置:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <!-- 修改为标准生成目录 -->
                <sourceRoot>target/generated-sources/cxf</sourceRoot>
                <defaultOptions></defaultOptions>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>data/external/wsdls/resourceMgmt.wsdl</wsdl>
                    </wsdlOption>
                    <wsdlOption>
                        <wsdl>data/external/wsdls/customerMgmt.wsdl</wsdl>
                    </wsdlOption>
                    <wsdlOption>
                        <wsdl>data/external/wsdls/customerCompositeView.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

调整maven-jaxb2-plugin配置:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.13.3</version>
    <executions>
        <execution>
            <id>myabcdvar</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <!-- 修改为标准生成目录 -->
                <generateDirectory>target/generated-sources/jaxb</generateDirectory>
                <schemaDirectory>data/external/xsd/Development</schemaDirectory>
                <removeOldOutput>false</removeOldOutput>
                <verbose>true</verbose>
                <excludeTransitive>true</excludeTransitive>
                <extension>true</extension>
                <strict>false</strict>
                <forceRegenerate>true</forceRegenerate>
                <!-- <bindingDirectory>data/external/binding</bindingDirectory> -->
            </configuration>
        </execution>
    </executions>
</plugin>

步骤2:添加插件识别生成的源码目录

在<build><plugins>下加入build-helper-maven-plugin,将生成目录纳入Maven源码扫描范围:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>target/generated-sources/cxf</source>
                    <source>target/generated-sources/jaxb</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

步骤3:验证构建结果

先执行mvn clean compile,检查target/classes目录下是否出现编译后的class文件;确认后执行mvn clean package,此时生成的Jar包应包含所有类文件。

补充:如果项目有自定义源码,确保存放在src/main/java目录(Maven默认主源码目录),会被自动编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:47:00