2010-04-19 19 views
6

kullanıyorum FTP Ant task sorun klasörü $ {ftp.server.remotedir} var olmayan biriyle benim yapı başarısız olmasıdırMaven build'in Ant görevinde başarısız olmasını nasıl önleyebilirim?

<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 ile.
Ben

skipFailedTransfers="true" 
ignoreNoncriticalErrors="true 

belirtmek çalıştı ama bu sorunu çözmek yoktur ve inşa başarısız tutar.

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


bu Ant görev hatası umurumda değil benim maven yapı talimat biliyor musunuz/veya nasıl bir eksik dizinin durumunda başarısızlığa uğratma için Ant talimat?

Düzenleme:
Peter'ın çözümü çalışır.

[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 

gibi
Eğer bir sorun Hemen

<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

ekleyebilir, ama neden bir kullandığınız Maven'in üretim-kaynakları aşaması sırasında antcall. Bunun yerine dağıtım aşamasının bir parçası olabilir ... Biraz daha fazla – khmarbaise

+0

açıklayabileceğimi açıklayabilirim Testlerimi çalıştırmadan önce projenin kaynaklarını güncellemem gerek. Aslında Ant görevi, 'test-test-sources' aşaması sırasında çalışmalıdır. Kaynaklar (dağıtımda gerekli değildir) test sınıfları tarafından kullanılır. Ftp klasörü yoksa karınca görevinin başarısız olmasını istemiyorum. – mickthompson

cevap

8

Belki bu durumda daha fazla gibi Ant ve daha az gibi Maven düşünmek gerekir karınca-contrib gelen karınca dahil değildir.

İşte bir çözüm. ant-contribtrycatch görevini kullanın. İşte bir örnek pom.xml. Kod bloğunu, pom.xml adlı bir dosyaya kopyalayın ve çalışmasını görmek için mvn validate çalıştırın.

 


<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

maven-antrun-eklentisi 1.7 beri yapılandırmada bu hatayı atlamak nasıl bilmiyorum etiket 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>