【发布时间】:2014-03-06 19:37:49
【问题描述】:
简介
我花了很多时间来修复这个bug
在我们的应用程序中,我们有很多由 cxf 和 jaxb 生成的代码,它们会产生大量警告。我们使用 maven-build-helper 插件将此代码自动添加到我们的项目中。 通过添加this enhancement,eclipse JDT 启用了为特定源文件夹设置 javac -nowarn 标志的可能性。不幸的是,通过更新 maven 项目,标志会丢失。 SO上有一些线程,用户被错误所困扰。
到目前为止我已经尝试过什么
所以我想出了一个聪明的解决方案,javac 有一个 nowarn 标志。我将它设置为我的 maven-compiler-plugin 并指定了目录。我的 Maven 构建很好,但我的 Eclipse 构建却不行。我的研究告诉我,eclipse jdt 只使用 maven-compiler-plugin 源和目标版本。所以我的下一步是尝试配置 EclipseCompiler,但这是不可能的,因为无法在 eclipse JDT 中添加自定义编译器参数。
下一步。在 .classpath 文件中,eclipse JDT 为每个被忽略的路径添加了一个 ignore_optional_problems 属性。通过在 Eclipse 中更新 maven 项目,该条目会丢失。所以我开始编写一个maven“ignore-source-folder”插件,它应该添加缺失的属性。为了在每次 Eclipse 开始构建时运行插件,我还创建了一个 m2e 连接器来刷新 .classpath 文件,一切都应该没问题。 通过用我的连接器测试我的插件,我意识到它可以工作,但只有 70% 的重复。
发生了什么?
每次 eclipse m2e/Jdt 开始新构建时,所有类路径条目都将被删除并再次填充。当我的 Maven 插件被 Eclipse 触发时,竞争条件就开始了。
于是我开始分析jdt和m2e jdt的代码。 ignore_optional_problems 标志只会在patch 内手动设置一次,该patch 已提供给JDT,并且不会存储在其他地方。通过 m2e-jdt 触发新构建,此信息会丢失。
如何解决这个问题
要解决此问题,必须在包含所有被忽略文件夹的 jdt 中添加或扩展某些元素。如果触发了新构建并且 m2e-jdt 新生成了类路径文件,则应检查此元素是否有忽略的路径。 ClasspathEntryDescriptor 似乎是它的好地方。
我的问题
我检查了 jdt 和 m2e jdt,但我的 IDE 中有大量错误,我不知道如何开始。即使我修复了代码,我也不知道如何构建和测试它。我认为我的努力会很高,我们谈论 20 或 30 行简单的代码。
恐怕如果我将我的结果添加到 Eclipse 提交的错误中,没有人会关心它。
那么,是否有任何开发人员能够并且愿意帮助我完成这项微小的工作?
【问题讨论】:
-
是否有可能为 optional_compiler_problems 设置工作区或 Eclipse 范围的排除?例如,对所有 target/generated-sources/**/*.java 文件抑制这些警告就足够了......
-
我试过了。不幸的是,在 jdt 中为 EclipseCompiler 设置自定义属性似乎是不可能的。
标签: eclipse m2eclipse m2e eclipse-jdt