From 211f1e046b0168f829017844728edde2a990d1c2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 13 Nov 2019 12:13:09 +0100 Subject: [PATCH] DATAJPA-1631 - Enable building on Java 11. Switch to working AspectJ Maven plugin. Truncate JSR-310 comparison precision to millis. --- .travis.yml | 30 +------ Jenkinsfile | 78 +++++++++++++++++-- pom.xml | 4 +- .../Jsr310JpaConvertersIntegrationTests.java | 10 ++- .../JpaRepositoryFactoryBeanUnitTests.java | 4 +- 5 files changed, 87 insertions(+), 39 deletions(-) diff --git a/.travis.yml b/.travis.yml index af73040a4..9ac822887 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,35 +1,13 @@ language: java -jdk: - - oraclejdk8 - -env: - matrix: - - PROFILE=ci - - PROFILE=spring5-next - - PROFILE=hibernate-next - - PROFILE=hibernate-53 - - PROFILE=hibernate-53-next - - PROFILE=hibernate-54 - - PROFILE=hibernate-54-next - - PROFILE=hibernate-6 - - PROFILE=eclipselink-next - - PROFILE=eclipselink-27 - - PROFILE=eclipselink-27-next - - PROFILE=querydsl-next - - +jobs: + allow_failures: + - env: PROFILE=hibernate-next cache: directories: - $HOME/.m2 -before_install: - - test ! -f ~/.m2/settings.xml || rm ~/.m2/settings.xml - install: true -script: "mvn clean dependency:list test -P${PROFILE} -Dsort -Dbundlor.enabled=false -B" -notifications: - slack: - secure: VYoJ2D6BM3etTNHJArJ47rVvj49PRZ+eIg12itOzlQSCnsPPob9X2OJVZ8Umatfx6TyP+rOrJAz+pqA1geumEzx+dIWTtBf6og703XKS9feLpM7sa1DupdstlGu506Wwevmb7nUq/Ct0ziCZykD3Cqu9tOhnai5wWlULBYDQ4WE= +script: "./mvnw -Pjava11 clean dependency:list test -Pjava11,${PROFILE} -Dsort -B" diff --git a/Jenkinsfile b/Jenkinsfile index 93cc513d2..f21343c73 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,7 +12,28 @@ pipeline { } stages { - stage("Test") { + stage("test: baseline (jdk8)") { + when { + anyOf { + branch 'master' + not { triggeredBy 'UpstreamCause' } + } + } + agent { + docker { + image 'adoptopenjdk/openjdk8:latest' + label 'data' + args '-v $HOME:/tmp/jenkins-home' + } + } + options { timeout(time: 30, unit: 'MINUTES') } + steps { + sh 'rm -rf ?' + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' + } + } + + stage("Test other configurations") { when { anyOf { branch 'master' @@ -20,10 +41,10 @@ pipeline { } } parallel { - stage("test: baseline") { + stage("test: baseline (jdk11)") { agent { docker { - image 'adoptopenjdk/openjdk8:latest' + image 'adoptopenjdk/openjdk11:latest' label 'data' args '-v $HOME:/tmp/jenkins-home' } @@ -31,10 +52,26 @@ pipeline { options { timeout(time: 30, unit: 'MINUTES') } steps { sh 'rm -rf ?' - sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pjava11 clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' } } - stage("test: eclipselink-next") { + + stage("test: baseline (jdk13)") { + agent { + docker { + image 'adoptopenjdk/openjdk13:latest' + label 'data' + args '-v $HOME:/tmp/jenkins-home' + } + } + options { timeout(time: 30, unit: 'MINUTES') } + steps { + sh 'rm -rf ?' + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Pjava11 clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' + } + } + + stage("test: eclipselink-next (jdk8)") { agent { docker { image 'adoptopenjdk/openjdk8:latest' @@ -48,8 +85,39 @@ pipeline { sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Peclipselink-next clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' } } + + stage("test: eclipselink-next (jdk11)") { + agent { + docker { + image 'adoptopenjdk/openjdk11:latest' + label 'data' + args '-v $HOME:/tmp/jenkins-home' + } + } + options { timeout(time: 30, unit: 'MINUTES') } + steps { + sh 'rm -rf ?' + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Peclipselink-next,java11 clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' + } + } + + stage("test: eclipselink-next (jdk13)") { + agent { + docker { + image 'adoptopenjdk/openjdk13:latest' + label 'data' + args '-v $HOME:/tmp/jenkins-home' + } + } + options { timeout(time: 30, unit: 'MINUTES') } + steps { + sh 'rm -rf ?' + sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -Peclipselink-next,java11 clean dependency:list test -Dsort -Dbundlor.enabled=false -U -B' + } + } } } + stage('Release to artifactory') { when { anyOf { diff --git a/pom.xml b/pom.xml index 92d7970b1..b9faee539 100644 --- a/pom.xml +++ b/pom.xml @@ -375,9 +375,9 @@ - org.codehaus.mojo + io.starter aspectj-maven-plugin - 1.8 + 1.12.9 org.aspectj diff --git a/src/test/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConvertersIntegrationTests.java b/src/test/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConvertersIntegrationTests.java index b95f46cce..c8e37eb18 100644 --- a/src/test/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConvertersIntegrationTests.java +++ b/src/test/java/org/springframework/data/jpa/convert/threeten/Jsr310JpaConvertersIntegrationTests.java @@ -24,6 +24,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -39,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional; * * @author Oliver Gierke * @author Jens Schauder + * @author Mark Paluch */ @ContextConfiguration @Transactional @@ -46,17 +48,17 @@ public class Jsr310JpaConvertersIntegrationTests extends AbstractAttributeConver @PersistenceContext EntityManager em; - @Test // DATAJPA-650 + @Test // DATAJPA-650, DATAJPA-1631 public void usesJsr310JpaConverters() { assumeTrue(currentEntityManagerIsAJpa21EntityManager(em)); DateTimeSample sample = new DateTimeSample(); - sample.instant = Instant.now(); + sample.instant = Instant.now().truncatedTo(ChronoUnit.MILLIS); sample.localDate = LocalDate.now(); - sample.localTime = LocalTime.now(); - sample.localDateTime = LocalDateTime.now(); + sample.localTime = LocalTime.now().truncatedTo(ChronoUnit.MILLIS); + sample.localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS); sample.zoneId = ZoneId.of("Europe/Berlin"); em.persist(sample); diff --git a/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java index babbb5722..41105e101 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java @@ -62,7 +62,7 @@ public class JpaRepositoryFactoryBeanUnitTests { StubRepositoryFactorySupport factory; @Mock ListableBeanFactory beanFactory; @Mock PersistenceExceptionTranslator translator; - @Mock Repository repository; + @Mock(extraInterfaces = SimpleSampleRepository.class) Repository repository; @Mock Metamodel metamodel; @Before @@ -110,7 +110,7 @@ public class JpaRepositoryFactoryBeanUnitTests { new JpaRepositoryFactoryBean, Object, Long>(null); } - private interface SimpleSampleRepository extends JpaRepository { + public interface SimpleSampleRepository extends JpaRepository { }