【发布时间】:2020-06-02 03:43:01
【问题描述】:
我想用一个带有长的多行字符串常量的类构造一个 java 类文件。 (将字符串放入单独的文件并从与类相同的 JAR 加载它的常用方法不是一个选项。不会有 JAR,只有那个类文件。)最初,我使用的是 multiline-string注释处理器,它允许将字符串内容放在文档注释中:
/**
* This will be the actual
* content of the string
**/
@Multiline static final String foo = "this literal is ignored";
这里我误以为:“哦,cmets 很不方便,为什么不改变 multiline-string 从外部文件加载内容呢?”事实证明这是可行的,但是 maven(我正在使用它来构建)当然不明白如果注释处理器读取的文件发生更改,则需要重新编译类文件。
方法:
- 将
useIncrementalCompilation设置为false:完全不符合我的预期,而是禁用增量构建的依赖关系检查 - 将
.py添加到fileExtensions(没想到会这样) - 添加
maven-clean-plugin作为初始化阶段的一部分:这可行,但有点矫枉过正......
我真正想做的是将嵌入文件的路径添加到 maven 的“如果此文件更改,请重新编译该文件”列表中。这可能吗,还是有另一种优雅的方法来解决这个问题?
【问题讨论】:
-
我真正的问题是......为什么它必须是一个类。仅在运行时从类路径资源加载数据有什么问题?
-
我们的系统使用类文件和一个方法来执行一些轻量级的处理。这是一个限制,也让很多其他事情变得不方便,所以这个问题最终对我来说会消失。
标签: java maven incremental-build annotation-processor