【问题标题】:Maven Run ProjectMaven 运行项目
【发布时间】:2010-11-08 12:36:01
【问题描述】:

是否有一个 Maven“阶段”或“目标”来简单地执行 Java 类的主要方法?我有一个项目,我想通过简单地执行“mvn run”之类的操作来手动测试。

【问题讨论】:

    标签: java maven


    【解决方案1】:

    1。编辑 POM.xml

    pom.xml 中添加以下属性。确保使用包含main 方法的全限定类名(即包名):

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

    2。运行命令

    现在从终端触发以下命令:

    mvn clean compile exec:java
    

    注意您可以通过-Dexec.args="xxx" 标志传递更多参数。

    【讨论】:

    • 这真的有效吗?我已经尝试过: ${foo.bar.SomeMainClass}foo.bar.SomeMainClass 并且它不起作用.错误相同:[错误] 无法在项目 newtrex 上执行目标 org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli):目标 org.codehaus.mojo 的参数“mainClass” :exec-maven-plugin:1.6.0:java 丢失或无效 -> [帮助 1]
    • 它有效,您可能需要检查this post
    • @NenadBulatovic :如果您将 ${foo.bar.SomeMainClass} 替换为 foo.bar.SomeMainClass -> 没有 $ 或 { }
    • @NenadBulatovic 关键是,在 exec:java 之后添加 @(myProjectId)。总结一下: mvn clean compile exec:java@(myProjectId)
    【解决方案2】:

    请参阅exec maven plugin。您可以使用以下方式运行 Java 类:

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

    如果插件配置在您的 pom.xml 中,则调用可以像 mvn exec:java 一样简单。 Mojohaus 上的插件站点有一个more detailed example

    <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>
    

    【讨论】:

    • 这就是答案的样子!参考+简单示例+复杂示例。这个简单的例子对我有用(不再需要配置)
    • 这个插件有更新的版本吗(比 1.2.1 更新?)
    • 是的,有更新的版本,所以不要1对1复制上面的片段,除非你想使用1.2.1版本最新版本见mojohaus.org/exec-maven-plugin/usage.html目前是1.6 .0
    • 谢谢,如果在子模块中与其他模块有依赖关系,您是否也知道如何运行主类?
    • 这实际上并没有运行主类
    【解决方案3】:

    无需在 pom.xml 中添加新插件。只需运行此命令

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

    查看maven exec plugin了解更多用法。

    【讨论】:

    • 通过-Dexec.args="...arg..."传递更多参数
    【解决方案4】:

    上面提到的答案是正确的,但我正在为像我这样的菜鸟简化它。转到您项目的 pom 文件。添加一个新属性exec.mainClass 并将其值作为包含您的主要方法的类。对我来说,它是mainpkg 中的DriverClass。根据您的项目更改它。

    完成此操作后,导航到包含您项目的pom.xml 的文件夹并在命令提示符mvn exec:java 上运行它。这应该调用 main 方法。

    【讨论】:

      【解决方案5】:

      clean package exec:java -P Class_Containing_Main_Method 命令也是一个选项,如果您在项目中只有一个 Main 方法 (PSVM),使用以下 Maven 设置。

      别忘了在pom.xml&lt;properties&gt;&lt;/properties&gt; 部分提及该课程:

      <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 运行配置以及上面的 Maven 设置:

      【讨论】:

      • 这对我来说不合适。 'profile'不是-P吗?如果你在命令行中指定它为什么你需要把它放在插件属性中?
      • @Rup 是的,-P 用于个人资料。分享这个,因为它也是运行 Maven 项目的一个选项。
      【解决方案6】:

      【讨论】:

        猜你喜欢
        • 2019-07-10
        • 2013-05-06
        • 1970-01-01
        • 2015-01-10
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多