Java 运行Maven项目的主类

Java 运行Maven项目的主类,java,maven,maven-2,maven-exec-plugin,Java,Maven,Maven 2,Maven Exec Plugin,我创建了一个使用Maven构建的简单控制台Java应用程序。是否有一种方法可以使用maven命令从命令行运行main类(不需要任何参数),如: mvn run-app com.example.MainClass 试试这个。从那里: mvn exec:java -Dexec.mainClass="com.example.Main" 这将在JVM中运行您的类。您可以使用-Dexec.args=“arg0 arg1”传递参数 如果您在Windows上,请为exec.mainClass和exec.a

我创建了一个使用Maven构建的简单控制台Java应用程序。是否有一种方法可以使用maven命令从命令行运行main类(不需要任何参数),如:

mvn run-app com.example.MainClass
试试这个。从那里:

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"
如果您经常这样做,还可以将参数添加到pom.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>

org.codehaus.mojo
execmaven插件
1.2.1
JAVA
com.example.Main
福
酒吧

尽管maven exec在这里做到了这一点,但我发现它对于真正的测试来说非常糟糕。在等待,并希望这能帮助其他人的时候,我终于来到了这个回购协议

克隆它,并将其符号链接到路径中的某个位置。我使用
~/bin/mvnexec
,就像我的路径中有
~/bin
一样。我认为mvnexec对于脚本来说是个好名字,但是要由您来更改符号链接

从项目的根目录启动它,在那里可以看到src和targetdir

脚本使用main方法搜索类,提供一个select-to-choose(以mavenized项目为例)

如果选择了一个(键入数字),则提示输入参数(可以使用
mvnexec-p

默认情况下,它在每次运行时编译项目。但是您可以使用
mvnexec-B

它只允许在测试类
-M
--无主
中搜索,或只允许在主类
-T
--无测试
中搜索。还有一个按名称筛选选项
-f


希望这能为您节省一些时间,对我来说确实如此。

以这种方式运行main类并不方便:(我是唯一一个希望maven有一个内置约定的人,您可以键入“mvn run”,并且您的主程序的main类将自动运行,而无需您告诉maven它应该已经知道的详细信息吗(比如你的主课是什么)@hugemow我将
com.waisbrot.MainClass
添加到我的POM中,现在我可以运行
mvn exec:java
,这还不算太糟糕。如果类位于测试目录中,您还可以添加
-Dexec.classpathScope=test
,勾选java9模块的此链接:注意,在没有需要e程序。这是真的。对于windows,您可以始终使用cygwin来获得*nix shell,使用grep、sed、cut…节省了大量时间,thnx给出错误:无法执行目标org.codehaus.mojo:exec maven插件:1.5.0:exec(默认cli)在项目srl:Execution-default cli上,目标org.codehaus.mojo:exec-maven-plugin:1.5.0:exec-failed:execute不能为空->[Help 1],即使我指定了要运行的主类的编号
$ 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
#?