Приложение не компилируется после перехода на Maven 3.6.3 - PullRequest
0 голосов
/ 19 марта 2020

Я работаю с одним унаследованным проектом и решил переключить конвейер CI с maven 3.6.0 на 3.6.3 Теперь, к сожалению, некоторые тесты начинают давать сбои. Ничего в кодовой базе не изменилось вообще. Но я получаю ошибки о неверном имени базы данных (derby). Я пытался запустить код как отдельное приложение, и оно хорошо компилируется и выполняется. вот код

/**
 * @param testCase
 * @param databaseType
 * @return
 */
@Override
public Connection createDatabase(Class<?> testCase)
{
  try
  {
    File testDir = new File(TARGET_TESTDB);
    testDir.mkdirs();
    File testdb = new File(testDir, testCase.getName());
    if (testdb.exists())
      deleteDirectory(testdb);
    Class.forName(DERBY_DRIVER);
    String url = "jdbc:derby:" + testdb + ";create=true";
    log.debug("Creating test database {}", url);
    Connection con = DriverManager.getConnection(url); //ERROR IS HERE
    con.setAutoCommit(false);
    return con;
  }
  catch (Exception e)
  {
    throw new RuntimeException("Caught exception creating database for test case "
      + testCase.getName(), e);
  }
}

и вот трассировка стека

Test set: com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.086 sec <<< FAILURE!
com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest  Time elapsed: 62.242 sec  <<< ERROR!
java.lang.RuntimeException: Caught exception creating database for test case com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest
    at com.navteq.phoenix.test.util.impl.DatabaseTestUtilDerby.createDatabase(DatabaseTestUtilDerby.java:88)
    at com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest.runBeforeClass(DdlColumnFilterTest.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:123)
    at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:85)
    at org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: java.sql.SQLException: invalid database address: jdbc:derby:target/testdb/com.xxxxxx.yyyyy.sql.ddl.filter.DdlColumnFilterTest;create=true
    at org.sqlite.JDBC.createConnection(JDBC.java:74)
    at org.sqlite.JDBC.connect(JDBC.java:64)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at com.xxxxxx.yyyyy.test.util.impl.DatabaseTestUtilDerby.createDatabase(DatabaseTestUtilDerby.java:82)

Как это исправить или я должен вернуться к maven 3.6.0?

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