Развертывание сайта Maven с помощью задачи Ant Ant - PullRequest
2 голосов
/ 10 августа 2009

Я пытаюсь развернуть сайт Maven на FTP-сервере. Я использую следующий код в моем pom.xml:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
<executions>
    <execution>
    <id>ftp</id>
    <phase>post-site</phase>
    <configuration>
        <tasks>
            <ftp action="del" server="nexus"
        remotedir="/pub/${project.groupId}/${project.artifactId}"
        userid="anonymous" password="my.name@gmail.com"
        skipFailedTransfers="true" ignoreNoncriticalErrors="true">
        <fileset>
                <include name="**/" />
        </fileset>
            </ftp>
        <ftp action="rmdir" server="nexus"
             remotedir="/pub/${project.groupId}/${project.artifactId}"
        userid="anonymous" password="my.name@gmail.com"
        skipFailedTransfers="true" ignoreNoncriticalErrors="true">
             <fileset>
            <include name="**/" />
             </fileset>
        </ftp>
        <ftp action="mkdir" server="nexus"
        remotedir="/pub/${project.groupId}/${project.artifactId}"
        userid="anonymous" password="my.name@gmail.com" depends="yes"
        verbose="no" chmod="777">
        </ftp>
    </tasks>
     </configuration>
     <goals>
    <goal>run</goal>
     </goals>
      </execution>
 </executions>
 </plugin>

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

У меня вопрос: как проверить наличие каталога, прежде чем пытаться его удалить?

Спасибо, Ронен.

1 Ответ

2 голосов
/ 10 августа 2009

Вы можете выполнить ftp mkdir перед вызовом задачи ftp del , это обеспечит существование каталога перед его удалением. хотя, конечно, это может не сработать, если каталог уже существует. Я не могу проверить это, но согласно docs добавление ignoreNoncriticalErrors = "true" может позволить mkdir не завершиться ошибкой, если каталог существует.

Например:

<ftp action="mkdir"
  server="nexus"
  userid="anonymous"
  password="my.name@gmail.com"
  remotedir="/pub/${project.groupId}/${project.artifactId}"
  ignoreNoncriticalErrors="true"/>

Обновление: с Ftp.java похоже, это будет работать:

/**
 * Create the specified directory on the remote host.
 *
 * @param ftp The FTP client connection
 * @param dir The directory to create (format must be correct for host
 *      type)
 * @throws IOException  in unknown circumstances
 * @throws BuildException if ignoreNoncriticalErrors has not been set to true
 *         and a directory could not be created, for instance because it was
 *         already existing. Precisely, the codes 521, 550 and 553 will trigger
 *         a BuildException
 */
protected void makeRemoteDir(FTPClient ftp, String dir)
    throws IOException, BuildException {
    ...
...