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

如何将构建插件生成的Jar作为同一份POM文件中的依赖?

在同一POM中使用maven-antrun-plugin生成的Jar作为依赖?

这听起来或许有些特殊,但我有一份POM文件,其中通过build插件段生成了一个Jar文件(jkl.jar),我想了解是否可以将该生成的Jar文件也作为同一份POM中的依赖使用。以下是生成该Jar文件的插件段:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <id>generate-sources</id>
          <phase>generate-sources</phase>
          <configuration>
            <!-- 这里是插件配置内容 -->
          </configuration>
          <goals>
            <goal>run</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

当然可以实现,不过得用符合Maven构建生命周期的方式来处理,下面给你几种可行的方案,按推荐度排序:

方案1:拆分模块(最推荐的长期方案)

如果你的项目结构允许,这绝对是最优解。把生成jkl.jar的逻辑单独拆成一个Maven子模块,比如叫jkl-generator,在这个子模块里用maven-antrun-plugin完成Jar的生成和打包,然后主项目直接依赖这个子模块就行。

这种方式完全贴合Maven的依赖管理逻辑,从根本上避免了同一POM中构建顺序和依赖解析的冲突,后续维护也更清晰。

方案2:用maven-install-plugin把生成的Jar安装到本地仓库

这是在单模块项目里比较靠谱的方式,你可以在同一个POM里添加maven-install-plugin的执行,把生成好的jkl.jar安装到本地Maven仓库,之后就能像普通依赖一样引用它了。

配置步骤:

  1. 在build的plugins中添加maven-install-plugin的执行,绑定到install阶段(确保Jar已经生成):
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-install-plugin</artifactId>
  <executions>
    <execution>
      <id>install-generated-jar</id>
      <phase>install</phase>
      <goals>
        <goal>install-file</goal>
      </goals>
      <configuration>
        <file>${project.build.directory}/jkl.jar</file> <!-- 替换成你的Jar实际生成路径 -->
        <groupId>your.group.id</groupId>
        <artifactId>jkl</artifactId>
        <version>${project.version}</version>
        <packaging>jar</packaging>
      </configuration>
    </execution>
  </executions>
</plugin>
  1. 在dependencies段添加对应依赖:
<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>jkl</artifactId>
  <version>${project.version}</version>
</dependency>

注意事项:

第一次构建时可能会因为Maven的依赖解析阶段早于install阶段而报错,你可以先单独执行mvn install把Jar装到本地仓库,之后正常构建就没问题了。

方案3:使用system依赖(临时应急,不推荐)

这种方式脱离了Maven的仓库管理体系,只适合临时测试用,不建议长期使用。

配置步骤:

  1. 用maven-dependency-plugin把生成的Jar复制到项目的lib目录:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-generated-jar</id>
      <phase>process-resources</phase>
      <goals>
        <goal>copy</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <file>${project.build.directory}/jkl.jar</file>
            <outputDirectory>${project.basedir}/lib</outputDirectory>
          </artifactItem>
        </artifactItems>
      </configuration>
    </execution>
  </executions>
</plugin>
  1. 添加system类型的依赖:
<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>jkl</artifactId>
  <version>${project.version}</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/jkl.jar</systemPath>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:19