Maven не может получить джунит - PullRequest
0 голосов
/ 21 января 2019

У меня есть проект, который реализует модульное тестирование с junit. Есть pom.xml фрагмент

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

Однако проект не компилируется. Ошибка в pom.xml выглядит так:

enter image description here

Как исправить ошибку?


mvn install возвращает следующее сообщение об ошибке

[INFO] C:\Users\loom\prj\src\main\java:-1: info: compiling
[INFO] C:\Users\loom\prj\target\generated-sources\annotations:-1: info: compiling
[INFO] Compiling 7 source files to C:\Users\loom\prj\target\classes at 1548091925026
[ERROR] error: scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found.
[ERROR]         at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:17)
[ERROR]         at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:18)
[INFO]  at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:53)
[INFO]  at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:45)
[INFO]  at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:45)
[INFO]  at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)
[INFO]  at scala.reflect.internal.Mirrors$RootsBase.getClassByName(Mirrors.scala:102)
[INFO]  at scala.reflect.internal.Mirrors$RootsBase.getRequiredClass(Mirrors.scala:105)
[INFO]  at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass$lzycompute(Definitions.scala:257)
[INFO]  at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass(Definitions.scala:257)
[INFO]  at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1394)
[INFO]  at scala.tools.nsc.Global$Run.<init>(Global.scala:1215)
[INFO]  at scala.tools.nsc.Driver.doCompile(Driver.scala:31)
[INFO]  at scala.tools.nsc.MainClass.doCompile(Main.scala:23)
[INFO]  at scala.tools.nsc.Driver.process(Driver.scala:51)
[INFO]  at scala.tools.nsc.Driver.main(Driver.scala:64)
[INFO]  at scala.tools.nsc.Main.main(Main.scala)
[INFO]  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO]  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[INFO]  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO]  at java.base/java.lang.reflect.Method.invoke(Method.java:564)
[INFO]  at org_scala_tools_maven_executions.MainHelper.runMain(MainHelper.java:161)
[INFO]  at org_scala_tools_maven_executions.MainWithArgsInFile.main(MainWithArgsInFile.java:26)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.196 s
[INFO] Finished at: 2019-01-21T20:32:06+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.scala-tools:maven-scala-plugin:2.15.2:compile (default) on project prj: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1(Exit value: 1) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Там - полный лог maven install


Java и Maven версии:

$ mvn -version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T22:49:05+03:00)
Maven home: C:\ProgramData\chocolatey\lib\maven\apache-maven-3.5.3bin..
Java version: 10.0.2, vendor: Oracle Corporation
Java home: C:\Users\loom\scoop\apps\openjdk\current
Default locale: ru_RU, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

Информация о плагине следующая:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>

        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <version>2.15.2</version>
        <executions>
            <execution>
                <goals>
                    <goal>compile</goal>
                    <goal>testCompile</goal>
                </goals>
            </execution>
        </executions>

        <configuration>
            <sourceDir>src/main/scala</sourceDir>
            <testSourceDir>src/test/scala</testSourceDir>
        </configuration>
    </plugin>

</plugins>

Ответы [ 2 ]

0 голосов
/ 22 января 2019

На основании предоставленной информации трудно сказать, что происходит, я постараюсь указать пару моментов, которые могут привести вас в правильном направлении:

Maven имеет концепцию фаз, настроенную для жизненного цикла по умолчанию, который запускается при вызове mvn install

Полный список фаз можно найти внизу этой страницы .

Фаза 'test-compile', когда junit вступает в игру первой (потому что он должен скомпилировать тестовые классы, которые должны иметь аннотации JUnit), появляется где-то в середине списка (а затем фаза 'test', которая фактически запускает тесты)

Моя точка зрения заключается в том, что из прикрепленной трассировки стека это выглядит так, как будто сборка завершается неудачно, прежде чем она туда попадет. Вероятно, где-то во время начальной компиляции или даже фазы генерации исходного кода. Лучше всего изучить полную трассировку стека, а не только частичный фрагмент, maven всегда пишет, что именно выполняется в данный момент.

Этап проверки (первый), очевидно, проходит, поэтому у вас нет проблем в pom.xml. Кроме того, само определение зависимости JUnit (если ее поместить в секцию <dependencies> также выглядит хорошо). С чего вы взяли, что сборка завершается неудачей исключительно из-за библиотеки JUnit?

Может быть, это какой-то конфликт версий Java / Scala / Maven? Другая возможная причина - неправильная конфигурация плагина, отвечающего за компиляцию исходников Scala, или что-то неправильно настроено на этапе генерации источника.

0 голосов
/ 21 января 2019

Попробуйте удалить папку junit / junit из вашего хранилища maven. Иногда maven застревает при попытке загрузить зависимости.

...