2012-04-11 13 views
68

Mam następujący problem. Chciałbym uruchomić mvn z wiersza poleceń dla pliku Main.java. Main.java przyjmuje parametr. Jak to zrobić z wiersza poleceń?Maven: Jak uruchomić plik .java z argumentów przekazujących wiersze poleceń

Próbowałem znaleźć przykład, ale mi się nie udało. Czy ktoś mógłby mi pomóc, podając mi przykład?

Wyglądałem na here, ale nie bardzo rozumiałem, co powinienem zrobić.

Również, jak wykonać to polecenie z innego folderu niż folder Main.java?

na przykład Main.java znajduje się w my/java/program/Main.java. Co należy umieścić w

mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2" 
+4

Co dokładnie nie rozumiesz z połączonej samouczek? Jest całkiem prosty. Dodaj do swojego pytania kod, który wypróbowałeś do tej pory. – Perception

+0

Zasadniczo próbuję wywołać klasę Java z innej klasy Java. Zwykle uruchamiam tę klasę od Eclipse. Używam Runtime.getRuntime(). Exec (""); aby wykonać tę klasę z innego programu java. Ale Main.class potrzebuje mvn do uruchomienia. (Edytowałem to pytanie) –

Odpowiedz

109

Można uruchomić: mvn exec:exec -Dexec.args="arg1".

Spowoduje to przekazanie argumentu arg1 do twojego programu.

Należy określić główne klasy w pełni kwalifikowana, na przykład Main.java czyli w teście pakiet musiałby

mvn exec:java -Dexec.mainClass=test.Main 

używając parametru -f, jak opisano here, można również uruchomić go z innych katalogów.

mvn exec:java -Dexec.mainClass=test.Main -f folder/pom.xm 

Dla wielu argumentów, po prostu oddzielaj je spacją, tak jak w linii poleceń.

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3" 

argumentów oddzielonych przestrzeni można grupa użyciu 'argument separated with space' wewnątrz cudzysłowów.

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'" 
+0

tak, ale skąd wiadomo, gdzie znajduje się plik main.java? –

+0

Dodałem trochę więcej informacji do mojej pierwszej odpowiedzi. – Behe

+0

co jeśli nie mam pom.xml. Pojawia się następujący błąd Nie można wykonać mojo: java. Wymaga projektu z istniejącym pom.xml, ale kompilacja go nie używa. –

0

Spójrz na maven-exec-plugin. Użyte poprawnie, możesz zmusić go do kompilacji klasy java, a następnie po prostu wykonać java za pomocą skompilowanej klasy w ścieżce klas. Aby uruchomić, wszystko trzeba zrobić, to użyć

mvn exec:exec 
+0

Kiedy mam problemy z wyświetleniem szczegółów, które sprawiają, że coś działa, mówienie, żeby "po prostu" zrobić coś na wysokim poziomie, nie pomaga. Polecenie uruchomienia, które podasz, jest krokiem, ale przykładowa konfiguracja dla exec: exec byłaby bardziej kompletna. – Chris

+0

@Chris, jeśli podążysz za podanym linkiem, istnieje wiele przykładów (które są utrzymywane i wszystko), które będą dużo bardziej dokładne i kompletne niż moje odpowiedzi kiedykolwiek będą. Dlatego nie napisałem przykładu. Zapraszam do zapoznania się ze stroną wtyczki maven-exec, na której znajdziesz wszystko, czego szukasz. –

3

Oprócz uruchamiania go z mvn exec:java, można również uruchomić go z mvn exec:exec

mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass" 
+0

Gdzie umieścić argument Xmx w tym przypadku? – Fabich

+1

Spróbuj umieścić go w '-Dexec.args':' mvn exec: exec -Dexec.executable = "java" -Dexec.args = "- Xmx4g -classpath% classpath your.package.MainClass" ' –

+0

Nie widzę gdzie będzie lepsze niż proste (IMO) podejście exec: java – Neowizard

Powiązane problemy