如何使用Maven插件将jar部署到Raspberry Pi 2上

我有一个使用Pi4J的简单java类,它包含一个main方法。 我想构建它并将其部署到Raspberry Pi。 我在Windows 10上使用java 8,我的IDE是NetBeans 8.1。 如果项目设置为普通(非Maven)Java应用程序并设置为通过此处所示的NetBeans构建配置部署到Raspberry Pi,则项目将在jar上构建普通和FTP,然后运行它没有问题。 我想做同样但使用Maven。 问题是正在运行的代码具有C代码的原生设备,而我正在使用的Ma架构我正在使用的Maven插件似乎首先在我的本地盒子上运行jar,其中C代码将崩溃抛出exception

严重:无法使用路径加载[libpi4j.so]:[/ lib / libpi4j.so] java.lang.IllegalArgumentException:路径必须是绝对路径,但在com.pi4j.util中找到:\ lib \ libpi4j.so。 NativeLibraryLoader.loadLibraryFromClasspath(NativeLibraryLoader.java:120)at com.pi4j.util.NativeLibraryLoader.load(NativeLibraryLoader.java:92)at com.pi4j.wiringpi.Gpio。(Gpio.java:174)at com.pi4j.io. gpio.RaspiGpioProvider。(RaspiGpioProvider.java:51)com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:106)at com.pi4j.io.gpio.impl.GpioControllerImpl。(GpioControllerImpl.java:54) at com.pi4j.io.gpio.GpioFactory.getInstance(GpioFactory.java:89)at com.hadronix.pi4jsample2.ControlGpioExample.main(ControlGpioExample.java:24)

线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:com.pi4j.wiringpi.Gpio.wiringPiSetup()我在com.pi4j.io.gpio.RaspiGpioProvider的com.pi4j.wiringpi.Gpio.wiringPiSetup(Native Method)中。( RaspiGpioProvider.java:51)com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:106)位于com.pi4j的com.pi4j.io.gpio.impl.GpioControllerImpl。(GpioControllerImpl.java:54)。 io.gpio.GpioFactory.getInstance(GpioFactory.java:89)at com.hadronix.pi4jsample2.ControlGpioExample.main(ControlGpioExample.java:24)

如果我只是做一个干净的构建,它将构建良好并创建jar。 但是,如果我选择运行构建,那么崩溃发生的地方。 这是我用来将jar部署到Pi的Maven插件。

  maven-antrun-plugin    ControlGpioExample.jar install  run                     org.apache.ant ant-jsch ${ant-jsch.version}   com.jcraft jsch ${jsch.version}   ant-contrib ant-contrib ${ant-contrib.version}    

我试图弄清楚如何更改此插件,以便不在我的本地计算机上首先执行代码。 我只是想让它假设jar是构建的,ssh到远程Pi并复制jar然后在那里运行它。 此外,如果有人在使用Maven时有更好的方法,那么我愿意接受建议。 任何帮助都会很棒!

以下是我正在使用的链接 1的链接

提前致谢。

解决:这个pom文件将构建一个Pi4J示例用例的可执行JAR。 然后它会将JAR传输到Raspberry Pi,然后执行它。 在netbeans中,这是通过build命令完成的。 所以一个按钮来构建,部署和运行!

我不喜欢的一件事是它将依赖项作为包而不是原始JAR。 它还在构建时创建了2个JAR; 一个有一个没有依赖。 打开jar子,看看可以做些什么来改善结构。 随意优化并提供反馈。

另外,为了简单起见,我在这个pom文件中放入了我的RASPBERRY PI PROPERTIES。 但是,这些应该位于settings.xml文件中的受控用户主位置或其他位置。

注意:Pi4J具有C代码本机ARM依赖项,可防止它在非ARM体系结构上运行,并且必须发送到Pi。

  4.0.0 com.company Swarm 1.0-SNAPSHOT jar  UTF-8 1.8 1.8  192.168.1.20 22 root root /home/pi/artifacts com.company.test.ControlGpioExample    junit junit 3.8.1 test   com.pi4j pi4j-core 1.0       maven-assembly-plugin    true ${pi.main.class}    jar-with-dependencies     make-my-jar-with-dependencies package  single       org.apache.maven.plugins maven-antrun-plugin 1.8   install  run                 org.apache.ant ant-jsch 1.9.6