Во-первых, Вы не должны использовать System.currentTimeMillis()
или Instant.now()
для синхронизации. Они оба сообщают о тактовом стеной времени, которое компьютер не знает точно, и которое может переместиться беспорядочно, включая движение назад , если, например, демон NTP исправляет системное время. Вместо этого используйте System.nanoTime () .
, Во-вторых, от Java 8 вперед java.time. Продолжительность является лучшим способом представить продолжительность:
long start = System.nanoTime();
// do things...
long end = System.nanoTime();
Duration duration = Duration.ofNanos(end - start);
System.out.println(duration); // Prints "PT18M19.511627776S"
System.out.printf("%d Hours %d Minutes %d Seconds%n",
duration.toHours(), duration.toMinutes() % 60, duration.getSeconds() % 60);
// prints "0 Hours 18 Minutes 19 Seconds"
Имеют ли ваши импортированные зависимости предоставленную область ? Действительно, эта область видимости не является транзитивной (см. Maven Области зависимостей ).
Это могло быть причиной отсутствия замены.
Вы можете использовать зависимости pom для импорта зависимостей в произвольные проекты.
Проект pom может выглядеть примерно так:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>persistence-deps</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>${hibernateVersion}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>${hibernateAnnotationsVersion}</version>
</dependency>
</dependencies>
</project>
И импортируется как:
<dependency>
<groupId>com.example</groupId>
<artifactId>persistence-deps</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
См. Maven, полное руководство - Зависимости группировки для получения дополнительной информации.