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

Maven jdeb插件打包生成两个deb包,如何屏蔽默认输出的包?

问题原因

你配置的jdeb插件执行两次的核心原因是:

  • 你将项目的<packaging>设置为deb后,jdeb扩展会自动注册一个id为default-jdeb的执行绑定到package生命周期阶段,走默认配置生成deb包
  • 你额外新增了一个jdeb执行,没有覆盖默认的执行逻辑,所以两次执行分别生成了默认包和自定义包
    另外执行mvn jdeb:jdeb仅生成默认包,是因为命令行直接调用插件goal时,默认读取插件全局配置,不会读取execution内的配置,且你当前的插件配置放在pluginManagement节点下,当前模块不会直接生效。
解决方法

按照如下步骤修改你的pom即可:

  1. 将自定义的jdeb execution的id改为default-jdeb,覆盖默认的执行逻辑,避免重复执行
  2. 把jdeb插件从pluginManagement节点下移到build -> plugins节点下,让当前模块直接读取配置
  3. 如果需要mvn jdeb:jdeb命令也使用你的自定义配置,可将configuration节点提到plugin全局级别,不要放在execution内部
修改后的完整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>debtest</groupId>
  <artifactId>debtestpackage</artifactId>
  <version>100</version>
  <packaging>deb</packaging>
  <name>debtestpackage</name>
  <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
  <build>
    <extensions>
      <extension>
        <groupId>org.vafer</groupId>
        <artifactId>jdeb</artifactId>
        <version>1.9</version>
      </extension>
    </extensions>        
    <plugins>
      <plugin>
        <groupId>org.vafer</groupId>
        <artifactId>jdeb</artifactId>
        <version>1.9</version>
        <!-- 全局配置,命令行调用也会生效 -->
        <configuration>
          <deb>${project.basedir}/target/debtest_${project.version}.deb</deb>
          <type>deb</type>
          <controlDir>${project.basedir}/src/deb/control</controlDir>
          <dataSet>
            <data>
              <src>${project.basedir}/../debtest/target/debtest-${project.version}.jar</src>
              <type>file</type>
              <mapper>
                <type>perm</type>
                <prefix>/opt/debtest</prefix>
              </mapper>
            </data>
          </dataSet>
        </configuration>
        <executions>
          <execution>
            <!-- id改为default-jdeb覆盖默认执行 -->
            <id>default-jdeb</id>
            <phase>package</phase>
            <goals>
              <goal>jdeb</goal>
            </goals>
          </execution>
        </executions>
      </plugin>         
    </plugins>
  </build>      
</project>

修改后执行mvn clean package只会生成你自定义的debtest_100.deb,执行mvn jdeb:jdeb也会生成相同的自定义包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:01