17

I'm trying to configure simple maven project with liquibase. I had a lot of problems with versions of liquibase-maven-plugin and liquibase-hibernate4 that do not produce large stack trace, but finally I almost get it to work. But when I execute mvn liquibase:diff it ends with message liquibase: No changes found, nothing to do.

Here is my pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pl.mlewando.ff</groupId>
    <artifactId>liquibase_test</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.7.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.6.Final</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.14.8</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <changeLogFile>src/main/resources/db/db.changelog.xml</changeLogFile>
                    <diffChangeLogFile>src/main/resources/db/generated-db.changelog.xml</diffChangeLogFile>
                    <driver>com.mysql.jdbc.Driver</driver>
                    <url>jdbc:mysql://localhost:3306/liquibase_test?characterEncoding=utf8</url>
                    <username>root</username>
                    <password>root</password>
                    <referenceUrl>hibernate:spring:pl.mlewando.ff.model?dialect=org.hibernate.dialect.MySQL5InnoDBDialect</referenceUrl>
                    <verbose>true</verbose>
                    <logging>debug</logging>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.liquibase.ext</groupId>
                        <artifactId>liquibase-hibernate4</artifactId>
                        <version>3.4</version>
                    </dependency>

                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.32</version>
                    </dependency>

                    <dependency>
                        <groupId>org.springframework.data</groupId>
                        <artifactId>spring-data-jpa</artifactId>
                        <version>1.7.0.RELEASE</version>
                    </dependency>
                    <dependency>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-entitymanager</artifactId>
                        <version>4.3.6.Final</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</project>

And log from mvn liquibase:diff:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building liquibase_test_backend 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- liquibase-maven-plugin:3.2.1:diff (default-cli) @ liquibase_test_backend ---
[INFO] ------------------------------------------------------------------------
[INFO] Loading artfacts into URLClassLoader
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/data/spring-data-jpa/1.7.0.RELEASE/spring-data-jpa-1.7.0.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/data/spring-data-commons/1.9.0.RELEASE/spring-data-commons-1.9.0.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-orm/4.0.7.RELEASE/spring-orm-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-jdbc/4.0.7.RELEASE/spring-jdbc-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-context/4.1.1.RELEASE/spring-context-4.1.1.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-expression/4.1.1.RELEASE/spring-expression-4.1.1.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-aop/4.0.7.RELEASE/spring-aop-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-tx/4.0.7.RELEASE/spring-tx-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-beans/4.0.7.RELEASE/spring-beans-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-core/4.0.7.RELEASE/spring-core-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/aspectj/aspectjrt/1.8.2/aspectjrt-1.8.2.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.7/jcl-over-slf4j-1.7.7.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/hibernate-entitymanager/4.3.6.Final/hibernate-entitymanager-4.3.6.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/logging/jboss-logging-annotations/1.2.0.Beta1/jboss-logging-annotations-1.2.0.Beta1.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/hibernate-core/4.3.6.Final/hibernate-core-4.3.6.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/jandex/1.1.0.Final/jandex-1.1.0.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/common/hibernate-commons-annotations/4.0.5.Final/hibernate-commons-annotations-4.0.5.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Final/jboss-transaction-api_1.2_spec-1.0.0.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/projectlombok/lombok/1.14.8/lombok-1.14.8.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/mysql/mysql-connector-java/5.1.32/mysql-connector-java-5.1.32.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/IdeaProjects/forfun/liquibase_test/backend/target/classes/
[INFO]   artifact: file:/C:/Users/mlewandowski/IdeaProjects/forfun/liquibase_test/backend/target/test-classes
[INFO] ------------------------------------------------------------------------
[INFO] Settings
----------------------------
[INFO]     driver: com.mysql.jdbc.Driver
[INFO]     url: jdbc:mysql://localhost:3306/liquibase_test?characterEncoding=utf8
[INFO]     username: root
[INFO]     password: *****
[INFO]     use empty password: false
[INFO]     properties file: null
[INFO]     properties file will override? false
[INFO]     prompt on non-local database? true
[INFO]     clear checksums? false
[INFO]     changeLogFile: src/main/resources/db/db.changelog.xml
[INFO]     context(s): null
[INFO]     referenceDriver: null
[INFO]     referenceUrl: hibernate:spring:pl.mlewando.ff.model?dialect=org.hibernate.dialect.MySQL5InnoDBDialect
[INFO]     referenceUsername: null
[INFO]     referencePassword: null
[INFO]     referenceDefaultSchema: null
[INFO]     diffChangeLogFile: src/main/resources/db/generated-db.changelog.xml
[INFO] ------------------------------------------------------------------------
DEBUG 25.11.14 12:07: liquibase: Connected to root@localhost@jdbc:mysql://localhost:3306/liquibase_test?characterEncoding=utf8
DEBUG 25.11.14 12:07: liquibase: Setting auto commit to false from true
[INFO] Executing on Database: jdbc:mysql://localhost:3306/liquibase_test?characterEncoding=utf8
[INFO] Loading artfacts into URLClassLoader
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/data/spring-data-jpa/1.7.0.RELEASE/spring-data-jpa-1.7.0.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/data/spring-data-commons/1.9.0.RELEASE/spring-data-commons-1.9.0.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-orm/4.0.7.RELEASE/spring-orm-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-jdbc/4.0.7.RELEASE/spring-jdbc-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-context/4.1.1.RELEASE/spring-context-4.1.1.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-expression/4.1.1.RELEASE/spring-expression-4.1.1.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-aop/4.0.7.RELEASE/spring-aop-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-tx/4.0.7.RELEASE/spring-tx-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-beans/4.0.7.RELEASE/spring-beans-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/springframework/spring-core/4.0.7.RELEASE/spring-core-4.0.7.RELEASE.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/aspectj/aspectjrt/1.8.2/aspectjrt-1.8.2.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.7/jcl-over-slf4j-1.7.7.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/hibernate-entitymanager/4.3.6.Final/hibernate-entitymanager-4.3.6.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/logging/jboss-logging-annotations/1.2.0.Beta1/jboss-logging-annotations-1.2.0.Beta1.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/hibernate-core/4.3.6.Final/hibernate-core-4.3.6.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/jandex/1.1.0.Final/jandex-1.1.0.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/common/hibernate-commons-annotations/4.0.5.Final/hibernate-commons-annotations-4.0.5.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Final/jboss-transaction-api_1.2_spec-1.0.0.Final.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/org/projectlombok/lombok/1.14.8/lombok-1.14.8.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/.m2/repository/mysql/mysql-connector-java/5.1.32/mysql-connector-java-5.1.32.jar
[INFO]   artifact: file:/C:/Users/mlewandowski/IdeaProjects/forfun/liquibase_test/backend/target/classes/
[INFO]   artifact: file:/C:/Users/mlewandowski/IdeaProjects/forfun/liquibase_test/backend/target/test-classes
[INFO] ------------------------------------------------------------------------
DEBUG 25.11.14 12:07: liquibase: Connected to null@hibernate:spring:pl.mlewando.ff.model?dialect=org.hibernate.dialect.MySQL5InnoDBDialect
DEBUG 25.11.14 12:07: liquibase: Not adjusting the auto commit mode; it is already false
INFO 25.11.14 12:07: liquibase-hibernate: Reading hibernate configuration hibernate:spring:pl.mlewando.ff.model?dialect=org.hibernate.dialect.MySQL5InnoDBDialect
INFO 25.11.14 12:07: liquibase-hibernate: Found package pl.mlewando.ff.model
INFO 25.11.14 12:07: liquibase-hibernate: Found dialect org.hibernate.dialect.MySQL5InnoDBDialect
INFO 25.11.14 12:07: liquibase-hibernate: Found hibernate.enhanced_idfalse
lis 25, 2014 12:07:37 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
        name: default
        ...]
lis 25, 2014 12:07:37 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.1.Final}
lis 25, 2014 12:07:37 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
lis 25, 2014 12:07:37 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
lis 25, 2014 12:07:37 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
lis 25, 2014 12:07:37 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
INFO 25.11.14 12:07: liquibase-hibernate: Using dialect org.hibernate.dialect.MySQL5InnoDBDialect
[INFO] Performing Diff on database root@localhost @ jdbc:mysql://localhost:3306/liquibase_test?characterEncoding=utf8 (Default Schema: liquibase_test)
DEBUG 25.11.14 12:07: liquibase: Computed checksum for 1416913657501 as 5fde170700e5d1ee87d42598486086ef
INFO 25.11.14 12:07: liquibase-hibernate: Found table User
INFO 25.11.14 12:07: liquibase-hibernate: Found table User
INFO 25.11.14 12:07: liquibase-hibernate: Found column id bigint
INFO 25.11.14 12:07: liquibase-hibernate: Found column name varchar(255)
INFO 25.11.14 12:07: liquibase-hibernate: Found primary key UserPK
INFO 25.11.14 12:07: liquibase: src\main\resources\db\generated-db.changelog.xml exists, appending
DEBUG 25.11.14 12:07: liquibase: MissingObjectChangeGenerator type order:     liquibase.structure.core.Catalog    liquibase.structure.core.Schema    liquibase.structure.core.Sequence    liquibase.structure.core.StoredProcedure    liquibase.structure.core.Table    liquibase.structure.core.Column    liquibase.structure.core.PrimaryKey    liquibase.structure.core.UniqueConstraint    liquibase.structure.core.ForeignKey    liquibase.structure.core.Index    liquibase.structure.core.View
DEBUG 25.11.14 12:07: liquibase: UnexpectedObjectChangeGenerator type order:     liquibase.structure.core.Catalog    liquibase.structure.core.ForeignKey    liquibase.structure.core.Schema    liquibase.structure.core.StoredProcedure    liquibase.structure.core.UniqueConstraint    liquibase.structure.core.View    liquibase.structure.core.Table    liquibase.structure.core.PrimaryKey    liquibase.structure.core.Column    liquibase.structure.core.Index    liquibase.structure.core.Sequence
DEBUG 25.11.14 12:07: liquibase: ChangedObjectChangeGenerator type order:     liquibase.structure.core.Catalog    liquibase.structure.core.ForeignKey    liquibase.structure.core.Schema    liquibase.structure.core.Sequence    liquibase.structure.core.StoredProcedure    liquibase.structure.core.Table    liquibase.structure.core.Column    liquibase.structure.core.PrimaryKey    liquibase.structure.core.Index    liquibase.structure.core.UniqueConstraint    liquibase.structure.core.View
INFO 25.11.14 12:07: liquibase: No changes found, nothing to do
[INFO] Differences written to Change Log File, src/main/resources/db/generated-db.changelog.xml
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.129 s
[INFO] Finished at: 2014-11-25T12:07:37+01:00
[INFO] Final Memory: 20M/308M
[INFO] ------------------------------------------------------------------------

In src/main/java/pl/mlewando/ff/model I have one simple class:

package pl.mlewando.ff.model;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
@Data
class User {
    @Id
    private long id;
    private String name;
}

And persistence.xml in src/main/resources/META-INF/:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
    <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
        </properties>
    </persistence-unit>
</persistence>

Database liquibase_test is empty, when I execute mvn liquibase:update with empty db.changelog.xml it creates tables databasechangelog and databasechangeloglock, but after that when I run mvn liquibase:diff it still cannot see User table.

What I'm doing wrong? Thanks!

EDIT:

When I try to diff from command line with this command:

liquibase 
      --driver=com.mysql.jdbc.Driver 
      --url=jdbc:mysql://localhost:3306/liquibase_test_ref 
      --username=root 
      --password=root 
    diffChangeLog 
      --referenceUrl="hibernate:spring:pl.mlewando.ff.model?dialect=org.hibernate.dialect.MySQL5InnoDBDialect"

Everything works fine, I end up with this changelog:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.2.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
    <changeSet author="mlewandowski (generated)" id="1416923630350-1">
        <createTable tableName="User">
            <column name="id" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="name" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>
    <changeSet author="mlewandowski (generated)" id="1416923630350-2">
        <addPrimaryKey columnNames="id" constraintName="UserPK" tableName="User"/>
    </changeSet>
</databaseChangeLog>

I have version 3.2.1 of liquibase (the same as in pom.xml) and these jars on classpath:

antlr-2.7.7.jar
aopalliance-1.0.jar
aspectjrt-1.8.2.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.1.Final.jar
hibernate-entitymanager-4.3.6.Final.jar
hibernate-envers-4.3.1.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
jcl-over-slf4j-1.7.7.jar
liquibase_test_backend-1.0.jar
liquibase-hibernate4-3.4.jar
mysql-connector-java-5.1.33.jar
slf4j-api-1.7.7.jar
snakeyaml-1.13.jar
spring-aop-4.0.7.RELEASE.jar
spring-beans-4.0.7.RELEASE.jar
spring-context-4.1.1.RELEASE.jar
spring-core-4.0.7.RELEASE.jar
spring-data-commons-1.9.0.RELEASE.jar
spring-data-jpa-1.7.0.RELEASE.jar
spring-expression-4.1.1.RELEASE.jar
spring-jdbc-4.0.7.RELEASE.jar
spring-orm-4.0.7.RELEASE.jar
spring-tx-4.0.7.RELEASE.jar
xml-apis-1.0.b2.jar

But I really want to do it via maven. So, again: what I'm doing wrong?

Taoufik Mohdit
  • 1,910
  • 3
  • 26
  • 39
gandalfml
  • 908
  • 1
  • 10
  • 23
  • Its only a assumptation since i have only very spare experience of Liquibase but is it possible that the `diff` command refers to liquibase based changes in the form of `changeSet` rather than changes on the database itself (compared to the previous version). E.g. Say you tell Liquibase "create a Table user" and then replace that liquibase configuration with "delete a Table user" - liquibase would not consider this a change to apply even thus it obviously will lead to a change in the database structure. Understood what i am trying to describe? (Also: Dont you have any changefiles at all? o.O) – JBA Nov 25 '14 at 13:33
  • I don't have any changefiles yet, only initial ampty one: ` ` About `Understood what i am trying to describe?` - unfortunetely no :( But I have empty database, empty initial change log and new entity in project. – gandalfml Nov 25 '14 at 14:07
  • O.k. sorry English isnt my mothers tongue hence it sometimes is challaging for me to express myself clearly. What i tried to describe is however not important anymore because as faar as i remember correctly Liquibase wont interact with your (annotated) Entities unless configured to do so (e.g. a Table User will only be created if a appropriate changeset has been defined for Liquibase to do so). I however log me out at this point since i could be wrong too - in the hope someone can further assist you especially when it comes to Spring+Liquibase. – JBA Nov 25 '14 at 14:29
  • Liquibase doesn't look at the changeSets in the diff. It just looks at your database and the hibernate classes and generates changeSets. You may have been running into a compatibility issue with Liquibase 3.2.1 and the liquibase-hibernate extension. I'm finishing up an update to the extension to ensure it works with the newest liquibase 3.3.1 that should be out today or tomorrow. Can you re-test it with the newest version when it is available? – Nathan Voxland Nov 25 '14 at 15:26
  • Ok, I'll retest as soon as new versions will be released, but when I tried different versions of liquibase-maven-plugin and liquibase-hibernate4 I found that only 3.2.1 form maven plugin and 3.4 for extension works. Others versions give me a lot of null pointers and method not found exceptions. And, as I already checked, my versions works fine from command line. – gandalfml Nov 25 '14 at 16:35
  • In the pom you refer to a database `liquibase_test`. On commandline you refer to a database `liquibase_test_ref`. Are you sure you're looking into the same databases? (just verifying). Also, I don't see a value for `hibernate.hbm2ddl.auto`. According to this [answer](http://stackoverflow.com/a/3179948/332248) hibernate does not create a table if the property `hibernate.hbm2ddl.auto` is missing. Just an idea - maybe all of this is correctly setup. – Jens Dec 02 '14 at 11:25
  • The Liquibase Hibernate Extension only makes diffs against your database and a hibernate configuration file (treated as another database). So if you want to use the hibernate configuration to generate a schema, then first you have to run the liquibase with your database and hibernate config to generate a changelog then you can use this changelog. If you change your hibernate configuration, then you need to repeat these steps. Source: https://github.com/liquibase/liquibase-hibernate/wiki – loc Sep 03 '15 at 08:15
  • @NathanVoxland i am using liquibase 3.4.1 but problem remains the same. diff generate the changelog at very first time. but after that if you change something in DTO (Java Class) then changes are not reflected. Please suggest me about what is the right sequence of action to produce the right changeset. my flow is as such like that - 1. At first `mvn changelog:diff` calls then `diff-changelog.xml` then after copy those changes to `changeLog.xml` and used `mvn changelog:update` and then made a change in any dto or make another dto and try `mvn changelog:diff` again,but no changes reflected – Vikrant Kashyap Sep 11 '17 at 13:31
  • How did you do it through maven ? – JITHIN_PATHROSE Apr 03 '19 at 06:13
  • There is maven goal called diffChangeLog right? – JITHIN_PATHROSE Apr 03 '19 at 06:31
  • @gandalfml What were the versions of liquibase , its maven plugin and others worked for you? – JITHIN_PATHROSE Apr 03 '19 at 07:04

1 Answers1

3

I am not sure if this is related, but some time ago I found a similar bug on liquibase-hibernate-plugin. I was using a Spring local session factory with hiberante 4 and it didn't also found changes.

After debugging I found that liquibase-hibernate-plugin used import org.springframework.orm.hibernate3.LocalSessionFactoryBean; into HibernateSpringDatabase.java and thus it couldn't read my config.

I changed it and generated a pull request, and now it is working ok for me.

If you want to give it a try you can use my changed liquibase-hibernate-plugin using the following maven dependency:

<dependency>
    <groupId>com.github.malaguna</groupId>
    <artifactId>liquibase-hibernate</artifactId>
    <version>liquibase-hibernate4-3.6.1</version>
</dependency>

But firs you will have to add JitPack repo to maven pom.xml:

<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

Hope it helps!

malaguna
  • 4,183
  • 1
  • 17
  • 33
  • is this repo still exists? because when i added this in my `pom.xml` then it raised exception `org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact com.github.malaguna:liquibase-hibernate:jar:liquibase-hibernate4-3.6.1 in central (https://repo.maven.apache.org/maven2) ` – Vikrant Kashyap Sep 11 '17 at 13:46
  • 2
    It is no longer needed, they accepted my pull request and now it is solved in mainstream version of liquibase-hibernate plugin, but I didn't drop my repo. The problem you are facing is that my package is not in maven central, as I said in my answer, you have to configure jitpack repository. – malaguna Sep 25 '17 at 20:15