Eclipse / Maven和“从工作空间项目中解决依赖关系”不能混合jar和源?

时间:2013-05-31 01:47:03

标签: java eclipse maven maven-3

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

问题在于,如果我检查“Resolve dependencies”,Eclipse / Maven会忽略任何JAR依赖关系并尝试通过仅查看工作区来解决所有问题,这会导致Eclipse显示“Package / Class not found”(相关)之类的错误即使项目将从命令行使用Maven构建好,也可以生成代码。

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

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

3 个答案:

答案 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。