Maven executable jar〜実行可能Jarファイル出力〜

イントロダクション

RPiへのデプロイをする時にMacからJARファイルをSSHで転送するやり方は不便なので以下の手順でできないか検討してみます。

つまり、Windowsで開発して、できたものをラスパイ(RPi)で動かすのにはどうしたらよいか?を検討しました。

解決へ移動

デプロイのフロー

  1. Mac上で起動テストを行ったソースをGitへ登録(Push)
  2. RPiで上記のプロジェクトをダウンロード
  3. RPi上でソースをビルドしてJARファイルを作成

この手順でJARファイルを作成し、実行する、上記の手順はRPi起動時に自動実行する様にautostartファイルに記載する

開発端末でのMaven設定(pom.xml)

pom.xmlの構成

?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/maven-v4_0_0.xsd">

  <!-- プロジェクト設定 -->

 <build>
 <!-- 入出力の設定 -->
 <!-- DEFAULT RASPBERRY PI PROPERTIES -->
 <pi.host>XXX.XXX.XXX</pi.host>
 <pi.port>22</pi.port>
 <pi.user>user_name</pi.user>
 <pi.password>password</pi.password>
 <pi.deployDirectory>/home/user_name/</pi.deployDirectory>
 <pi.main.class>your.package.name.mainClass</pi.main.class>

 <plugins>
   <plugin> 
      <!-- ビルド設定:mvn [plugin name] --> 
   </plugin>
 </plugins>
</build>
 <reporting>
   <plugin>
      <!-- レポート設定 -->
   </plugin>
 </reporting>
 <dependencies>
   <dependency>
     <!-- ライブラリ依存関係の設定 -->
   </dependency>
 </dependencies>
</project>

この構成の中に必要な情報を記述する。

作成したpom.xml(テスト未実施)→失敗

<?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>zenryokuservice</groupId>
    <artifactId>PAppletRpiCtl</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <repositories>
        <repository>
            <id>RPiCtl</id>
            <url>https://github.com/ZenryokuService/rpictl</url>
        </repository>
    </repositories>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>http://repo1.maven.org/maven2/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.processing/core -->
        <dependency>
            <groupId>org.processing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.6</version>
        </dependency>
    </dependencies>
    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>libs/</classpathPrefix>
                            <mainClass>
                                pictl.swing.frame.RpiCtl
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Mac上でのMavenビルド結果(RPi上では未実施)

結果、上記の方法ではできませんでした。

原因

  1. 「マニフェスト属性がありません」と怒られる
  2. 「processingを使用するためのJARがない」と怒られる 

問題部分

  • pomファイルにマニフェストを追加していなかった
  • 参照するJARを出力するJARにインクルードしていなかった

足りない部分をpomファイルに記載してビルドする

processingから参照しているものがある様だ。。。

<修正箇所>

・jarプラグインのバージョンを追記

・${artifactId}を${project.artifactId}に修正

 

2018/09/29 現在:調査中

<参考サイト>

processing: https://github.com/processing/processing/releases

maven: https://www.ibm.com/developerworks/jp/java/library/j-5things13/

pom: https://stackoverflow.com/questions/49398894/unable-to-compile-simple-java-10-project-with-maven

補足

実はpomファイルでjarを出力する前にRPi上では画面を起動するために(processingを起動するためにXFCE4をインストール、起動する必要があります。

この部分に関しては後日。。。

2018-09-30現在

まるで動かない。。。違う手段を検討する。。。

解決

GIthubを使用して、Git経由で、プログラムを起動する。

つまり

  1. Windowsで作成したプログラムをGithubhへPUSH
  2. 他の端末でPULLして実行

上記の手段を用いることにする。

具体的に

必要なツールは以下のものになります。

  • Git
  • Maven

手順

以下の手順を踏みます。

Githubからのダウンロード

gitコマンドでインストールした後に、次のコマンドを使用します。

git clone GithubのURL

Mavenで実行する

作成したプロジェクトをクローンしたら次のコマンドで実行します。

mvn install

これで、必要なライブラリなどをインストールできます。

mvn exec:java

このコマンドで、Javaプログラムを起動できます。

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す