没有找到SCP任务(通过maven蚂蚁跑)

时间:2017-01-21 15:20:26

标签: java maven intellij-idea ant maven-antrun-plugin

我一直试图将一个打包的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版本来执行命令。

2 个答案:

答案 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