java - 如何使用注释排除java类在maven中编译

标签 java maven annotations

我已经有了一个工作的解决方案,我可以在其中使用 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-pluginpackage 处创建多个 Artifact 阶段:默认 artifactId .jar 和一个 artifactId -test-lib.jar Artifact 。您可以通过为插件指定多次执行并使用 <includes> 来完成此操作和 <excludes>根据需要拆分 jar 文件。

关于java - 如何使用注释排除java类在maven中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939276/

相关文章:

java - 对于没有 WEB-INF 目录的 Maven/Java 项目,将 Spring 上下文文件放在哪里?

java - 使用通配符递归编译 .jar

java - 参数化测试: Collection not read by JUnit?

Javassist 注释问题

java - Runtime.getRuntime().exec() 不执行某些命令

java - 通过安全消息从智能卡中读取信息

java - LibGDX : Dividing audio file

在 IntelliJ 中配置 maven pom.xml 错误

Android javax.annotation.processing 包丢失

java - 找不到 Artifact org.apache.maven.plugins :maven-resources-plugin