В моем проекте есть тестовый модуль, и модули-pojo с hibernate entity классами.
Тест содержит бин SpringLiquibase
, задача которого перед запуском тестов накатить changelog.xml, находящийся вместе с entity классами.
Все в порядке, если changelog находится в каталоге тестового модуля. При попытке поднять модуль, указав путь относительно корня проекта, возникает исключение.
Структура:
|-project
|-pojo-module
|-src
|-main
|-resources
|-db
|-changelog.xml
|-model-test
|-src
|-main
|-java
|-test
|-config
|-LiquibaseConfig.java
|-resources
|-liquibase.properties
Бин:
@Configuration
@Import(OracleDatabaseConfig.class)
public class LiquibaseConfig {
private static final Logger logger = LoggerFactory.getLogger(LiquibaseConfig.class);
@Value("${liquibase.changelog.path}")
private String changelogPath;
@Autowired
DataSource dataSource;
@Bean
SpringLiquibase springLiquibase(){
SpringLiquibase springLiquibase = new SpringLiquibase();
springLiquibase.setDataSource(dataSource);
springLiquibase.setDropFirst(drop);
springLiquibase.setChangeLog(changelogPath);
springLiquibase.setChangeLogParameters(properties());
return springLiquibase;
}
Путь до changelog задан в конфигурации таким образом:
liquibase.changelog.path=\\cdm-hbm-mapping\\ekpit-model\\src\\main\\resources\\db\\changelog.xml
Исключение:
Caused by: liquibase.exception.ChangeLogParseException: Error Reading Migration File: class path resource [cdm-hbm-mapping/ekpit-model/src/main/resources/db/changelog.xml] cannot be resolved to URL because it does not exist
at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:112)
at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:17)
at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:229)
at liquibase.Liquibase.update(Liquibase.java:202)
at liquibase.Liquibase.update(Liquibase.java:192)
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:431)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:388)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706)
... 59 more
Caused by: java.io.FileNotFoundException: class path resource [cdm-hbm-mapping/ekpit-model/src/main/resources/db/changelog.xml] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:195)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.getResourcesAsStream(SpringLiquibase.java:161)
at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:186)
at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:93)
... 67 more
Пробовал так же получить экземпляр загрузчика классов, принадлежащих искомому модулю, но получил исключение.
try {
springLiquibase.setChangeLog(AccessValue.class.getClassLoader().getResource(changelogPath).getFile());
} catch (NullPointerException e) {
e.printStackTrace();
}
Исключение:
Caused by: liquibase.exception.ChangeLogParseException: Error Reading Migration File: class path resource [D:/Projects/cdm-ora/model-test/target/test-classes/db/changelog.xml] cannot be resolved to URL because it does not exist
at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:112)
at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:17)
at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:229)
at liquibase.Liquibase.update(Liquibase.java:202)
at liquibase.Liquibase.update(Liquibase.java:192)
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:431)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:388)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706)
... 59 more
Caused by: java.io.FileNotFoundException: class path resource [D:/Projects/cdm-ora/model-test/target/test-classes/db/changelog.xml] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:195)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.getResourcesAsStream(SpringLiquibase.java:161)
at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:186)
at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:93)
... 67 more
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Розовая область: по этой области овал должен двигаться по вертикалиБелый шарик должен перетаскиваться по нижней линии овала
При данном коде, Picasso создается каждый раз или же там существует что-то, что не позволяет создавать один и тот же объект Picasso?
использую spring-data-jpa и postgresql, возможно ли через какую-нибудь аннотацию дать права конкретному пользователю на чтение таблицы, например через...