2010-10-20 19 views
7

Sadece bir karınca projesini maven'e çevirdim, ancak maven kurulumla gerçekten uğraşmadığından, yapıya biraz karışma getiriyorum. Ancak, çalıştırmayı denediğimde eklenti, görevlerimi atlar. mvn temiz antrun çalıştırdığımda örnek olarak: Aşağıdaki mesajı alıyorum: Karınca hedefi tanımlanmadı - SKIPPED. Aynı şey, bir depoya yüklemek yerine gerçek bir dağıtım yapmak için dağıtım aşamasını geçersiz kılmaya çalıştığım ikinci aşamaya geçiyor. (: Pom tipi): Maven antrun eklentisini temiz faza bağlama nasıl yapılır

benim pom.xml bir ekstresini aşağıda bulabilirsiniz yılında

  <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.6</version> 
      <executions> 
       <execution> 
        <id>clean</id> 
        <configuration> 
         <task> 
          <echo>Cleaning deployed website</echo> 
         </task> 
         <tasks> 
          <delete dir="${deployRoot}/mydir/${env}"/> 
         </tasks> 
        </configuration> 
        <phase>clean</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>deployment</id> 
        <configuration> 
         <task> 
          <echo>Deploying website</echo> 
         </task> 
         <tasks> 
          <echo>Copying website artifact to deployment </echo> 
          <mkdir dir="${deployRoot}/mydir/${env}" /> 
          <unzip 
           src="${project.basedir}/target/${env}.${project.version}.zip" 
           dest="${deployRoot}/mydir/${env}" /> 
          <chmod perm="ugo+rx"> 
           <fileset dir="${deployRoot}/mydir/${env}/web-exploded/bin"> 
            <include name="**/*.sh" /> 
            <include name="**/*.bat" /> 
           </fileset> 
          </chmod> 
         </tasks> 
        </configuration> 
        <phase>deploy</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

cevap

11

senin pom.xml, sen infaz iki tür tanımlar:

  • Bir clean bağlantılıdır evre
  • Biri deploy fazına bağlanır. Not, bu arada, Maven için, deploydeğilbir sunucuda benim (web-) uygulaması dağıtmak ama uzak bir depo üzerindeki objeyi dağıtmak demek olduğunu. Daha fazla bilgi için lütfen deploy plugin information'u okuyun.

Yani çalıştırırsanız komut mvn, dağıtmak Maven'in yaşam döngüsü deploy faz ulaştığında, bu eklenti yürütme (sizin pom.xml ikinci bir) çalışacaktır. çalıştırın (bu sorun için önemli değil gibi ben burada clean golü düşünen değilim): komut mvn antrun olduğu gibi

Ancak, sizin durumunuzda, varsayılan Maven'in yaşam döngüsünü çalıştıran değil vardır. Bu, hedef koşulu ile, Maven'e antrun eklentisini çalıştırmak için çevrilebilir. Buradaki sorun, Ant eklentinize bir doğrudan doğrudan çağrı için herhangi bir yapılandırmayı (Ant görevlerini içeren) tanımlamadığınızdır.

Böylece iki çözelti: o

  • bağlama install faza ikinci düzenleme ve bunun yerine mvn antrun:run arasında mvn clean install çalıştırın. Bu durumda, tüm Maven yaşam döngüsünü (yani, derleme, testler, paketleme) çalıştıracağınızı unutmayın.
  • Herhangi bir yürütme ile ilgili değil bu eklentinin bir yapılandırması oluşturun. XML bakış açısından, <plugin> tanımının alt öğesi olarak ikinci <configuration> bloğunu eklemeniz (veya taşımanız) yeterlidir.

İkinci çözüm seçerseniz, bir pom.xml biri böyle olacak:

 <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.6</version> 
     <!-- For cleaning --> 
     <executions> 
      <execution> 
       <id>clean</id> 
       <configuration> 
        <task> 
         <echo>Cleaning deployed website</echo> 
        </task> 
        <tasks> 
         <delete dir="${deployRoot}/mydir/${env}"/> 
        </tasks> 
       </configuration> 
       <phase>clean</phase> 
       <goals> 
        <goal>run</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <tasks> 
       <echo>Copying website artifact to deployment </echo> 
       ... 
      </tasks> 
     </configuration> 
    </plugin>