I have implemented a custom task change.
The task only consists of 1 java class, which must of course be present in the classpath in a compiled form so that the changeset can be executed.
<changeSet id=‘migrateUserSettings’ author=‘dominik’ context=‘!ci’>
<customChange class=‘de.hub28.MigrateUsersettingsLiquibaseChange’>
</customChange>
<rollback>
</rollback>
</changeSet>
As you can see, the changeset should be executed in all contexts except the CI pipeline.
In the CI pipeline, the class is not yet compiled, as it is part of the normal project sources and is only available AFTER the
liquibase:update
maven goal, and the subsequent
`generate-sources`
(because of JOOQ) and
`compile`
goal in order to generate JOOQ source files and compile all together at the end
My question: although I start the CI pipeline with the liquibase context ‘ci’ and therefore the above mentioned changeset could be ignored, there is a ClassNotFoundException
at runtime because the class cannot be found in the classpath, where it is actually not yet compiled. I start my CI pipeline via
mvn liquibase:update -Dliquibase.contexts=ci compile
This called failed with the ClassNotFoundExc. and the CI pipeline isn’t started.
How can I ensure that the CI pipeline remains executable even with such a changeset?
Kind regards
Dominik