Maven jdeb plugin generates two deb packages

Viewed 212

My maven pom for executing the jdeb plugin generates two different deb packages:

  • a deb package which looks like it is configured according to jdeb defaults
  • the requested deb package

How can I supress the first default output?

Here is the pom file:

<?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>        
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.vafer</groupId>
          <artifactId>jdeb</artifactId>
          <version>1.9</version>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>jdeb</goal>
              </goals>                                      
              <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>
            </execution>
          </executions>
        </plugin>         
      </plugins>
    </pluginManagement>
  </build>      
</project>

If I run this with mvn clean package, it generates the following output showing it creating both the default output debtestpackage_100_all.deb and the requested debtest_100.deb in two separate executions of the jdeb plugin:

[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< debtest:debtestpackage >-----------------------
[INFO] Building debtestpackage 100
[INFO] --------------------------------[ deb ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ debtestpackage ---
[INFO] Deleting /home/xxx/dev/debtest/debtestpackage/target
[INFO] 
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ debtestpackage ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory /home/xxx/dev/debtest/debtestpackage/src/main/resources
[INFO] 
[INFO] --- jdeb:1.9:jdeb (default-jdeb) @ debtestpackage ---
[INFO] Creating debian package: /home/xxx/dev/debtest/debtestpackage/target/debtestpackage_100_all.deb
[INFO] Building conffiles
[INFO] Skipping 'conffiles' generation. No entries defined in maven/pom or ant/build.xml.
[INFO] Creating changes file: /home/xxx/dev/debtest/debtestpackage/target/debtestpackage_100_all.changes
[INFO] Attaching created debian package /home/xxx/dev/debtest/debtestpackage/target/debtestpackage_100_all.deb
[INFO] 
[INFO] --- jdeb:1.9:jdeb (default) @ debtestpackage ---
[INFO] Creating debian package: /home/xxx/dev/debtest/debtestpackage/target/debtest_100.deb
[INFO] Building conffiles
[INFO] Skipping 'conffiles' generation. No entries defined in maven/pom or ant/build.xml.
[INFO] Creating changes file: /home/xxx/dev/debtest/debtestpackage/target/debtestpackage_100_all.changes
[INFO] Attaching created debian package /home/xxx/dev/debtest/debtestpackage/target/debtest_100.deb
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.516 s
[INFO] Finished at: 2021-12-06T11:08:50Z
[INFO] ------------------------------------------------------------------------

If I run it with mvn jdeb:jdeb it just generates the default .deb file, not the requested file.

1 Answers

With help from the developers at https://github.com/tcurdt/jdeb/issues/394 I resolved this question by removing the <execution> wrapper from the <configuration> section. The revised pom produces just the required .deb file:

<?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>        
    <pluginManagement>
      <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>
        </plugin>         
      </plugins>
    </pluginManagement>
  </build>      
</project>
Related