我已经得到了Eclipse/Maven和"从工作区项目中解决依赖项"的一个角落案例。我的项目混合了编写的代码和生成的代码,生成的代码来自使用JAXWS的依赖项。
问题是,如果我选中"Resolve dependencies",Eclipse/Maven会忽略任何JAR依赖项,并试图通过只查看工作空间来解决所有问题,这导致Eclipse显示诸如"Package/Class not found"(与生成的代码相关)这样的错误,即使项目将通过Maven从命令行构建良好。
另一方面,如果我取消选中它,它只通过查看Maven存储库中的jar来解决所有问题。第二个选项通常有效,但是当我按ctrl键单击一个类或变量时,我得到的是类文件编辑器和"未找到源",这不是很有用。此外,如果我在IDE中编辑代码,但之后不运行"maven install",它可能会不同步。
我想这主要是Eclipse带来的不便,但它很烦人。我正在考虑通过修改Maven依赖项来构建源代码(或调试)来解决这个问题,但我不一定对所有事情都这样做。"解析依赖项"选项打算以一种方式或另一种方式单独工作,如我所描述的?
您可能想看看构建助手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中的类路径中。(右键单击生成的文件夹->添加到构建路径)
我认为,由于您想要引用仅在构建之后存在的文件,因此在需要解析引用之前,您以某种方式强制构建发生。您可以通过在Eclipse中进行构建来进行欺骗。这将保留生成的源文件,以便随时引用。然而,我认为maven哲学会让您将生成的代码完全移动到另一个maven工件上。这样就可以分离两组代码的生命周期,以便在准备使用Eclipse编辑手工编码的代码时,解析对生成的类的引用,因为已经在构建单独的独立模块时生成了这些代码。
我知道这是一个老问题。但我在Juno中遇到了同样的事情,使用了一个更新的"m2e-wtp"插件。所以我只是为了其他读者的利益而回答。
这只发生在战争项目中。最终解决的唯一办法是删除"。