我已经有了一个工作的解决方案,我可以在其中使用 maven 指定在使用特定的 maven 配置文件时不编译哪些类。
但我想使用通用解决方案并改用注释
我目前的解决方案是这样的
<plugin>
<!-- Exclude some web services used only for internal testing -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<optimize>true</optimize>
<excludes>
<exclude>**/something/*ClassPattern.java</exclude>
</excludes>
<testExcludes>
<exclude>**/something/*ClassPatternTest.java</exclude>
</testExcludes>
</configuration>
</plugin>
但是有些事情像
@NotCompiledForProduction
在类里面会相当不错。
在我看来,如果不改变 maven 的行为,这可能很难(或不可能做到)。那不是这里的范围。还有这种注解
最佳答案
您不能(我假设)使用注释来确定将哪些源代码呈现给 java 编译器,因为您需要首先编译源代码以处理注释。
您似乎需要在您的 Maven 项目中创建不同的模块:一个模块生成一个带有生产代码的 jar 文件,一个模块生成一个带有测试实现的 jar 文件,并依赖于生产 Artifact 。
如果代码确实需要在同一个 maven 模块中,那么代码应该总是被编译。但是,您可以使用 maven-jar-plugin
在 package
处创建多个 Artifact 阶段:默认 artifactId
.jar 和一个 artifactId
-test-lib.jar Artifact 。您可以通过为插件指定多次执行并使用 <includes>
来完成此操作和 <excludes>
根据需要拆分 jar 文件。
关于java - 如何使用注释排除java类在maven中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939276/