6

我有 Eclipse/Maven 和“解决工作区项目中的依赖关系”的极端案例。我的项目混合了编写代码和生成代码,生成的代码来自使用 JAXWS 的依赖项。

问题是,如果我选中“解决依赖项”,Eclipse/Maven 会忽略任何 JAR 依赖项并尝试通过仅查看工作区来解决所有问题,这会导致 Eclipse 显示诸如“找不到包/类”之类的错误(与生成的代码),即使项目可以从命令行使用 Maven 构建良好。

另一方面,如果我取消选中它,它只会通过查看 Maven 存储库中的 JAR 来解决所有问题。第二个选项通常有效,但是当我按 Ctrl 键单击类或变量时,我会得到类文件编辑器和“找不到源”,这并不是非常有用。此外,如果我在 IDE 中编辑代码但之后不运行“maven install”,它可能会不同步。

我想这主要是 Eclipse 带来的不便,但这很烦人。我正在考虑通过修改 Maven 依赖项以使用源代码(或调试)构建来解决这个问题,但我不一定对所有事情都这样做。正如我所描述的那样,“解决依赖关系”选项是否旨在以一种或另一种方式专门工作?

4

3 回答 3

3

您可能想看看构建助手 maven 插件。

您可以像这样配置它:

              <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>target/generated-sources</source>
                                <source>target/jaxws/wsimport/java</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin> 

这将告诉您的 Eclipse Maven 插件查看生成的源并将其包含在您的项目类路径中。

您还可以将生成的源手动添加到 eclipse 中的类路径中。(右键单击生成的文件夹 -> 添加到构建路径)

于 2013-05-31T08:19:31.853 回答
0

我认为,由于您想引用仅在构建之后才存在的文件,因此您以某种方式强制构建在需要解析引用之前进行。您可以通过在 Eclipse 中进行构建来作弊。这将使生成的源文件保持原位以供参考。但是,我认为 Maven 哲学会让您将生成的代码完全移动到另一个 Maven 工件。这将让您将两组代码的生命周期分开,这样当您准备使用 Eclipse 编辑手动编码的代码时,对生成的类的引用就会被解析,因为您已经在构建独立的,独立的模块。

于 2013-05-31T04:22:05.937 回答
0

我知道这是一个老问题。但是我在 Juno 中使用更新的“m2e-wtp”插件遇到了同样的事情。所以我只是为了其他读者的利益而回答。

这仅发生在战争项目中。最终解决它的唯一方法是删除war项目文件夹下的“.settings”文件夹并重新启动eclipse。

于 2013-12-20T20:59:17.580 回答