Skip to main content

On This Page

Building Debian deb Packages From Java Builds Using jdeb

2 min read
Share

These articles are AI-generated summaries. Please check the original sources for full details.

Building Debian deb Packages From Java Builds Using jdeb

jdeb enables Java projects to generate Debian packages on Windows and macOS without Debian dependencies. The tool automates the creation of deb files by abstracting the complex structure of control.tar and data.tar archives.

Why This Matters

Manually crafting deb files requires precise handling of metadata, file hierarchies, and permissions, which is error-prone for complex builds. jdeb streamlines this by integrating with Maven and Ant, reducing packaging errors and ensuring consistent output. A misconfigured data.tar can lead to failed installations, costing hours in debugging.

Key Insights

  • “jdeb generates control.tar with metadata and data.tar with installable files”
  • “Mappers define file placement in /opt and /usr/bin”
  • “jdeb supports Maven and Ant for cross-platform packaging”

Working Example

<!-- Maven POM configuration for jdeb -->
<plugin>
  <artifactId>jdeb</artifactId>
  <groupId>org.vafer</groupId>
  <version>1.14</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>jdeb</goal>
      </goals>
      <configuration>
        <controlDir>${basedir}/src/main/resources/deb/control</controlDir>
        <dataSet>
          <data>
            <src>${project.build.directory}/${project.build.finalName}.jar</src>
            <type>file</type>
            <mapper>
              <type>perm</type>
              <prefix>/opt/${project.artifactId}</prefix>
            </mapper>
          </data>
        </dataSet>
      </configuration>
    </execution>
  </executions>
</plugin>
<!-- Ant build.xml configuration for jdeb -->
<taskdef name="deb" classname="org.vafer.jdeb.ant.DebTask" classpathref="jdeb.classpath" />
<target name="deb" depends="jar">
  <deb destFile="${build.dir}/${app.name}_${app.version}_all.deb" controlDir="${control.dir}">
    <data src="${build.dir}/${app.name}.jar" type="file">
      <mapper type="perm" prefix="/usr/share/${app.name}" />
    </data>
  </deb>
</target>

Practical Applications

  • Use Case: Java CLI tools requiring Debian packaging for Linux distributions
  • Pitfall: Incorrect file permissions in data.tar may prevent execution or trigger security warnings

References:


Continue reading

Next article

Checkbox Aria TagHelper for ASP.NET Core Accessibility

Related Content