Eclipse无法使用maven-protoc-plugin检测protoc生成的类

时间:2014-05-27 12:09:22

标签: eclipse maven protocol-buffers

我正在尝试创建一个简单的maven项目,该项目编译.proto文件并生成.jar,可供其他项目使用。我的pom.xml看起来像这样:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.iar</groupId>
    <artifactId>cspyserver-cdp</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <pluginRepositories>
        <pluginRepository>
            <id>google-protoc</id>
            <url>http://sergei-ivanov.github.com/maven-protoc-plugin/repo/releases</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>2.5.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.google.protobuf.tools</groupId>
                <artifactId>maven-protoc-plugin</artifactId>
                <version>0.3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

另一个maven项目尝试使用

引用此模块生成的类
<dependencies>
    <dependency>
        <groupId>com.iar</groupId>
        <artifactId>cspyserver-cdp</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

当我在命令行上构建时,这可以找到,我可以运行我生成的jar。但是当我尝试在Eclipse中使用它时,Eclipse java编译器说它无法解析protoc编译器生成的任何模块。

我可以通过构建包含protobuf内容的maven模块来解决这个问题&#34;离线&#34; (使用mvn install),并且没有Eclipse项目中的项目,但是当我在工作区中有两个项目时,找不到protobuf类。

Eclipse在多模块项目中检测依赖项的方式出了问题,但我无法弄清楚是什么。

1 个答案:

答案 0 :(得分:0)

尝试看看你是否可以让m2e将原型执行映射到生命周期..

即。类似于:

<pluginManagement>
  <plugins>
    <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
    <plugin>
      <groupId>org.eclipse.m2e</groupId>
      <artifactId>lifecycle-mapping</artifactId>
      <version>1.0.0</version>
      <configuration>
        <lifecycleMappingMetadata>
          <pluginExecutions>
            <pluginExecution>
              <pluginExecutionFilter>
                <groupId>com.google.protobuf.tools</groupId>
                <artifactId>maven-protoc-plugin</artifactId>
                <versionRange>[0.3.2,)</versionRange>
                <goals>
                  <goal>compile</goal>
                  <goal>testCompile</goal>
                </goals>
              </pluginExecutionFilter>
              <action>
                <ignore></ignore>
              </action>
            </pluginExecution>
          </pluginExecutions>
        </lifecycleMappingMetadata>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>