提问者:小点点

Eclipse/Maven和“从工作区项目中解决依赖”不能混合jar和source?


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

问题是,如果我检查“解析依赖项”,Eclipse/Maven会忽略任何JAR依赖项,并试图通过只查看工作区来解析所有内容,这导致Eclipse显示“未找到Package/Class”(与生成的代码相关)等错误,即使项目可以从命令行使用Maven构建。

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

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


共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中的类路径中。(右键单击生成的文件夹-

匿名用户

我认为,既然你想引用只存在于构建之后的文件,你就以某种方式在你需要解析引用之前强制构建。你可以通过在Eclipse中进行构建来作弊。这将使生成的源文件准备好被引用。然而,我认为,maven哲学会让你将生成的代码完全移动到另一个maven工件上。这将使您可以分离两组代码的生命周期,这样当您准备好使用Eclipse编辑手工编码的代码时,对生成类的引用就会被解析,因为您已经在单独的独立模块的构建中生成了该代码。

匿名用户

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

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