Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven exec:java可以与命令行中的任意java类一起使用吗_Maven - Fatal编程技术网

maven exec:java可以与命令行中的任意java类一起使用吗

maven exec:java可以与命令行中的任意java类一起使用吗,maven,Maven,我们有几个java/scala类,它们带有main方法,可以通过mvn exec:java运行 是否可以在不指定pom.xml中的类的情况下执行?我看到的示例如下所示: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1</version> <

我们有几个java/scala类,它们带有
main
方法,可以通过
mvn exec:java
运行

是否可以在不指定
pom.xml
中的类的情况下执行?我看到的示例如下所示:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>some.main.MyClass</mainClass>
  </configuration>
</plugin>
目的是能够运行

 mvn exec:java -Dexec.mainClass="some.other.main.OtherClass"
即使它没有在
pom.xml
中指定

尝试运行时,错误为

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project sentiment: An exception occured while executing the Java class. myapp.MyMain
换句话说,命令行中指定的类将被忽略,取而代之的是位于 说:

如果您想在同一个VM中执行Java程序,您可以 使用命令行版本

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"]
这在不向pom添加任何内容的情况下工作

如评论中所述,这仅在您的pom中没有配置的情况下有效。如果pom中确实有配置,则可以使用其中的属性,该属性可以从命令行重写

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>${my.mainClass}</mainClass>
  </configuration>
</plugin>
文档位于 说:

如果您想在同一个VM中执行Java程序,您可以 使用命令行版本

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"]
这在不向pom添加任何内容的情况下工作

如评论中所述,这仅在您的pom中没有配置的情况下有效。如果pom中确实有配置,则可以使用其中的属性,该属性可以从命令行重写

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>${my.mainClass}</mainClass>
  </configuration>
</plugin>

从每次使用-Dexec.mainClass时的使用情况来看,我建议您可以在插件配置中去掉mainClass。定义mainClass的好处是像:mvn exec:java那样运行&它从pom.xml中定义的类中选择main类


一旦从pom.xml中删除mainClass,您应该能够从命令行使用maven exec插件用法中的任何mainClass。

从您每次使用-Dexec.mainClass的用法来看,我建议您可以在插件配置中删除mainClass。定义mainClass的好处是像:mvn exec:java那样运行&它从pom.xml中定义的类中选择main类


一旦您从pom.xml中删除mainClass,您应该能够从命令行使用maven exec插件中的任何mainClass。

这不起作用(或者我不会发布…)请稍候,我将向操作添加详细信息抱歉,昨天太晚了。如果pom中没有配置,这应该可以工作(请参阅)。如果这样做,则必须对其进行编辑,以明确使用可以从命令行重写的属性。最初没有此类属性,但它不起作用。。我明天再试一次。在任何情况下,我都会为有用的信息投票(如果明天可以验证的话,我会奖励),但这些信息不起作用(或者我不会发布…)等一下,我会在OPS中添加详细信息抱歉,昨天太晚了。如果pom中没有配置,这应该可以工作(请参阅)。如果这样做,则必须对其进行编辑,以明确使用可以从命令行重写的属性。最初没有此类属性,但它不起作用。。我明天再试一次。在任何情况下,我都会为有用的信息投票(如果明天可以验证的话,我会奖励)这门课在哪里?默认情况下,插件似乎只查看应用程序的生产类路径。另外,您的
.java
文件是否已编译成
.class
文件?对于第一个问题:如果该类是在
pom
中指定的,那么该类就可以找到,因此不存在类路径问题。第二:它运行得很好,在执行
mvn包之前我不会运行它。这个类在哪里?默认情况下,插件似乎只查看应用程序的生产类路径。另外,您的
.java
文件是否已编译成
.class
文件?对于第一个问题:如果该类是在
pom
中指定的,那么该类就可以找到,因此不存在类路径问题。第二:它运行得很好,在做
mvn包之前我不会运行它。我最初尝试过(在
pom.xml
中没有定义任何
main类)。我只是尝试了我的一个项目,其中有两个不同的类,在pom.xml中有main方法,没有main类。运行mvn exec:java-Dexec.main类=“com.example.Main”在这两个类中对我都很好。当pom中没有mainClass并运行不同的类时,您能告诉我您遇到了什么错误吗。哦,有趣。等等,我正在重试。我最初已经尝试过了(没有在
pom.xml
中定义任何
mainClass
,我只是尝试了我的一个项目,其中有两个不同的类,在pom.xml中有main方法,没有mainClass。运行mvn exec:java-Dexec.mainClass=“com.example.main“这两个类对我来说都很好。如果pom中没有mainClass并运行不同的类,请告诉我您遇到了什么错误。哦,很有趣。请稍候,我正在重试。”。
mvn exec:java -Dmy.mainClass="aaa.Test"