我得到了Eclipse/Maven和“从工作区项目中解决依赖关系”的角落案例。我的项目混合了编写的代码和生成的代码,生成的代码来自使用JAXWS的依赖项。
问题是,如果我检查“解析依赖项”,Eclipse/Maven会忽略任何JAR依赖项,并试图通过只查看工作区来解析所有内容,这导致Eclipse显示“未找到Package/Class”(与生成的代码相关)等错误,即使项目可以从命令行使用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”插件。所以我的回答完全是为了其他读者的利益。
这只发生在战争项目中。最终解决的唯一问题是删除war项目文件夹下的“. settings”文件夹并重新启动eclipse。