イントロダクション
RPiへのデプロイをする時にMacからJARファイルをSSHで転送するやり方は不便なので以下の手順でできないか検討してみます。
つまり、Windowsで開発して、できたものをラスパイ(RPi)で動かすのにはどうしたらよいか?を検討しました。
デプロイのフロー
- Mac上で起動テストを行ったソースをGitへ登録(Push)
- RPiで上記のプロジェクトをダウンロード
- 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上では未実施)
結果、上記の方法ではできませんでした。
原因
- 「マニフェスト属性がありません」と怒られる
- 「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経由で、プログラムを起動する。
つまり
- Windowsで作成したプログラムをGithubhへPUSH
- 他の端末でPULLして実行
上記の手段を用いることにする。
具体的に
必要なツールは以下のものになります。
- Git
- Maven
手順
以下の手順を踏みます。
Githubからのダウンロード
gitコマンドでインストールした後に、次のコマンドを使用します。
git clone GithubのURL
Mavenで実行する
作成したプロジェクトをクローンしたら次のコマンドで実行します。
mvn install
これで、必要なライブラリなどをインストールできます。
mvn exec:java
このコマンドで、Javaプログラムを起動できます。