Maven Run Projesi


231

Java sınıfının ana yöntemini uygulamak için Maven "aşaması" veya "hedefi" var mı? Ben sadece "mvn run" gibi bir şey yaparak manuel olarak test etmek istiyorum bir proje var.

Yanıtlar:


348

Exec maven eklentisine bakın . Java sınıflarını aşağıdakileri kullanarak çalıştırabilirsiniz:

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ...

Çağırma mvn exec:java, eklenti yapılandırması pom.xml'nizde olduğu kadar basit olabilir . Mojohaus'daki eklenti sitesinin daha ayrıntılı bir örneği var .

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>com.example.Main</mainClass>
                    <arguments>
                        <argument>argument1</argument>
                    </arguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

14
bir cevap böyle görünmeli! başvuru + basit örnek + karmaşık örnek. basit örnek benim için hile yaptı (daha fazla yapılandırma gerekmez)
kodlama

1
Bu eklentinin daha yeni bir sürümü var mı (1.2.1'den daha yeni?)
Alexander Mills

Evet, daha yeni bir sürüm var, bu yüzden 1.2.1 sürümünü kullanmak istemiyorsanız yukarıdaki 1'den 1'e kadar olan parçayı kopyalamayın En son sürüm için mojohaus.org/exec-maven-plugin/usage.html adresine bakın . 1.6.0
user1053510

Teşekkürler, ayrıca diğer modüllerde bağımlılıkları olan bir modül altında ana sınıf çalıştırmak için nasıl biliyor musunuz?
user1767316

Bu ana sınıfı aktif olarak çalıştırmaz
Dexter

23

1. POM.xml dosyasını düzenleyin

Alanına şu özelliği ekleyin pom.xml. mainYöntemi içeren tam nitelikli sınıf adını (yani paket adıyla) kullandığınızdan emin olun :

<properties>
        <exec.mainClass>fully-qualified-class-name</exec.mainClass>
</properties>

2. Komutu Çalıştır

Şimdi terminalden aşağıdaki komutu tetikleyin:

mvn clean compile exec:java

Not Daha fazla bağımsız değişkeni -Dexec.args="xxx"bayrakla iletebilirsiniz .


Bu gerçekten işe yarıyor mu? Ben de denedim: <exec.mainClass> $ {foo.bar.SomeMainClass} </ exec.mainClass> ve <exec.mainClass> foo.bar.SomeMainClass </exec.mainClass> ve çalışmıyor . Hata aynı: [HATA] org.codehaus.mojo hedefi yürütülemedi: exec-maven-plugin: 1.6.0: newtrex projesinde java (varsayılan-cli): org.codehaus.mojo hedefi için 'mainClass' parametreleri : exec-maven-plugin: 1.6.0: java eksik veya geçersiz -> [Yardım 1]
Nenad Bulatovic

Bu kontrol etmek isteyebilir, işleri bu yazı
Saikat

@NenadBulatovic: $ {foo.bar.SomeMainClass} yerine $ veya {} olmadan foo.bar.SomeMainClass -> yazdığınızda çalışır
Krishna Santosh Sampath

14

Yukarıda belirtilen cevaplar doğrudur ama benim gibi yeni başlayanlar için basitleştiriyorum. Projenizin pom dosyasına gidin. Yeni bir özellik ekleyin exec.mainClassve değerini ana yönteminizi içeren sınıf olarak verin. Benim için öyleydi DriverClassde mainpkg. Projenize göre değiştirin. resim açıklamasını buraya girin

Bunu yaptıktan sonra projenizin bulunduğu klasöre gidin pom.xmlve bunu komut isteminde çalıştırın mvn exec:java. Bu ana yöntemi çağırmalıdır.


8

Pom.xml dosyasına yeni eklenti eklemenize gerek yok. Bu komutu çalıştırın

mvn org.codehaus.mojo:exec-maven-plugin:1.5.0:java -Dexec.mainClass="com.example.Main" | grep -Ev '(^\[|Download\w+:)' 

Daha fazla kullanım için maven exec eklentisine bakın .


Daha ileri argümanlar üzerinden-Dexec.args="...arg..."
sstn


2

clean package exec:java -P Class_Containing_Main_Method komutu, aşağıdaki Maven Kurulumu ile projede yalnızca bir Ana yöntem (PSVM) varsa da bir seçenektir.

Aşağıdaki <properties></properties>bölümde dersi vermeyi unutmayın pom.xml:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.main.class>com.test.service.MainTester</java.main.class>
</properties>

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <configuration>
           <mainClass>${java.main.class}</mainClass>
        </configuration>
</plugin>

STS Yapılandırmayı yukarıdaki Maven Kurulumu ile birlikte çalıştırın:

resim açıklamasını buraya girin


Bana doğru gelmiyor. 'Profil' için -P değil mi? Komut satırında belirtiyorsanız, neden eklenti özelliklerine koymanız gerekir?
Rup

@Rup Yes, -Pprofil içindir. Maven projesini yürütme seçeneği olduğu için bunu paylaştı.
Abhijeet
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.