You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Maven以部署去除Lombok处理后的库源码JAR?

嘿,我来给你一步步拆解怎么用Maven配置实现这个需求——把去除Lombok处理后的源码打包并部署到Maven仓库。结合你后来的更新,如果最后确定不需要部署delombok后的源码,那下面对应的sources JAR配置部分可以直接跳过,先给你完整的方案,按需调整就行。

第一步:配置Lombok Delombok Maven插件

首先你需要在pom.xml里添加Lombok的delombok插件,它负责把带Lombok注解的源码转换成标准Java源码。把这段配置加到<build><plugins>节点下:

<plugin>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven-plugin</artifactId>
    <version>1.18.30.0</version> <!-- 用最新稳定版即可 -->
    <executions>
        <execution>
            <phase>generate-sources</phase> <!-- 在源码生成阶段自动执行 -->
            <goals>
                <goal>delombok</goal>
            </goals>
            <configuration>
                <!-- 指定delombok后源码的输出目录 -->
                <outputDirectory>${project.build.directory}/delombok/src/main/java</outputDirectory>
                <!-- 匹配你要处理的源码文件,默认覆盖所有.java文件 -->
                <includes>
                    <include>**/*.java</include>
                </includes>
                <!-- 指定Java版本,和你的项目保持一致 -->
                <source>17</source> <!-- 换成你的项目实际Java版本,比如8/11/17 -->
                <target>17</target>
            </configuration>
        </execution>
    </executions>
</plugin>

这个配置会在Maven的generate-sources阶段自动把src/main/java下的带Lombok注解的代码转换成标准Java代码,输出到target/delombok/src/main/java目录。

第二步:让Maven使用Delombok后的源码打包Sources JAR

默认情况下,Maven的maven-source-plugin会打包src/main/java下的原始源码。如果你想部署的sources JAR里是delombok后的源码,需要修改这个插件的配置,让它指向我们生成的目录:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar-no-fork</goal>
            </goals>
            <configuration>
                <!-- 指定要打包的源码目录为delombok生成的目录 -->
                <sourceDirectory>${project.build.directory}/delombok/src/main/java</sourceDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

这样当你执行mvn deploy的时候,Maven会自动生成包含delombok后源码的sources JAR,并和主JAR一起部署到仓库。

可选:如果需要把Delombok后的源码纳入编译(不推荐)

一般来说不需要这么做,因为主JAR是用带Lombok注解的源码编译的(Lombok会在编译时自动处理)。但如果你有特殊需求必须用delombok后的源码编译主JAR,可以修改maven-compiler-plugin的源码目录:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <source>17</source>
        <target>17</target>
        <!-- 把编译源码目录换成delombok后的目录 -->
        <compileSourceRoots>
            <compileSourceRoot>${project.build.directory}/delombok/src/main/java</compileSourceRoot>
        </compileSourceRoots>
    </configuration>
</plugin>

再次强调,这个场景很少见,直接用Lombok编译更简洁,除非你有特殊的编译约束。

最后执行部署命令

配置完之后,直接运行:

mvn clean deploy

Maven会自动完成delombok、打包(主JAR+delombok后的sources JAR)、部署到你的Maven仓库的完整流程。

内容的提问来源于stack exchange,提问作者Slavkó Medvediev

火山引擎 最新活动