Eclipse/Maven 和 "Resolve dependencies from workspace projects" 不能混合罐子和源?



我已经得到了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"插件。所以我只是为了其他读者的利益而回答。

这只发生在战争项目中。最终解决的唯一办法是删除"。

最新更新