在命令行中使用 maven 编译整个项目后如何运行单个类? [复制]

Posted

技术标签:

【中文标题】在命令行中使用 maven 编译整个项目后如何运行单个类? [复制]【英文标题】:How do I run a single class after compiling the whole project with maven in command line? [duplicate] 【发布时间】:2018-03-21 01:29:18 【问题描述】:

我可以在 Eclipse 中运行它,但是用命令行运行它时遇到问题。

我要运行的主要 java 类是 Example.java(在 src/main/java/examples 内) 请注意,虽然主 Example.java 中有一个简单的 junit 测试,但我不希望有任何与 src/test/java 中的 java 文件相关联的测试)

首先我cdpom.xml所在的目录

cd pathToTheProject/项目名称

我执行以下操作:

mvn cleanmvn 编译 mvn 包

现在只运行名为 Example.class 的主类,我编写以下内容(我想 pathToMavenLib/.m2/repository/* 包含所需的所有 jar 文件) :

java -cp "pathToMavenLib/.m2/repository/*" examples.Example

但这给了我错误:错误:无法找到或加载主类示例。示例

编辑: 我使用 mvn exec:java -Dexec.mainClass="org.junit.runner.JUnitCore" -Dexec.arguments="examples.Example"

解决了我的问题

【问题讨论】:

【参考方案1】:

您可以将可部署的工件创建为 war 文件(通过使用 <packaging>war</packaging> 将打包更改为 war),该文件将包含其 lib 目录下的所有依赖 jar 文件。 然后你可以运行:mvn clean install

然后您可以通过提供类路径参数来提取它并直接运行您的类文件。

其他选项是使用 maven 运行插件 - mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ...

参考:Maven Run Project

【讨论】:

感谢您的回复。我的主类没有 main 方法,因为它与 junit 一起运行。你知道我在使用“mvn exec:java”命令时如何引用 junit 中的主要方法,所以我说类似 mvn exec:java org.junit.runner.JUnitCore -Dexec.mainClass="examples.Example" 但它给我错误 mvn -Dtest=TestCircle 测试 谢谢,现在基于我在问题中提供的主要 java 类,我尝试运行 mvn -Dtest=examples.Example testUnsatisfiableClasses 但不起作用。我写的命令是真的吗? 运行时遇到什么错误?检查您的 Maven 版本和测试插件。参考:maven.apache.org/surefire/maven-surefire-plugin/examples/…mkyong.com/maven/how-to-run-unit-test-with-maven @april 如果你没有 main 方法,你是在自找麻烦。

以上是关于在命令行中使用 maven 编译整个项目后如何运行单个类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 项目的命令行中禁用 jar 创建?

用maven命令行编译项目时,如何指定JDK的版

如何在命令行中编译和链接项目?

Maven用途

maven一键构建概念与maven的安装

在一个maven项目中执行一个简单的测试类代码,没有在Run面板打印结果,而是在Build面板使用install命令编译整个模块