我有一个看似Eclipse / Maven的角落案例和“从工作区项目中解决依赖关系”。我的项目混合了编写代码和生成的代码,生成的代码来自使用JAXWS的依赖项。
问题在于,如果我检查“Resolve dependencies”,Eclipse / Maven会忽略任何JAR依赖关系并尝试通过仅查看工作区来解决所有问题,这会导致Eclipse显示“Package / Class not found”(相关)之类的错误即使项目将从命令行使用Maven构建好,也可以生成代码。
另一方面,如果我取消选中它,它只会通过查看Maven存储库中的JAR来解决所有问题。第二个选项通常有效,但是当我按Ctrl键单击一个类或变量时,我会得到类文件编辑器和“找不到源”,这不是非常有用。此外,如果我在IDE中编辑代码但在此之后不运行“maven install”,它可能会失去同步。
我认为这主要是对Eclipse的不便,但它很烦人。我正在考虑通过修改Maven依赖项来构建源代码(或调试)来解决这个问题,但我不一定能用所有东西来做。 “解决依赖关系”选项是否只能以我所描述的方式工作?
答案 0 :(得分: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中手动将生成的源添加到类路径中。 (右键单击生成的文件夹 - > gt;添加到构建路径)
答案 1 :(得分:0)
我认为,因为你想引用仅在构建之后存在的文件,所以在你需要解析引用之前,你以某种方式迫使构建发生。你可以通过在Eclipse中进行构建来作弊。这将使生成的源文件准备好被引用。但是,我认为maven哲学会让您将生成的代码完全移动到另一个maven工件。这可以让你分开两组代码的生命周期,这样当你准备使用Eclipse编辑手工编码的代码时,就会解析对生成的类的引用,因为你已经在构建的代码中生成了代码。独立的独立模块。
答案 2 :(得分:0)
我知道这是一个老问题。但我在Juno遇到了同样的事情,更新了“m2e-wtp”插件。所以我只是为了其他读者的利益而回答。
这只发生在战争项目中。最终解决它的唯一办法就是删除war项目文件夹下的“.settings”文件夹并重新启动eclipse。