Ete*_*ner 8 java eclipse cxf m2e
一切进展顺利,包括从WSDL生成源代码,build-helper-maven-plugin但是当时间来"实现服务",RegistryResourceImpl.java即将生成的内容移动到正常的源文件夹时src/main/java,Eclipse开始抱怨某些符号(如界面RegistryResource)无法被识别.
意识到为普通src/main/java文件夹分配了不同的包名称,我只需在其所属RegistryResourceImpl.java的包的导入中添加RegistryResource.java:
import com.yourcompany.sample.ns.RegistryResource;
Run Code Online (Sandbox Code Playgroud)
但Eclipse目前的项目配置似乎是盲目的com.yourcompany.sample.ns,不知道在哪里找到它.
我尝试在Build Path中找到一个选项来指向生成的源,但没有尝试过我所帮助的.
我有一种感觉,我错过了一些非常微不足道的东西,但它是什么?
另外,不应该m2e(Eclipse的Maven插件)自动处理那种移动的实现文件?
更新(尝试@ Patrick建议的解决方案后):
target/generated/src/main/java 不存在,但检查"创建新文件夹"框,我能够创建它.Maven clean,它被删除(因此需要在每次清理后重新创建???)Maven install,在完全不同的树下创建生成源:generated-sources/cxf/com/yourcompany/sample/ns.为什么???RegistryResourceImpl.java模块仍然自动创建target/generated sources.在这一点上,我不再看到关于"未解决的包/进口/符号"的抱怨(奇怪).另一方面,如果我尝试添加作为"源文件夹"的实际生成的路径generated-sources/cxf/com/yourcompany/sample/ns(而不是不相关/不存在target/generated/src/main/java,生成的树target被移动(删除)到下面/src/main/java.我不明白这种行为日食.
最后,即使我在这里做了Maven> Update Project建议,从而摆脱了"Maven 2项目错误图标",该模块仍然显示未解决的符号,尽管整个项目构建完美!RegistryResourceImpl.java
有什么可以解释这个?
有可能build-helper-maven-plugin是不完整甚至破碎?
有没有办法让CXF + build-helper-maven-plugin与Eclipse协调工作,这样即使项目构建成功,我也看不到那些令人不安的红色下划线"未解决的符号"?
您需要在Eclipse中为生成的源添加源文件夹.该教程在其评论中提到了这一点:"注意:M2Eclipse似乎没有在这个源文件夹中找到,所以你必须在eclipse中手动添加它." 如果您按照教程中的说明进行操作,则需要添加的位置(相对于项目目录)
target/generated/src/main/java
Run Code Online (Sandbox Code Playgroud)
要添加文件夹,请打开项目属性,然后从左侧菜单中选择"Java Build Path".在"源"选项卡中,按"添加文件夹..."按钮,然后选择"target/generated/src/main/java"作为源文件夹.
请注意,Maven在运行时不会删除生成的文件夹mvn clean install.您可能希望在运行此命令时将Eclipse配置为刷新资源,以避免出现不一致.Eclipse运行配置包括一个"刷新"选项卡,允许您启用"完成后刷新资源".
您可能考虑的另一个选择是跳过使用Maven来满足您的wsimport需求.我会直接调用wsimport,将生成的工件放在你的src/main/java文件夹下,并完成它.除非你真的需要为每个构建重新生成工件,否则我认为Maven插件比它的价值更麻烦.
如果在 clean 后没有重新创建,请执行 pom.xml > Run As > Maven install,在完全不同的树下创建生成源: generated-sources/cxf/com/yourcompany/sample/ns。为什么???
您需要配置cxf-codegen-plugin将生成的代码输出到所需的文件夹。
...
<configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后安装 cxf-codegen-plugin 的连接器(即,如果可用)或使用 maven build-helper-maven-plugin及其连接器。确保sources指向与 相同的位置sourceRoot。
<configuration>
<sources>
<source>${basedir}/target/generated/src/main/java</source>
</sources>
</configuration>
Run Code Online (Sandbox Code Playgroud)
ps:要安装/发现连接器,请转到Preferences -> Maven -> Discover
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |