如何用exec maven插件从测试源运行一个主类?

wn9m85ua  于 2022-11-22  发布在  Maven
关注(0)|答案(1)|浏览(178)

我有下面的pom.xml配置exec maven插件,但它的工作只有当主类是在src/main/java,而不是如果它是在src/test/java.我不希望这个主类结束在分发/发布.

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>myexec</id>
            <phase>generate-test-sources</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>java</executable>
              <classpathScope>test</classpathScope>
              <arguments>
                <argument>-classpath</argument>
                <classpath/>
                <argument>com.mypackage.SomeMainClass</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

这里的问题是我试图在编译之前运行一个类(在generate-test-sources步骤之后,它与测试源一起编译)。com.mypackage.SomeMainClass生成要编译和运行的测试源 * TestCase.java。
那么,如果我不想主类在发布的jar中结束,我该怎么办呢?我宁愿不为此开发一个maven插件。

gcuhipw9

gcuhipw91#

最简洁的解决方案可能是将该类视为其自己的外部可执行文件,从而将其构建为一个单独的模块。这将涉及到将项目转换为Maven多模块项目(如果它还不是一个多模块项目)。
https://www.mojohaus.org/exec-maven-plugin/examples/example-exec-using-plugin-dependencies.html
然而,快速而肮脏的解决方案... Maven允许您设置排除。如果您不希望某些内容最终出现在发布jar中,请将其过滤掉。即:
excluding .class file from jar maven dependency

相关问题