2010-04-19 2 views
6

내가 사용하고있어 FTP Ant task 문제가 폴더 $ {ftp.server.remotedir}가 존재하지 않는 경우 내 빌드가 실패한다는 것입니다Ant 태스크 실패시 Maven 빌드 실패를 방지하려면 어떻게해야합니까?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>ftp</id> 
      <phase>generate-resources</phase> 
      <configuration> 
       <tasks> 
        <ftp action="get" 
         server="${ftp.server.ip}" 
         userid="${ftp.server.userid}" 
         password="${ftp.server.password}" 
         remotedir="${ftp.server.remotedir}" 
         depends="yes" verbose="yes" 
         skipFailedTransfers="true" 
         ignoreNoncriticalErrors="true"> 
         <fileset dir="target/test-classes/testdata"> 
          <include name="**/*.html" /> 
         </fileset> 
        </ftp> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
... 

maven-antrun-plugin와.
나는

skipFailedTransfers="true" 
ignoreNoncriticalErrors="true 

를 지정하려하지만, 이러한 문제를 해결하지 않고 빌드가 실패 유지합니다.

An Ant BuildException has occured: could not change remote directory: 550 /myBadDir: The system cannot find the file specified. 


은이 개미 작업 오류에 대한 상관 없어 내 받는다는 빌드를 지시하는 방법을 알고 있나요/또는 방법 누락 된 디렉토리의 경우 실패하지 않는 개미를 지시 하는가?

편집 :
피터의 솔루션이 작동합니다.

[INFO] Error configuring: org.apache.maven.plugins:maven-antrun-plugin. Reason: java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.close(Ljava/io/InputStream;)V 

같은
당신이 만약 문제가 그냥

<dependency> 
    <groupId>ant-contrib</groupId> 
    <artifactId>ant-contrib</artifactId> 
    <version>${ant-contrib.ver}</version> 
    <exclusions> 
     <exclusion> 
      <groupId>ant</groupId> 
      <artifactId>ant</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
+0

을 추가 할 수 있지만, 왜 당신은을 사용하는 Maven의 generate-resources 단계에서 antcall을 실행한다. 배포 단계에 대신 참여할 수 있습니다. 조금 더 설명해 주시겠습니까 – khmarbaise

+0

테스트를 실행하기 전에 프로젝트의 리소스를 업데이트하면됩니다. 실제로 Ant 태스크는 'generate-test-resources'단계에서 실행해야합니다. 테스트 클래스는 리소스 (배포시 필요하지 않음)를 사용합니다. ftp 폴더가 없으면 ant 태스크가 실패하지 않게하고 싶습니다. – mickthompson

답변

8

은 아마이 경우에 더 같은 Ant 적은처럼 Maven을 생각해야 개미의 contrib에서 개미를 제외합니다.

다음은 하나의 해결책입니다. ant-contribtrycatch 작업을 사용하십시오. 다음은 pom.xml의 예입니다. 코드 블록을 pom.xml 파일로 복사하고 mvn validate을 실행하여 작동되는지 확인하십시오.

 


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow.q2666794</groupId> 
    <artifactId>trycatch</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>trycatch</name> 
    <url>http://maven.apache.org</url> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
      <execution> 
      <id>trycatch</id> 
      <phase>validate</phase> 
      <configuration> 
       <tasks> 
       <taskdef resource="net/sf/antcontrib/antcontrib.properties"/> 
       <trycatch> 
        <try> 
        <fail>Failing ftp task should go here</fail> 
        </try> 
        <catch> 
        <echo>See the error was caught and ignored</echo> 
        </catch> 
       </trycatch> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
      <groupId>ant-contrib</groupId> 
      <artifactId>ant-contrib</artifactId> 
      <version>1.0b3</version> 
      <exclusions> 
       <exclusion> 
       <artifactId>ant</artifactId> 
       <groupId>ant</groupId> 
       </exclusion> 
      </exclusions> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
0

받는다는-antrun - 플러그인 1.7 이후 당신은 구성에 나는이 오류를 생략하는 방법을 모른다 태그 failOnError

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>ftp</id> 
      <phase>generate-resources</phase> 
      <configuration> 
       <failOnError>false</failOnError> 
       <tasks> 
        <ftp action="get" 
         server="${ftp.server.ip}" 
         userid="${ftp.server.userid}" 
         password="${ftp.server.password}" 
         remotedir="${ftp.server.remotedir}" 
         depends="yes" verbose="yes" 
         skipFailedTransfers="true" 
         ignoreNoncriticalErrors="true"> 
         <fileset dir="target/test-classes/testdata"> 
          <include name="**/*.html" /> 
         </fileset> 
        </ftp> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
관련 문제