Непоследовательный результат сборки оболочки Maven с установленным локально - PullRequest
0 голосов
/ 03 мая 2018

Я запускаю проект Spring Boot с оболочкой Maven.

С консоли я могу запустить mvn clean install. Из Eclipse я могу запустить его, щелкнув правой кнопкой мыши -> Run as -> Maven install.

Однако при использовании оболочки Maven из командной строки:

./mvnw clean install

Это не работает. Я думаю, что это из-за следующих строк в верхней части вывода при запуске оболочки:

[ПРЕДУПРЕЖДЕНИЕ] POM для org.apache.camel: camel-spring-boot: jar: 2.21.0 недействителен, транзитивные зависимости (если таковые имеются) будут недоступны, для получения более подробной информации включите ведение журнала отладки

[ПРЕДУПРЕЖДЕНИЕ] POM для org.apache.camel: camel-core: jar: 2.21.0 недействителен, транзитивные зависимости (если таковые имеются) будут недоступны, для получения более подробной информации включите ведение журнала отладки

[ПРЕДУПРЕЖДЕНИЕ] POM для org.apache.camel: camel-servlet: jar: 2.21.0 недействителен, транзитивные зависимости (если таковые имеются) будут недоступны, для получения более подробной информации включите ведение журнала отладки

[ПРЕДУПРЕЖДЕНИЕ] POM для org.apache.camel: camel-sql: jar: 2.21.0 недействителен, переходные зависимости (если таковые имеются) будут недоступны, для получения более подробной информации включите ведение журнала отладки

[ПРЕДУПРЕЖДЕНИЕ] POM для org.apache.camel: camel-test-spring: jar: 2.21.0 недействителен, транзитивные зависимости (если таковые имеются) будут недоступны, для получения более подробной информации включите ведение журнала отладки

И, наконец, вся сборка завершается неудачей:

Caused by: java.lang.ClassNotFoundException: org.apache.camel.spring.SpringCamelContext
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.camel.test.spring.CamelSpringBootExecutionListener.prepareTestInstance(CamelSpringBootExecutionListener.java:41)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

Я могу заставить его работать, указав каталог для загрузки, чтобы получить новую установку:

./mvnw clean install -Dmaven.repo.local=tmp

Мое основное применение для обертки - в нашей среде CI, которая в основном заставляет указанную выше строку, так как мы впоследствии отбрасываем изображение.

Мой локально установленный maven имеет следующую информацию о версии (mvn -v):

Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_162, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-121-generic", arch: "amd64", family: "unix"

Оболочка имеет следующую информацию о версии (mvn -v):

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T09:58:13+02:00)
Maven home: /home/kajo/.m2/wrapper/dists/apache-maven-3.5.2-bin/7hf0mht29afbpa1e4v2d1a16p0/apache-maven-3.5.2
Java version: 1.8.0_162, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-121-generic", arch: "amd64", family: "unix"

Мне любопытно, почему это не работает и в чем корень проблемы. Компиляция и тестирование сборки занимают намного больше времени, когда мне приходится загружать свежие установки, чтобы заставить его работать с помощью оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...