Maven ile build işleminin yaparken başka bir uygulamayı da çalıştırma ihtiyacı doğabilir.
1. Goaller
Tek bir goal var. O da exec.
exec goal belirtilen uygulamayı iki şekilde çalıştırabilir.
1. Ayrı bir process içinde
2. Aynı JVM içinde
Açıklaması şöyle.
exec:exec execute programs and Java programs in a separate process.
exec:java execute Java programs in the same VM.
Nasıl çalıştırılacağı bu plugin'e geçilen parametre ile belirtilebilir.
2. Alanlar
executable Alanı
Örnek - Angular build
Şöyle yaparız. Burada proje derlenmeden önce validate safhası belirtildiği için önce Angular projesi ng komutu ile derleniyor.
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.6.0</version><executions><execution><phase>validate</phase><goals><goal>exec</goal></goals></execution></executions><configuration><executable>ng</executable><workingDirectory>src/main/resources/AngularApplication</workingDirectory><arguments>build</arguments></configuration></plugin>
Örnek
Şöyle yaparız
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<executable>grype</executable>
<arguments>
<argument>docker:mydeveloperplanet/mygrypeplanet:${project.version}</argument>
<argument>--scope</argument>
<argument>all-layers</argument>
<argument>--fail-on</argument>
<argument>high</argument>
<argument>--only-fixed</argument>
<argument>-q</argument>
</arguments>
</configuration>
</plugin>
Çalıştırmak için şöyle yaparız
$ mvnd exec:exec
mainClass Alanı
Şöyle yaparız. Dolaysıyla mvn exec:java şeklinde çalıştırılabilir
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>${exec-maven-plugin.version}</version><configuration><mainClass>com.example.demo.DemoApplication</mainClass></configuration></plugin>
phase Alanı
Örnek
generate-test-sources safhasında çalışması için şöyle yaparız.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>build-test-environment</id>
<phase>generate-test-sources</phase> <!-- generating source code -->
<!-- rest of config -->
</execution>
</executions>
<!-- rest of config, consider moving into specific execution -->
</plugin>
3. Komut Satırından Çalıştırma
1. Separate Process - exec:exec
ÖrnekŞöyle yaparız.
mvn exec:exec -Dexec.mainClass="org.main.Class" -Dspring.profiles.active=test
2. The Same VM - exec:java
"java -jar ..." ile derleme sonucunu çalıştırmak gibidir. Yani bir anlamda "gradle run" ile aynıdır. Eğer uygulama fat jar değilse
1. plugin içinde <mainClass> ile çalıştırılacak sınıf belirtilir veya
2. -Dfoo şeklinde main class belirtilirÖrnek - fat jar
Şöyle yaparız.
mvn -q compile exec:java
Örnek - fat jar
Şöyle yaparız. Uygulama aynı JVM içinde çalışır
mvn clean compile exec:java
//or
mvn clean package
java -jar target\xxx-fat.jar
Örnek
Şöyle yaparız. Burada fat jar yok, mainClass'ı belirtmek gerekiyor.
mvn -Dexec.mainClass=org.example.JetJob exec:java
Hiç yorum yok:
Yorum Gönder