Ошибка SCP Maven Ant - PullRequest
       39

Ошибка SCP Maven Ant

0 голосов
/ 06 декабря 2011

когда я запускаю «maven-antrun-plugin» (maven 3.0.3) с командой ant:

 <scp />

Я получаю: Проблема: не удалось создать задачу или набрать scp [ОШИБКА]Причина: класс org.apache.tools.ant.taskdefs.optional.ssh.Scp не был найден.

Я проверил в своем $ ANT_HOME / lib и там находится jar (ant-jsch.jar).

В чем проблема?

Кстати, я использую Ubuntu 11.10.Ant скачивается с сайта (так как из репозитория Ubuntu у меня возникла та же проблема)

Ответы [ 5 ]

4 голосов
/ 07 декабря 2011

Например, maven antrun plugin не использует для своей работы установленный ant в вашей системе.

scp - это задача, которая не включена в муравьиные по умолчанию баночка.Чтобы запустить его, вам нужно выполнить шаги, описанные в этом примере на странице плагина maven antrun.

В вашем случае, я думаю, вам нужно будет включить ant-jsch.jar и jsch.jar в качестве plugin dependencies.

  <dependencies>
      <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>1.4.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>0.1.45</version>
      </dependency>
    </dependencies>
2 голосов
/ 26 февраля 2012

У меня была такая же проблема и я ее исправил! Помните, что вам нужно ОБА ant-jsch.jar (родной из установки ant или java) и обновленное jsch (в моем случае это было jsch-0.1.46.jar) в ant lib dir.

Вам необходимо загрузить новейшую jsch.jar из http://www.jcraft.com/jsch/ и добавить в папку libs (но не заменить ant-jsch.jar).

Ошибка, которую делают многие разработчики:

  1. ant-jsch.jar устарело (в этом случае задача неизвестна для муравья)
  2. jsch не существует или устарел в ant lib dir
  3. Родной ant-jsch.jar заменен на jsch (я сделал это ...)

В последних 2 случаях ant знает команду scp , но говорит, что она недоступна.

0 голосов
/ 30 октября 2014

У меня недавно была похожая проблема.В системе Windows с Eclipse все сводится к проверке:

  • , что ANT работает
  • SCP работает сам по себе,
  • , что ANT и SCP работают в Eclipseсреда разработки.

Простой файл ANT может быть запущен в Eclipse с именем build.xml.Пример содержимого:

<?xml version="1.0" encoding="UTF-8"?>
<project default="main" basedir=".">

<echo message="A 'testant' task."/>
 <target name="main" >
     <scp trust="yes" file="testfileinRootDirectory.xml" todir="username:password@hostname.org.domain:/home/username/existingfolder"/>
  </target>
</project>

Если вы можете запустить это из Eclipse, то у вас работает какая-то форма ANT, а также работает какая-то форма WinSCP.

Если вы не можетезаставьте его работать в Eclipse, затем откройте командное окно в каталоге, в котором находится build.xml, и запустите ant из командной строки.(Он автоматически подберет и запустит файл build.xml).

Если он не работает, проверьте записи, имеющиеся у вас в Eclipse - возможно, он использует другой набор путей для ANT, чемзапуск командной строки Maven может быть.Из Eclipse посмотрите: Window |
Предпочтения |
Ant |
Runtime |
Изучение записей Classpath.

Домашняя запись Ant может быть специфичной для Eclipse: например: c:\eclipse\plugins\org.apache.ant_1.8.3_v20120321-1730\lib

Глобальные записи могут отличаться (например, место установки) - например, c:\dev\ant - или там, где был установлен каталог% ANT_HOME% после установки.

Однако Eclipseвозможно, поиск файлов SCP в каталоге c:\Users\username\.ant\lib.

Одно из возможных решений :
- Установите ANT в каталог c:\Users\username\.ant
- Установите для ANT_HOME значение c:\Users\username\.ant
. - В Eclipse установите для параметра Ant Home (тот же экран, что и для параметров времени выполнения) тот же параметр, что и в командной строке (c:\Users\username\.ant).

Примечание. Возможный недостаток заключается в том, что пользовательские и системные настройки могут быть одинаковыми для ANT, однако в будущем вам просто нужно собрать дополнительные банки в одном месте, чтобы все заработало.

Тестирование Maven:

Как и в ответе Рагурама выше, важно правильно определить зависимости.Используйте полный пример кода со страницы Седрика Уолтера - Apache Maven скопирует локальный файл на сервер удаленного сервера, используя SSH

0 голосов
/ 09 августа 2014

Если вы не хотите добавлять jar jsch в $ ANT_HOME / lib или по-прежнему испытываете затруднения с правильным синтаксисом ant для scp (как я сделал), вы можете использовать только exec :

<exec executable="scp">
  <arg value="-r"/>
  <arg value="${LOCALDIR}/images"/>
  <arg value="remoteHost:/var/www/html"/>
</exec>

Где remoteHost определен в $ HOME / .ssh / config.

0 голосов
/ 07 декабря 2011

Вы забыли установить определение задачи

<taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="lib/ant-jsch.jar" />
...