Заводной java gmaven и черты
Я пытаюсь написать тест и использовать отличную черту.
Вот моя конфигурация плагина gmaven
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<configuration>
<debug>false</debug>
<verbose>true</verbose>
<stacktrace>true</stacktrace>
<providerSelection>2.0</providerSelection>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>generateStubs</goal>
<goal>testCompile</goal>
<goal>generateTestStubs</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</plugin>
Вот моя черта:
trait UserTrait {
String generateCrossId(){
System.currentTimeMillis().toString()
}
String generateOuterKey(){
(System.currentTimeMillis() / new Random().nextInt(1000)) as String
}
}
Вот мой тестовый класс:
class UserToCrossIdConnectionTest extends IntegrationBaseTest implements UserTrait{}
Я пытаюсь скомпилировать этот материал, используя Maven, и я получаю:
INFO] --- maven-compiler-plugin:3.0:testCompile (default-testCompile) @ project ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 21 source files to /project/target/test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /project/target/generated-sources/groovy-stubs/test/ru/mycode/UserControllerTest.java:[12,33] interface expected here
[ERROR] /project/target/generated-sources/groovy-stubs/test/ru/mycode/UserToCrossIdConnectionTest.java:[12,33] interface expected here
[INFO] 2 errors
Я проверил классы. Черта стала:
@groovy.transform.Trait() public class UserTrait
extends java.lang.Object implements
groovy.lang.GroovyObject {}
и класс, который реализует черту:
public class UserToCrossIdConnectionTest
extends IntegrationBaseTest implements
ru.mycode.UserTrait {
Это справедливо, я не могу реализовать класс. Как я могу это исправить?
1 ответ
Решение
GMaven не может компилировать более новые версии Groovy. Я предлагаю перейти на GMavenPlus (я только что успешно проверил его на вашем примере).
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addTestSources</goal>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>testGenerateStubs</goal>
<goal>testCompile</goal>
<goal>removeStubs</goal>
<goal>removeTestStubs</goal>
</goals>
</execution>
</executions>
</plugin>
Так как я являюсь автором GMavenPlus (я также некоторое время обслуживал GMaven), если честно, все ваши варианты есть и для Groveny-Eclipse Compiler Plugin для Maven. Я пытался помочь людям понять их варианты здесь.