如何在maven构建后上传阴影jar?

时间:2017-11-19 19:21:30

标签: java maven deployment jar

我想通过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,我该怎么做。

1 个答案:

答案 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了解详情