Upgrade to Liquibase 3.3.0
This commit updates Spring Boot to Liquibase 3.3.0 and makes the necessary changes to Boot's PackageScanClassResolver. Previously, when a class found by the scan could not be loaded a warning message was logged. This commit lowers these to debug level, bringing them into line with logging that the standard Liquibase implementation does. It also avoids a warning always being logged at startup due to Liquibase's WatchCommand$DynamicContentHandler which depends on Jetty (an optional dependency of Liquibase). Closes gh-1382
This commit is contained in:
parent
a3d4e92d9f
commit
ce4400291b
|
@ -92,7 +92,7 @@
|
||||||
<json-path.version>0.9.1</json-path.version>
|
<json-path.version>0.9.1</json-path.version>
|
||||||
<jstl.version>1.2</jstl.version>
|
<jstl.version>1.2</jstl.version>
|
||||||
<junit.version>4.11</junit.version>
|
<junit.version>4.11</junit.version>
|
||||||
<liquibase.version>3.0.8</liquibase.version>
|
<liquibase.version>3.3.0</liquibase.version>
|
||||||
<log4j.version>1.2.17</log4j.version>
|
<log4j.version>1.2.17</log4j.version>
|
||||||
<log4j2.version>2.0.2</log4j2.version>
|
<log4j2.version>2.0.2</log4j2.version>
|
||||||
<logback.version>1.1.2</logback.version>
|
<logback.version>1.1.2</logback.version>
|
||||||
|
|
|
@ -17,11 +17,9 @@
|
||||||
package org.springframework.boot.liquibase;
|
package org.springframework.boot.liquibase;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import liquibase.servicelocator.DefaultPackageScanClassResolver;
|
import liquibase.servicelocator.DefaultPackageScanClassResolver;
|
||||||
import liquibase.servicelocator.PackageScanClassResolver;
|
import liquibase.servicelocator.PackageScanClassResolver;
|
||||||
import liquibase.servicelocator.PackageScanFilter;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
@ -48,16 +46,15 @@ public class SpringPackageScanClassResolver extends DefaultPackageScanClassResol
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void find(PackageScanFilter test, String packageName, ClassLoader loader,
|
protected void findAllClasses(String packageName, ClassLoader loader) {
|
||||||
Set<Class<?>> classes) {
|
|
||||||
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(
|
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(
|
||||||
loader);
|
loader);
|
||||||
try {
|
try {
|
||||||
Resource[] resources = scan(loader, packageName);
|
Resource[] resources = scan(loader, packageName);
|
||||||
for (Resource resource : resources) {
|
for (Resource resource : resources) {
|
||||||
Class<?> candidate = loadClass(loader, metadataReaderFactory, resource);
|
Class<?> clazz = loadClass(loader, metadataReaderFactory, resource);
|
||||||
if (candidate != null && test.matches(candidate)) {
|
if (clazz != null) {
|
||||||
classes.add(candidate);
|
addFoundClass(clazz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,12 +77,21 @@ public class SpringPackageScanClassResolver extends DefaultPackageScanClassResol
|
||||||
MetadataReader reader = readerFactory.getMetadataReader(resource);
|
MetadataReader reader = readerFactory.getMetadataReader(resource);
|
||||||
return ClassUtils.forName(reader.getClassMetadata().getClassName(), loader);
|
return ClassUtils.forName(reader.getClassMetadata().getClassName(), loader);
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (NoClassDefFoundError ex) {
|
||||||
if (this.logger.isWarnEnabled()) {
|
handleFailure(resource, ex);
|
||||||
this.logger.warn("Ignoring cadidate class resource " + resource, ex);
|
return null;
|
||||||
}
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
handleFailure(resource, ex);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleFailure(Resource resource, Throwable ex) {
|
||||||
|
if (this.logger.isDebugEnabled()) {
|
||||||
|
this.logger.debug("Ignoring candidate class resource " + resource
|
||||||
|
+ " due to " + ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue