代码之家  ›  专栏  ›  技术社区  ›  fgalan

使用Maven运行多个类

  •  -1
  • fgalan  · 技术社区  · 6 年前

    我有一个包含多个类的包(每个类封装一个可执行程序,即使用main()方法),即:

    com.myorg.examples.classA
    com.myorg.examples.classB
    etc.
    

    所有的类都属于同一个包( com.myorg.examples ).

    我知道我可以用马文跑 属于此类类别的,例如:

    mvn exec:java -D"exec.mainClass"="com.myorg.examples.classA"
    

    我还知道我可以配置exec maven插件,以便使用较短的命令执行相同的操作,例如:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.2.1</version>
      <executions>
        <execution>
          <goals>
            <goal>java</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <mainClass>com.myorg.examples.classA</mainClass>
      </configuration>
    </plugin>
    

    然后使用:

    mvn exec:java
    

    但是,我想知道是否有可能:

    1. 使用exec maven插件(或antoher插件)配置多个执行并执行类似的操作

      mvn exec:classA       # or,
      mvn exec:java classA 
      

      所以运行classA,但是使用的语法比普通exec:java更短。从XML结构来看,似乎只能设置一个类,所以我不确定如何实现这一点。

    2. 按顺序执行所有类,例如:

      mvn exec-all
      

      为了运行classA,下一个classB,等等。

    任何有关这些主题的帮助或链接都将受到高度欢迎。谢谢!

    编辑: 问题的第二部分已被删去 this other post .

    1 回复  |  直到 6 年前
        1
  •  3
  •   khmarbaise    6 年前

    您可以配置多个执行,这些执行自 Maven version 3.3.1

    <project...>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
              <execution>
                <id>default-cli</id>
                <configuration>
                  <mainClass>com.soebes.test.First</mainClass>
                </configuration>
              </execution>
              <execution>
                <id>second-cli</id>
                <configuration>
                  <mainClass>com.soebes.test.Second</mainClass>
                </configuration>
              </execution>
              <execution>
                <id>third-cli</id>
                <configuration>
                  <mainClass>com.soebes.test.Third</mainClass>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins> 
      </build>
    </project>
    

    所以你现在可以通过以下途径给Maven打电话:

    下面将执行其中id: default-cli :

    mvn exec:java
    

    下面将执行其中id: second-cli :

    mvn exec:java@second-cli
    

    下面将执行其中id: thirds-cli :

    mvn exec:java@third-cli
    

    问题是为什么在一个不同的包中有几个主要类,但是在一个Maven模块中,听起来我有不同的模块(因为您已经有了包)。。另一个问题是,为什么需要通过exec maven插件执行它们?目的是什么?