2016-12-09 10 views
4

У меня проблема с созданием моего приложения с использованием maven-compile-plugin: 3.6.0 на jdk9-ea + 148.скомпилировать тесты с использованием maven-компилятора и jdk9-ea + 148

Я пытаюсь создать модуль jdk9. Модуль-информация и другие классы скомпилируются без проблем, но когда дело доходит до default-testCompile, это просто сбой. Когда мой module-info.java удален, он скомпилирован без проблем.

В основном это исключение я получаю:

 
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:testCompile (default-testCompile) on project bar: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:testCompile failed. NullPointerException -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:testCompile (default-testCompile) on project bar: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:testCompile failed. 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.base/java.lang.reflect.Method.invoke(Method.java:538) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:testCompile failed. 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
     ... 20 more 
Caused by: java.lang.NullPointerException 
     at org.apache.maven.plugin.compiler.AsmModuleInfoParser.getModuleName(AsmModuleInfoParser.java:48) 
     at org.apache.maven.plugin.compiler.TestCompilerMojo.preparePaths(TestCompilerMojo.java:259) 
     at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:742) 
     at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:164) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
     ... 21 more 

Это является настройкой Maven-компилятор-плагин у меня есть

<plugins> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.0</version> 
    <configuration> 
    <source>1.9</source> 
    <target>1.9</target> 
    <compilerArgument>-Xlint:all</compilerArgument> 
    </configuration> 
</plugin> 
</plugins> 

Кто-нибудь знает, что делать с этой проблемой к сделай так, чтоб это работало?

+0

Я хотел бы предложить, чтобы спросить в списке разработчиков Maven .... – khmarbaise

ответ

2

Исключение происходит, когда Maven пытается прочитать имя класса module-info.class s, которое с a recent change было определено как null. Похоже, Maven использует ASM и согласно Remi Forax ASM6 should already handle that case.

Я предлагаю найти проблему в трекер-проблеме Maven и открыть ее, если ее не найти.

+3

Плагин [уже использует ASM 6,0 альфа] (HTTPS : //maven.apache.org/plugins/maven-compiler-plugin/dependencies.html) ... но я думаю, что почта Remi Forax говорит, что она еще не исправлена ​​в этой версии. – Tunaki

+0

Спасибо, ребята, за помощь :-) Приятно знать, что проблема не на моей стороне. Я буду ждать фиксированной версии – Verdent

+1

Следующая версия будет использовать бета-версию ASM 6.0, см. Https://issues.apache.org/jira/browse/MCOMPILER-303 (или, может быть, лучшее решение) ... – khmarbaise

0

У меня была такая же проблема с maven-compile-plugin: 3.6.0 at jdk9-ea + 149.

Я заметил, что основной причиной для этого был каталог test, не имеющий файла module-info.java (я только добавил его в каталог src). Как только я добавил модуль-info-файл, проблема исчезла.

При этом я не знаю, как должна быть разбита структура каталога/модуля на модульные тесты - если тесты находятся в отдельном модуле, они могут обращаться только к публичному (экспортированному) API.

+0

Просто для записи, в отношении последнего абзаца: добавлен [вопрос об модульном тестировании с помощью Jigsaw] (http://stackoverflow.com/q/41366582/1006823). – peterp

2

Использование обновленной версии maven-compiler-plugin:3.7.0 должна помочь вам исправить это: -

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.7.0</version> 
     <configuration> 
      <source>9</source> 
      <target>9</target> 
      <compilerArgument>-Xlint:all</compilerArgument> 
     </configuration> 
    </plugin> 
</plugins> 

 Смежные вопросы

  • Нет связанных вопросов^_^