我有下面的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插件。
1条答案
按热度按时间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