【问题标题】:How to run specific java file that contains Main with MVN?如何使用 MVN 运行包含 Main 的特定 java 文件?
【发布时间】:2017-12-28 20:35:51
【问题描述】:

我有一个项目,其根文件夹包含 pom.xml,并且在同一根目录中是包含所有示例 '/examples/src/main/java/org/apache/examples' 的子文件夹。

该文件夹内有 20 个“.java”文件。我只想从该文件夹中运行 example9.java。

为了运行示例(并确保正确导入所有依赖项),我应该从命令行和哪个文件夹(例如,从根目录或子文件夹之一)运行哪个 MVN 命令?

【问题讨论】:

  • 唯一可以运行的是包含“public static void main(String[])”的那个
  • 所有 20 个 .java 文件都包含“public static void main(String[])”。
  • mvn exec:java -Dexec.mainClass="..../example9"。如果可行,我会将其发布为答案
  • 我认为这可能有效。我得到了 MVN 构建等信息,但项目失败(抱怨 exec-maven-plugin:1.6.0:java (default-cli))。不确定是项目问题还是 MVN 需要以某种方式指定 java 版本 1.8..

标签: java maven command-line


【解决方案1】:

您可以在命令提示符下使用以下命令

mvn -Dtest=example9 test

example9是你要执行的java文件名

【讨论】:

    【解决方案2】:
    <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>stack</groupId>
      <artifactId>overflow</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
              <execution>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <executable>maven</executable>
              <!-- optional -->
              <workingDirectory>/tmp</workingDirectory>
              <arguments>
                <argument>-X</argument>
                <argument>myproject:dist</argument>
                ...
              </arguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    

    这个pom。

    package stack.overflow;
    
    public class Main1 {
    
        public static void main(String[] args) {
            System.out.println("Main1");
        }
    
    }
    
    package stack.overflow;
    
    public class Main2 {
    
        public static void main(String[] args) {
            System.out.println("Main2");
        }
    
    }
    

    以及标准dir结构下的这两个类(可以使用eclipse创建没有archetype的maven项目)

    这个命令,来自 pom.xml 所在的目录

    mvn exec:java -Dexec.mainClass="stack.overflow.Main2"
    

    会为你解决问题

    希望对你有帮助

    编辑

    你需要先运行 mvn compile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      相关资源
      最近更新 更多