【问题标题】:Running an Eclipse Java Maven project from a Windows (DOS) shell从 Windows (DOS) shell 运行 Eclipse Java Maven 项目
【发布时间】:2020-03-02 12:46:17
【问题描述】:

总结:如何在 Eclipse 之外运行一个 Eclipse Java Maven 项目

详情:

我是 Maven 新手,我在 Eclipse 中创建了一个非常简单的 Maven 项目。

我的项目的Package Explorer视图如下:


两个简单的Java文件源码如下:

package Pkg01;

public class Calculator
{
  public double add(double number1, double number2)
  {
    return number1 + number2;
  }

  public static void main(String[] args) {
      Calculator calculator = new Calculator();

      System.out.println(calculator.add(100, 200));
  }
}

package Pkg01;

import junit.framework.TestCase;

public class TestCalculator extends TestCase
{
  public void testAdd()
  {
    Calculator calculator = new Calculator();
    double result = calculator.add(10, 50);
    assertEquals(60, result, 0);
  }
}  

在 Eclipse 中,我可以毫无问题地运行 Java 应用程序、Junit 测试和 Maven 测试。

我的问题是如何从 DOS shell 调用 mvn 命令以便我可以:

  1. 运行 Java 应用程序
  2. 运行 Junit 测试
  3. 运行 Maven 测试

顺便说一句,从项目的父目录运行mvn exec:java 没有为我执行 Java 应用程序。

我的pom.xml 文件如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.newbie</groupId>
  <artifactId>Stackoverflow</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Stackoverflow</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project> 

mvn exec:java 给出以下错误:

[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< org.newbie:Stackoverflow >----------------------
[INFO] Building Stackoverflow 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ Stackoverflow ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.957 s
[INFO] Finished at: 2019-11-05T22:47:00-06:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project Stackoverflow: The parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java are missing or invalid -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException  

以下是我觉得我的问题是not a duplicate的原因。

我使用 maven-archetype-quickstart 创建了一个非常简单的项目,我的环境是正确的,因为一切{即(1) 运行 Java 应用程序,(2) 运行 Junit 测试和 (3) 运行 Maven 测试} 在 Eclipse IDE 环境中为我工作。另一张海报在执行时遇到了问题,我没有。

另一位发帖人收到的 cmets 主要是为了修复他的环境以使其运行。我没有这个问题,因为如前所述,在 Eclipse IDE 环境中一切都对我有用。

我要问的是我需要做些什么才能从命令外壳中执行以下操作:

  1. 运行 Java 应用程序
  2. 运行 Junit 测试
  3. 运行 Maven 测试

【问题讨论】:

标签: java eclipse maven


【解决方案1】:

错误消息指出parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin。如果您查看exec:java 文档,所需的参数是mainClass

我没有看到您的 pom.xml 中配置了 exec-maven-plugin,因此您可以使用以下命令执行 Java 程序

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

在运行mvn exec.. 命令之前,请确保您已经使用mvn compilemvn install 命令编译了代码

C:\data\development\app_code\my-app>mvn exec:java -Dexec.mainClass="com.mycompany.app.App"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ my-app ---
300.0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.960 s
[INFO] Finished at: 2019-11-06T09:55:23+00:00
[INFO] Final Memory: 9M/116M
[INFO] ------------------------------------------------------------------------
C:\Sachin\data\development\app_code\test-maven\my-app>

对于 Junit 测试,您可以致电 mvn test,这将为您提供类似于 Eclipse IDE 的测试结果状态

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycompany.app.AppTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.099 sec

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.198 s
[INFO] Finished at: 2019-11-06T09:55:58+00:00
[INFO] Final Memory: 19M/160M
[INFO] ------------------------------------------------------------------------

我确实看到 Karthikeyan Vaithilingam 在链接中提到的相同细节

参考

https://www.mojohaus.org/exec-maven-plugin/usage.html


OP 附录
您提供了以下解决方案:
1. 运行 Java 应用程序
3.运行Maven测试

我也可以从 IDE 调用:
2.运行Junit测试

诚然,这与3. Running the Maven test 非常相似,但输出看起来不同。

有没有办法在 IDE 环境之外做到这一点?

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2013-05-06
    • 2012-10-05
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多