【发布时间】:2017-02-15 18:48:32
【问题描述】:
我们正在将用 C 编写的系统迁移到 Java,并且必须保留现有流程(没有争议)。我们目前使用 C 预处理器将编译时信息“嵌入”到 C 应用程序中,例如:
cc -o xxx.o -DCOMP_ARG='"compile time arg"' xxx.c
xxx.c 文件然后可以使用“COMP_ARG”,它的值将嵌入到代码中,我们不必担心它会被无意更改。
我们意识到 Java 喜欢使用属性文件,但是,我们的要求是在代码中嵌入一些信息 ** **,因此属性文件不是一个选项 - 这些特定值不能在运行时指定。为了说明这一点,这些数据可能是文件编译时间的时间戳,但确切的数据与问题无关。
我们正在寻找一种在编译时指定 Java 代码可用的各种值的方法。我们很清楚 Java 没有 C 的预处理器,所以机制会有所不同。
我们当前的解决方案是使用代码生成步骤 (Maven),它确实有效,但是 Eclipse 试图处理源文件造成了严重破坏,因此我们关闭了“自动构建”。我们真的很想找到一个更强大的解决方案。
感谢您的帮助,谢谢。
【问题讨论】:
-
properties maven 处理属性?您所说的“Eclipse 试图处理源文件正在造成严重破坏”是什么意思?您可以发布您生成的文件的示例吗?
-
Eclipse 问题与我们想摆脱通过 Maven 过滤器运行模板文件的另一个原因无关——该解决方案将我们锁定在 Maven 中。
-
RC - 感谢您的链接。您建议的问题与从属性文件生成源文件有关。这几乎就是我们现在正在做的——使用一个在脚本中定义了“属性”的 Maven 过滤器——该脚本负责收集值并将它们提供给编译器(当前是 C)——你建议的方法会让我们创建一个额外的步骤,这都不是我们的目标。
-
锁定到 maven 确实让我发笑。
标签: java