Han*_*etz 49 eclipse maven-2 code-generation protocol-buffers
我正在使用Google Protocol Buffers为我的项目生成一些Java类.使用Maven 2及其"antrun"插件,这些类在编译之前新生成,输出到目标/生成源并在构建期间放入类路径.因此,从POM构建项目是没有问题的.
但是,Eclipse不知道如何解析生成的类,因为它所在的文件夹在开发过程中似乎不在IDE的类路径中.我正在使用m2eclipse并让它为我管理依赖项,所以我原本期望Maven能够处理这个问题.
如何为生成的代码获得IDE支持(代码完成等)?
Aar*_*lla 27
m2eclipse不支持这个.您必须手动将该文件夹添加target/generated-sources
为源文件夹.当你告诉m2eclipse"更新项目配置"时,这将被覆盖,你必须恢复它.
另外,确保Eclipse在工作区中查找更改.
但是可能存在一些问题.最终,您将遇到错误,某些类无法编译,因为某些其他类无法解析.但是,代码完成将起作用.这个问题的根本原因是,当Maven更改类文件时,Eclipse会感到困惑target
.
要解决这个问题,您必须告诉Eclipse 编译到与Maven不同的地方.
kop*_*por 22
m2eclipse支持这个.首先,添加构建路径的路径:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/java/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
其次,增加对m2e的支持:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>parse-version</goal>
<goal>add-source</goal>
<goal>maven-version</goal>
<goal>add-resource</goal>
<goal>add-test-resource</goal>
<goal>add-test-source</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Run Code Online (Sandbox Code Playgroud)
如果您的eclipse安装已安装"org.eclipse.m2e.discovery.lifecyclemapping.buildhelper.xml"插件,则可能不需要第二步.这个插件可以通过Window - > Preferences - > Maven - > Discovery获得.目前,这在Eclipse Kepler中不起作用,因此,我获取了JAR(从目录URL中显示的xml链接)并从org.eclipse.m2e.discovery.lifecyclemapping.buildhelper.xml
手工提取片段.
Han*_*etz 13
您应该在项目资源管理器中看到的是一个名为"Maven Dependencies"的容器,而不是通常的"Referenced库".这意味着m2eclipse正在管理您的构建路径.
在我的例子中,为了达到这个目的,我在Project-> Properties的"Maven"部分检查了"包含模块"并取消选中"处理资源时跳过Maven编译器插件".
Mic*_*urd 12
我个人通过将生成的类设置为单独的项目并使其成为我的主(非生成)项目中的依赖项来解决此问题.我使用wsdl2java生成webservice类,所以我的子项目中的"源"是wdsl和xsds.即使wsdl经常变化,也能很好地工作.
我在使用Maven和wsdl2java生成的代码时遇到了这个问题,这就是我在Eclipse Juno中所做的解决方法.假设我的项目名为project1:
- 右键单击project1并选择"属性"
- 从左侧选择Java Build Path,然后选择Libraries选项卡
- 单击添加类文件夹
- 选择bin目录并单击OK(project1/target/generated-sources/bin)
- 单击"确定"并刷新项目
作为额外的奖励,您还可以附加源代码:
- 单击刚刚创建的新类文件夹旁边的箭头
- 单击"源附件"
- 单击"编辑"按钮
- 将路径设置为/ project1/target/generated-sources/axis2/src
- 单击确定
小智 6
归档时间: |
|
查看次数: |
63482 次 |
最近记录: |