2010-03-18 21 views
77

Bir java sınıfının çalıştırılmasını Maven hedefi tetiklemek istiyorum.Maven kullanarak bir programı nasıl yürütürüm?

neotest: 
    mvn exec:java -Dexec.mainClass="org.dhappy.test.NeoTraverse" 

Ve make neotest anda ne yaptığını üretmek mvn neotest istiyorum: Ben hatları ile bir Makefile içinde taşımayı çalışıyorum.

Ne exec plugin documentation ne de Maven Ant tasks sayfalarında herhangi bir düz örnek örneği vardı.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1</version> 
    <executions><execution> 
    <goals><goal>java</goal></goals> 
    </execution></executions> 
    <configuration> 
    <mainClass>org.dhappy.test.NeoTraverse</mainClass> 
    </configuration> 
</plugin> 

Gerçi komut satırından eklentisi tetiklemek için nasıl bilmiyorum:

Şu anda, önündeyim.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.4</version> 
    <configuration> 
    <mainClass>org.dhappy.test.NeoTraverse</mainClass> 
    </configuration> 
</plugin> 

sınıf org.dhappy.test.NeoTraverse yürütmek üzere yapılandırılmıştır eklenti çağıracağı komut satırında mvn exec:java çağırma: Eğer exec-maven-eklentisi için tanımladığınız genel yapılandırma ile

cevap

108

.

Yani, komut satırından eklenti tetiklemek için, sadece çalıştırın:

mvn exec:java 

Şimdi, standart yapı parçası olarak exec:java golü yürütmek istiyorsanız, hedefe bağlamak gerekir default lifecycle'un bir faz. Bunu yapmak için, phase hangi execution öğesinde hedefi bağlamak istediğiniz beyan:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
    <execution> 
     <id>my-execution</id> 
     <phase>package</phase> 
     <goals> 
     <goal>java</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <mainClass>org.dhappy.test.NeoTraverse</mainClass> 
    </configuration> 
</plugin> 

Bu örnekte sayesinde, sınıf package aşamasında yürütülecek olacaktır. Bu sadece bir örnektir, ihtiyaçlarınıza uyacak şekilde uyarlayın. Ayrıca eklenti sürüm 1.1 ile çalışır. Başta karıştı

mvn exec:exec -Dtraverse 
+1

: 'exec: Bu şekilde daha sonra çalıştırılabilir olan

<profiles> <profile> <id>traverse</id> <activation> <property> <name>traverse</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath/> <argument>org.dhappy.test.NeoTraverse</argument> </arguments> </configuration> </plugin> </plugins> </build> </profile> </profiles> 

: java' olabilir – rightfold

+4

Sürüm 1.4.0 olmalıdır –

18

birden programları çalıştırmak için, ben de bir profiles bölüm gerekli Scala ve Clojure kodları için de kullanılıyorsa, Java kodu olmak zorunda değil.
+0

Bu ne ile devam ediyor? -classpath 'Satır? Bunun doğru olduğunu düşünmüyorum. – GreenGiant

+0

Evet, büyük olasılıkla ' 'etiketi yanlışlıkla var ve kaldırılmalı. Yani bu satır sadece şöyle görünecektir: ' -classpath' –

+3

Bu bir hata değil. Bu, pom.xml dosyasında belirtilen bağımlılıkların sınıf yolunun bir parçası olarak kullanılması gerektiğini belirtir. – user924272

İlgili konular