Tôi đang cố định cấu hình IDE Eclipse (2021-09 (4.21.0)) trên Ubuntu 20.04 để gỡ lỗi từ xa các ứng dụng java trên RaspberryPi. Tôi đã làm theo nhiều 'hướng dẫn' (liên kết1, liên kết2). Với sự kết hợp của cả hai và tìm kiếm chuyên sâu các thông báo lỗi trên web, tôi đã có thể tạo lại tệp pom.xml và tệp build.xml
pom.xml
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org
/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pi</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hello</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>pi.hello.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="hello" default="remote-run" basedir="."
xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<!-- Setup RASPBERRY PI properties -->
<property name="raspberrypi" value="192.168.4.2" />
<property name="raspberryfolder" value="~" />
<property name="username" value="pi" />
<property name="password" value="raspberry" />
<!--
<path id="maven-ant-tasks.classpath" path="${ant.libs.dir}/maven-ant-tasks-2.1.3.jar" />
<typedef
resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="maven-ant-tasks.classpath" />
<path id="maven-ant-tasks.classpath" path="lib/maven-ant-tasks-2.1.3.jar" />
<typedef
resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="maven-ant-tasks.classpath" />
-->
<!-- Add maven install target to be run before deploy -->
<target name="maven-install">
<artifact:mvn pom="pom.xml">
<arg value="install"/>
</artifact:mvn>
</target>
<!-- Locate the prokect jar and transfer via scp to RASPBERRY PI -->
<target name="transfer" depends="maven-install">
<first id="jars">
<!--
<fileset dir="target" includes="**/*-SNAPSHOT-jar-with-dependencies.jar" />
-->
<fileset dir="target" includes="**/*.jar" />
</first>
<pathconvert pathsep="," property="jar.path" refid="jars" />
<basename file="${jar.path}" property="jar.filename" />
<echo>">>> Found application ${jar.path}"</echo>
<echo>">>> Copying application to ${raspberrypi}:${raspberryfolder}/${jar.filename}"</echo>
<scp
localfile="${jar.path}"
todir="${username}:${password}@${raspberrypi}:${raspberryfolder}"
trust="true" />
</target>
<!-- Run java -->
<target name="remote-run" depends="transfer">
<echo>">>> Starting ${raspberrypi}:${raspberryfolder}/${jar.filename}"</echo>
<sshexec
host="${raspberrypi}"
username="${username}"
password="${password}"
trust="true"
failonerror="true"
usepty="true"
command="java -jar ${jar.filename}" />
</target>
<!-- Run java in debug mode and keep waiting for execution -->
<target name="remote-debug" depends="transfer">
<echo>">>> Starting ${raspberrypi}:${raspberryfolder}/${jar.filename} in debug mode"</echo>
<sshexec
host="${raspberrypi}"
username="${username}"
password="${password}"
trust="true"
failonerror="true"
usepty="true"
command="java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=y -jar ${jar.filename}" />
</target>
</project>
Đầu ra khi build.xml được biên dịch bằng cách sử dụng
Chạy dưới dạng -> Xây dựng kiến
kết quả trong
cài đặt maven:
[artifact:mvn] [INFO] Đang quét các dự án...
[hiện vật:mvn] [THÔNG TIN] ------------------------------------------ ------------------------------
[artifact:mvn] [INFO] Tòa nhà xin chào
[artifact:mvn] [INFO] phân đoạn nhiệm vụ: [install]
[hiện vật:mvn] [THÔNG TIN] ------------------------------------------ ------------------------------
[tạo phẩm:mvn] [THÔNG TIN] [tài nguyên:tài nguyên]
[artifact:mvn] [INFO] Sử dụng mã hóa 'UTF-8' để sao chép tài nguyên đã lọc.
[tạo tác: mvn] [INFO] bỏ qua thư mục tài nguyên không tồn tại /media/stefan/DATA/Electronics/java/hello/src/main/resources
[artifact:mvn] [INFO] [trình biên dịch:biên dịch]
[artifact:mvn] [INFO] Không có gì để biên dịch - tất cả các lớp đều được cập nhật
[artifact:mvn] [INFO] [resources:testResources]
[artifact:mvn] [INFO] Sử dụng mã hóa 'UTF-8' để sao chép tài nguyên đã lọc.
[tạo tác: mvn] [INFO] bỏ qua thư mục tài nguyên không tồn tại /media/stefan/DATA/Electronics/java/hello/src/test/resources
[tạo tác:mvn] [THÔNG TIN] [trình biên dịch:testCompile]
[artifact:mvn] [INFO] Không có gì để biên dịch - tất cả các lớp đều được cập nhật
[tạo phẩm:mvn] [THÔNG TIN] [chắc chắn thành công:thử nghiệm]
[artifact:mvn] [INFO] Thư mục báo cáo chắc chắn: /media/stefan/DATA/Electronics/java/hello/target/surefire-reports
[hiện vật:mvn] --------------------------------------------- ----------
[hiện vật:mvn] T E S T S
[hiện vật:mvn] --------------------------------------------- ----------
[tạo tác:mvn] Đang chạy pi.hello.AppTest
[artifact:mvn] Chạy thử: 1, Lỗi: 0, Lỗi: 0, Đã bỏ qua: 0, Thời gian đã trôi qua: 0,021 giây
[tạo tác:mvn] Kết quả:
[artifact:mvn] Chạy thử: 1, Lỗi: 0, Lỗi: 0, Đã bỏ qua: 0
[tạo phẩm:mvn] [THÔNG TIN] [jar:jar]
[tạo phẩm:mvn] [THÔNG TIN] [cài đặt:cài đặt]
[artifact:mvn] [INFO] Đang cài đặt /media/stefan/DATA/Electronics/java/hello/target/hello-0.0.1-SNAPSHOT.jar vào /home/stefan/.m2/repository/pi/hello/0.0. 1-SNAPSHOT/hello-0.0.1-SNAPSHOT.jar
[hiện vật:mvn] [THÔNG TIN] ------------------------------------------ ------------------------------
[artifact:mvn] [INFO] XÂY DỰNG THÀNH CÔNG
[hiện vật:mvn] [THÔNG TIN] ------------------------------------------ ------------------------------
[artifact:mvn] [INFO] Tổng thời gian: 1 giây
[tạo tác:mvn] [INFO] Kết thúc lúc: Thứ ba ngày 30 tháng 11 17:12:36 CET 2021
[artifact:mvn] [INFO] Bộ nhớ cuối cùng: 18M/70M
[hiện vật:mvn] [THÔNG TIN] ------------------------------------------ ------------------------------
chuyển khoản:
[echo] ">>> Đã tìm thấy ứng dụng /media/stefan/DATA/Electronics/java/hello/target/hello-0.0.1-SNAPSHOT.jar"
[echo] ">>> Đang sao chép ứng dụng sang 192.168.4.2:~/hello-0.0.1-SNAPSHOT.jar"
[scp] Đang kết nối với 192.168.4.2:22
[scp] xong.
chạy từ xa:
[echo] ">>> Bắt đầu từ 192.168.4.2:~/hello-0.0.1-SNAPSHOT.jar"
[sshexec] Đang kết nối với 192.168.4.2:22
[sshexec] cmd : java -jar xin chào-0.0.1-SNAPSHOT.jar
[sshexec] Xin chào thế giới!
[sshexec]
XÂY DỰNG THÀNH CÔNG
Tổng thời gian: 6 giây
Mọi tổ hợp plugin hoặc tạo phẩm khác cho build.xml mặc định của dự án maven (được tạo thông qua trình hướng dẫn) đã tạo ra lỗi do phiên bản sai trong một số plugin (ngay cả khi đã cài đặt đúng phiên bản
Lỗi giải quyết phiên bản cho 'org.apache.maven.plugins:maven-resource-plugin': Plugin yêu cầu phiên bản Maven 3.0
Phiên bản hiện tại
phiên bản mvn
Apache Maven 3.6.3
Trang chủ Maven: /usr/share/maven
Phiên bản Java: 11.0.11, nhà cung cấp: Ubuntu, thời gian chạy: /usr/lib/jvm/java-11-openjdk-amd64
Ngôn ngữ mặc định: en_US, mã hóa nền tảng: UTF-8
Tên hệ điều hành: "linux", phiên bản: "5.11.0-40-generic", vòm: "amd64", họ: "unix"
Để bắt đầu làm việc, tôi không muốn thay đổi tệp build.xml hiện tại của mình.
Đối với bước cuối cùng trong cấu hình, tôi cần làm cho trình khởi chạy từ xa hoạt động. Làm theo các hướng dẫn, cửa sổ cấu hình trông giống như
Kiểm tra kết quả kết nối trong
Vì quá trình xây dựng có thể kết nối qua ssh, đặt và chạy jar, tôi không biết tại sao không thể thiết lập kết nối. Tham số cho kết nối được lưu trữ trong tệp pom.xml. Tôi không chắc các mục trong cấu hình gỡ lỗi làm gì. Có thể thiết lập một thiết bị đầu cuối trên RPi bằng cách sử dụng các lệnh dòng lệnh cho kết nối ssh (ssh pi@). Không nên có một vấn đề truy cập bảo mật.
- Tại sao cấu hình từ xa cần địa chỉ, cổng khi kết nối đã được xác định trong tệp pom.xml?
- Build.xml có được gọi bằng cách sử dụng 'Debug_As->RPi_Remote' (cấu hình gỡ lỗi đã tạo) không?
- Làm cách nào tôi có thể gọi tệp build.xml và cho phép sử dụng các điểm dừng?