我一直试图将一个打包的jar部署到一个连接到局域网的覆盆子pi上,静态IP为192.168.0.101到maven。这是我的pom.xml的重要部分:
<dependencies>
... SNIP ...
<!-- SSH & FTP -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-commons-net</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>1.10.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>scp-to-remote</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!-- Upload jar via ftp to /home/pi/server -->
<scp localFile="${project.basedir}/target/button-masher-1.0.jar"
remoteToFile="${rserver.user}@${rserver.ip}:${rserver.script.server.dir}" verbose="true"
password="${rserver.pass}" trust="true">
</scp>
<!-- calls deploy script -->
<sshexec host="${rserver.ip}" trust="yes"
username="${rserver.user}" password="${rserver.pass}"
command="sh ${rserver.script.server.startup}" />
<taskdef name="scp"
classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp"
classpathref="maven.plugin.classpath" />
<taskdef name="sshexec"
classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
classpathref="maven.plugin.classpath" />
<taskdef name="ftp"
classname="org.apache.tools.ant.taskdefs.optional.net.FTP"
classpathref="maven.plugin.classpath" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
这是一张图片,显示%ANT_HOME%/ lib jsch.jar和jsch-ant.jar存在(jsch是最新版本): ant_home/lib
每当我运行maven install(-Dmaven.test.skip = true)时,我都会收到此错误: error
但是所有蚂蚁所需的可选罐子/组件都存在。我使用的IDE是IntelliJ IDEA Ultimate。我使用windows cmd中的非捆绑(通常安装)maven版本来执行命令。
答案 0 :(得分:0)
wagon-maven-plugin可能是这类事情的正确选择......
您可以在pom文件中配置如下:
<project>
[...]
<build>
[...]
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.10</version>
</extension>
</extensions>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>upload-javadoc</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>local.dir</fromDir>
<includes>*</include>
<excludes>pom.xml</excludes>
<url>scp://your.remote.host/</url>
<toDir>remote.dir</toDir>
</configuration>
</execution>
</executions>
</plugin>
</build>
[...]
</project>
我建议通过Docker镜像或使用Ansible之类的东西来配置你的系统。
<强>增强:强>
执行命令可以通过以下方式完成:
<project>
[...]
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
<version>2.8</version>
</extension>
</extensions>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>execute-test-commands</id>
<phase>deploy</phase>
<goals>
<goal>sshexec</goal>
</goals>
<configuration>
<serverId>atlassian-public</serverId>
<url>scp://maven.atlassian.com/public</url>
<commands>
<command>/usr/share/tomcat/bin/tomcat stop</command>
<command>rm -rf /usr/share/tomcat/webapps/ROOT</command>
<command>unzip -o /usr/share/tomcat/webapps/myapp.zip -d /usr/share/tomcat/webapps/</command>
<command>/usr/share/tomcat/bin/tomcat start</command>
</commands>
</configuration>
</execution>
</executions>
</plugin>
</build>
[...]
</project>
答案 1 :(得分:0)
通过更改
修复maven.plugin.classpath
到
maven.compile.classpath