Интегрируйте Буферы Протокола в сборку Maven2

Двумя вещами являются препятствия поблочному тестированию

  1. , Все новое трудно сделать
  2. Все, что не имеет никакой измеримой прибыли, плохо.
  3. Люди ленивы. Разработчики, действительно.

В моей компании (> 5.000 emp) модульные тесты "там", но никакой шанс сделать TDD или получить большое покрытие кода. Это трудно для выполнения его.

42
задан Max A. 16 October 2009 в 14:38
поделиться

5 ответов

Вы найдете некоторую информацию о подключаемом модуле, доступном в репозитории Protocol Buffers, в потоке Protocol Buffers Compiler Maven Plug-In в группе обсуждения буферов протокола. Насколько я понимаю, его можно использовать, но не хватает тестов. Я бы попробовал.

Или вы можете просто использовать плагин antrun (фрагмент вставлен из темы, упомянутой выше):

 <build>
   <plugins>
     <plugin>
       <artifactId>maven-antrun-plugin</artifactId>
       <executions>
         <execution>
           <id>generate-sources</id>
           <phase>generate-sources</phase>
           <configuration>
             <tasks>
               <mkdir dir="target/generated-sources"/>
               <exec executable="protoc">
                 <arg value="--java_out=target/generated-sources"/>
                 <arg value="src/main/protobuf/test.proto"/>
               </exec>
             </tasks>
             <sourceRoot>target/generated-sources</sourceRoot>
           </configuration>
           <goals>
             <goal>run</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
   </plugins>
 </build>

 <dependencies>
   <dependency>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-java</artifactId>
     <version>2.0.3</version>
   </dependency>
 </dependencies>
44
ответ дан 26 November 2019 в 23:27
поделиться

Я думаю, что использование antrun для вызова шагов, отличных от Maven, является общепринятым решением.

Вы также можете попробовать maven-exec-plugin .

0
ответ дан 26 November 2019 в 23:27
поделиться

принятый ответ побудил меня заставить работать предоставляемый Google плагин. Я объединил ветку, упомянутую в моем вопросе, в проверку исходного кода 2.2.0, построил и установил / развернул плагин, и смог использовать его в своем проекте следующим образом:

  <build>
    <plugins>
      <plugin>
        <groupId>com.google.protobuf.tools</groupId>
        <artifactId>maven-protoc-plugin</artifactId>
        <version>0.0.1</version>
        <executions>
          <execution>
            <id>generate-sources</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <protoSourceRoot>${basedir}/src/main/protobuf/</protoSourceRoot>
              <includes>
                <param>**/*.proto</param>
              </includes>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <protocExecutable>/usr/local/bin/protoc</protocExecutable>
        </configuration>
      </plugin>
    </plugins>
  </build>

Обратите внимание, что я изменил версию плагина на 0.0 .1 (без -SNAPSHOT), чтобы он попал в мой сторонний репозиторий Nexus, не являющийся снимком. YMMV. Вывод заключается в том, что этот плагин можно будет использовать после того, как отпадет необходимость прыгать через обручи, чтобы заставить его работать.

23
ответ дан 26 November 2019 в 23:27
поделиться

Я только что обновил плагин maven для работы с 2.2.0 - обновленный pom прикреплен к ошибке проверки кода.

Вот инструкции по самостоятельной сборке подключаемого модуля:

svn co http://protobuf.googlecode.com/svn/branches/maven-plugin/tools/maven-plugin
cd maven-plugin
wget -O pom.xml 'http://protobuf.googlecode.com/issues/attachment?aid=8860476605163151855&name=pom.xml'
mvn install

Затем вы можете использовать конфигурацию maven, указанную выше.

4
ответ дан 26 November 2019 в 23:27
поделиться

Принятое решение не масштабируется для нескольких файлов прототипов. Мне пришлось придумать свой:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <id>compile-protoc</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <tasks>
                            <mkdir dir="${generated.sourceDirectory}" />
                            <path id="proto.path">
                                <fileset dir="src/main/proto">
                                    <include name="**/*.proto" />
                                </fileset>
                            </path>
                            <pathconvert pathsep=" " property="proto.files" refid="proto.path" />
                            <exec executable="protoc" failonerror="true">
                                <arg value="--java_out=${generated.sourceDirectory}" />
                                <arg value="-I${project.basedir}/src/main/proto" />
                                <arg line="${proto.files}" />
                            </exec>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
</build>
21
ответ дан 26 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: