запустите основной класс проекта Maven [дубликат]



этот вопрос уже есть ответ здесь:



Я создал простое консольное Java-приложение, которое построено с Maven. Есть ли способ, что основной класс (который не требует никаких аргументов) может быть запущен из командной строки с помощью команды maven, например:



mvn run-app com.example.MainClass
534   2  

2 ответов:

попробовать Maven-exec-plugin. Оттуда:

mvn exec:java -Dexec.mainClass="com.example.Main"

это будет запускать ваш класс в JVM. Вы можете использовать -Dexec.args="arg0 arg1" для передачи аргументов.

если вы находитесь на Windows, применить кавычки exec.mainClass и exec.args:

mvn exec:java -D"exec.mainClass"="com.example.Main"

если вы делаете это регулярно, вы можете добавить параметры в ПОМ.xml также:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>com.example.Main</mainClass>
    <arguments>
      <argument>foo</argument>
      <argument>bar</argument>
    </arguments>
  </configuration>
</plugin>

хотя Maven exec делает трюк здесь, я нашел его довольно плохим для реального теста. В ожидании Мэйвен оболочки, и надеясь, что это может помочь другим, я, наконец, вышел на это РЕПО mvnexec

клонировать его, и символическая ссылка скрипт где-то в пути. Я использую ~/bin/mvnexec, а я ~/bin на моем пути. Я думаю mvnexec это хорошее название для скрипта, но до вас, чтобы изменить символьная ссылка...

запустите его из корня вашего проекта, где вы можете увидеть src и целевые dirs.

скрипт поиск для классов с основным методом, предлагают выбрать, чтобы выбрать один (например с mavenized JMeld)

$ mvnexec 
 1) org.jmeld.ui.JMeldComponent
 2) org.jmeld.ui.text.FileDocument
 3) org.jmeld.JMeld
 4) org.jmeld.util.UIDefaultsPrint
 5) org.jmeld.util.PrintProperties
 6) org.jmeld.util.file.DirectoryDiff
 7) org.jmeld.util.file.VersionControlDiff
 8) org.jmeld.vc.svn.InfoCmd
 9) org.jmeld.vc.svn.DiffCmd
10) org.jmeld.vc.svn.BlameCmd
11) org.jmeld.vc.svn.LogCmd
12) org.jmeld.vc.svn.CatCmd
13) org.jmeld.vc.svn.StatusCmd
14) org.jmeld.vc.git.StatusCmd
15) org.jmeld.vc.hg.StatusCmd
16) org.jmeld.vc.bzr.StatusCmd
17) org.jmeld.Main
18) org.apache.commons.jrcs.tools.JDiff
#? 

если один из них выбран (набрав номер), вы запросите аргументы (вы можете избежать с mvnexec -P)

по умолчанию он компилирует проект каждого запуска. но вы можете избежать этого, используя mvnexec -B

это позволяет искать только в тестовых классах -M или --no-main, или только в основные классы -T или --no-test. также есть опция фильтра по имени -f <whatever>

надеюсь, что это может сэкономить вам время, для меня это делает.

Comments

    Ничего не найдено.