0
0

More than 1 year has passed since last update.

jdebプラグインを使ってMavenビルドでDEBファイルを作成する

Posted at

急遽Ubuntu対応が必要に

現在はCentOSで動かしているJavaコンポーネントを、将来的にはUbuntuで動かさなければいけないということで、Ubuntuで使われるパッケージであるDEBファイルの作成方法を調べていました。

現在はrpm-maven-pluginを使ってMavenビルドでRPMのビルドも完結させているので、DEBファイルのビルドもMavenビルドの中で済ませたいところ。

DEBファイルを作成するプラグインはいくつかあるようでしたが、jdebというプラグインが使いやすそうだったので、これを使ってみることにしました。

ちなみにビルドはRedHat上で行いましたが、問題なくDEBファイルをビルドすることができます。

jdebのXML表記方法

かなりシンプルなものですが、以下はpom.xmlに記述するjdebのサンプルです。

<build>
  <plugin>
    <groupId>org.vafer</groupId>
    <artifactId>jdeb<artifactId>
    <version>1.0</version>
    <executions>
      <execution>
        <id>deb</id>
        <phase>package</package>
        <goals>
          <goal>jdeb<jdeb>
        </goals>
        <configuration>
          <deb>target/hoge_1.0.0-0_amd64.deb</deb>
          <controlDir>src/deb/control</controlDir>
          <dataSet>
            <data>
              <type>file</type>
              <src>target/hoge-1.0.0.jar</src>
              <dst>/home/fuga/bin/hoge-1.0.0.jar</dst>
            </data>
            <data>
              <type>file</type>
              <src>src/main/resources/config.properties</src>
              <dst>/home/fuga/config/config.properties</dst>
            </data>
            <data>
              <type>file</type>
              <src>src/main/resources/run.sh</src>
              <dst>/home/fuga/run.sh</dst>
              <mapper>
                <type>perm</type>
                <filemode>744</type>
              </mapper>
            </data>
            <data>
              <type>file</type>
              <src>src/main/resources/run.sh</src>
              <dst>/home/fuga/stop.sh</dst>
              <mapper>
                <type>perm</type>
                <filemode>744</type>
              </mapper>
            </data>
          </dataSet>
        </configuration>
      </execution>
    </execution>
  </plugin>
</build>

ポイントとなるのはconfiguration以下の要素です。

configuration/deb

生成されるDEBファイル名を指定します。必須の要素ではなく、指定しなかった場合は、pom.xml内で定義されている変数に基づき「\${buildDirectory}/\${artifactId}_\${version}_all.deb」となります。

configuration/controlDir

controlファイル(後述)を配置するディレクトリを指定します。指定しなかった場合は、デフォルト値の「src/deb/control」が使用されます。

configuration/dataSet

インストールするファイルのマッピングはこのセクションに記述します。インストーするファイルやディレクトリの数だけdataセクションが連続します。

configuration/dataSet/data/type

インストールするファイルやディレクトリのタイプを指定します。公式によれば将来的に指定が必須となるとのことでしたが、現在は指定が必須なようです。fileの他にもdirectory, archiveなどが選択できます。

configuration/dataSet/data/src

インストールするファイルやディレクトリのパスを指定します。

configuration/dataSet/data/dst

ファイルやディレクトリのインストール先のパスを記述します。ファイルやディレクトリ自身の名称もパスに含めます。

configuration/dataSet/data/mapper

必須のセクションではありませんが、例えば起動シェルのようにファイルに実行権限を与える必要がある場合などに記述されます。

configuration/dataSet/data/mapper/perm

ファイルのパーミッションを変更する場合はpermと書きます。他にどのようなものがかけるのかは今のところ不明。

configuration/dataSet/data/mapper/filemode

ファイルパーミッションを記述します。例えば、ファイル所有者にRead&Write, 実行権限を付与する場合には744など。

controlファイルについて

rpm-maven-pluginではpom.xml上ですべての設定が完結していましたが、DEBファイルを作るためにはcontrolファイルというものを用意する必要があります。
これはdpkg-debコマンドなどを利用して作成する場合も同様です。

ファイルの内容は以下のような感じになります。

Package: hoge
Version: 1.0.0-0
Priority: required
Section: admin
Architecture: amd64
Maintainer: Takuro Tamura <fuga@xxx.com>
Description: jdeb build sample

他にも色々と書ける要素はありますが、ビルド時のエラーでこの7項目は必須とのメッセージが表示されました。

ファイル名は「control」とします。これをpom.xml内の<controlDir>で指定したディレクトリに配置します。(指定しなかった場合はデフォルトのsrc/deb/control)

これで「mvn package (-DskipTests=true)」を走らせれば、targetディレクトリ内にhoge_1.0.0-0_amd64.debという名前でDEBファイルがビルドされているはずです。

参考にしたサイト

1.公式チュートリアル

https://github.com/tcurdt/jdeb/blob/master/docs/maven.md

2.controlファイルの書式

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0