我正在将我的构建从 Ant 迁移到 Maven。Ant build 用于编译一个“代码生成器”,执行这个“代码生成器”,生成一组 Java 和 C 代码。然后它获取生成的 Java 代码并将其与一些附加代码一起编译生成一个 jar。
我已经很容易地在 Maven 中复制了这个,当我从命令行运行时它运行良好,但是 Eclipse 抱怨并且给了我一个与 pom 文件相关的错误
在 http://{our internal site repository}/nexus/content/groups/public 中找不到 {group.id}:{artifact.id}:pom:1.0.0-SNAPSHOT 已缓存在本地存储库中,解决方法将在快照的更新间隔过去或强制更新之前不会重新尝试
其中 group.id 和 artifact.id 是我的代码生成器插件的组和工件 id
并且任何引用生成代码的代码也无法编译。
我的 Maven 构建包括
仅包含代码生成器的 Java 代码的生成器项目。
一个生成器插件项目,其中仅包含将生成器包装为 Maven 插件的代码。这取决于生成器项目。
一个使用插件生成代码的 xyz 项目。代码最终位于该项目的 target/generated-sources/xxx 文件夹中。我已经按照Maven 编译配置了 build-helper-maven-plugin,其中包含多个 src 目录以包含这个额外的源目录。
如果我手动将生成的源文件夹添加到 Eclipse 构建路径,则所有与代码不存在相关的错误都会在该项目上消失,但不会在任何下游项目上消失,并且上面列出的“找不到...”错误仍然存在。
让我有点困惑的是,它指的是 ...:pom:1.0.0-SNAPSHOT,而实际上我的生成器插件被定义为 maven 插件。
这是一个明智的做法吗?
为什么我收到“未能找到...”错误?
为什么 Eclipse 不拾取我的生成源文件夹?
我还应该说我的 Eclipse IDE 中安装了 m2e 插件和用于 build-help-maven-plugin 的 m2e 连接器。