Двумя вещами являются препятствия поблочному тестированию
В моей компании (> 5.000 emp) модульные тесты "там", но никакой шанс сделать TDD или получить большое покрытие кода. Это трудно для выполнения его.
Вы найдете некоторую информацию о подключаемом модуле, доступном в репозитории 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>
Я думаю, что использование antrun
для вызова шагов, отличных от Maven, является общепринятым решением.
Вы также можете попробовать maven-exec-plugin .
принятый ответ побудил меня заставить работать предоставляемый 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. Вывод заключается в том, что этот плагин можно будет использовать после того, как отпадет необходимость прыгать через обручи, чтобы заставить его работать.
Я только что обновил плагин 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, указанную выше.
Принятое решение не масштабируется для нескольких файлов прототипов. Мне пришлось придумать свой:
<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>