我想通过SFTP将带有所有依赖项的构建jar上传到我的Raspberry Pi。因此我尝试使用maven-deploy-plugin。
我的配置如下:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>Raspberry Pi</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<pomFile>pom.xml</pomFile>
<file>target/${project.name}.jar</file>
<url>sftp://root@192.168.2.108/home/</url>
</configuration>
</execution>
</executions>
</plugin>
正如您已经看到的,上传的jar是一个带阴影的jar,由<finalName>${project.name}</finalName>
重命名
此外,我加入了wagon-ssh扩展并定义了Raspberry Pi:
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
<distributionManagement>
<repository>
<id>Raspberry Pi</id>
<url>sftp://192.168.2.108/home</url>
</repository>
</distributionManagement>
但是,如果我执行mvn:deploy,maven只会将原始jar上传到Raspberry Pi到groupId,artifactId和version的文件路径。
如果只上传没有目录的单个jar,我该怎么做。
答案 0 :(得分:0)
当您使用Deploy插件时,Maven会自动将其部署在以工件groupdId,artifactId等命名的文件夹中。此行为是内置的,您无法覆盖它,您可以做的事情不多它。
但是,您可以使用Wagon plugin通过SSH在您的RPI上直接上传,配置如下:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>upload-raspberry-pi</id>
<phase>deploy</phase>
<goals>
<goal>upload-single/goal>
</goals>
<configuration>
<fromFile>target/${project.name}.jar</fromFile>
<url>sftp://192.168.2.108/home</url>
</configuration>
</execution>
</executions>
</plugin>
上传将绑定到部署阶段,然后您可以像部署插件一样运行mvn deploy
,以便在您的计算机上上传您的JAR。
请注意,如果您使用的是Maven 3,则必须更新项目依赖项。根据{{3}}页面:
此插件不适用于Maven 3.0.x和3.1.x开箱即用 由于缺少以下库分发: commons-io-2.x,common-lang-2.x和jsoup-1.x.你可以调用 wagon:update-maven-3将丢失的文件添加到$ MAVEN_HOME / lib。看到 WAGON-407了解详情