xml - Maven 构建失败,Liquibase : cvc-elt. 1 找不到元素声明

标签 xml maven xsd liquibase

我是 Liquibase 的新手,我设置了一个相当简单的项目来熟悉 Liquibase。不幸的是,我似乎在第一步就失败了,这非常令人沮丧。

首先是我的 changelog.xml:

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

    <preConditions>
        <dbms type="mysql"/>
    </preConditions>

    <changeSet id="1" author="maik">
        <sql dbms="mysql" endDelimiter=";">
            CREATE SCHEMA ods
        </sql>
        <createTable tableName="department">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="active" type="boolean" defaultValueBoolean="true"/>
        </createTable>
    </changeSet>

</databaseChangeLog>

除此之外,我还有一个 liquibase.properties:

driver=com.mysql.jdbc.Driver
classpath=lib/mysql-connector-java-5.1.41-bin.jar
url=jdbc:mysql://localhost/prime
username=bla
password=bla

我的 pom.xml 看起来像这样:

<?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>himstedt</groupId>
    <artifactId>liquibase</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.41</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>3.5.3</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>3.0.5</version>
                <configuration>
                    <propertyFile>src/main/resources/org/liquibase/liquibase.properties</propertyFile>
                    <changeLogFile>src/main/resources/org/liquibase/changelog.xml</changeLogFile>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>update</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

当我运行 mvn package 时,出现以下错误:

user@desktop:~/IdeaProjects/liquibase$ mvn package
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building liquibase 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ liquibase ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
[INFO] 
[INFO] --- liquibase-maven-plugin:3.0.5:update (default) @ liquibase ---
[INFO] ------------------------------------------------------------------------
[INFO] Parsing Liquibase Properties File
[INFO]   File: src/main/resources/org/liquibase/liquibase.properties
[INFO]   'classpath' in properties file is not being used by this task.
[INFO] ------------------------------------------------------------------------
Mon Mar 20 13:28:20 CET 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[INFO] Executing on Database: jdbc:mysql://localhost/prime
INFO 20.03.17 13:28:liquibase: null: null: Successfully acquired change log lock
SEVERE 20.03.17 13:28:liquibase: null: null: cvc-elt.1: Deklaration des Elements 'databaseChangeLog' kann nicht gefunden werden.
INFO 20.03.17 13:28:liquibase: null: null: Successfully released change log lock
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.909 s
[INFO] Finished at: 2017-03-20T13:28:20+01:00
[INFO] Final Memory: 19M/472M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.0.5:update (default) on project liquibase: Error setting up or running Liquibase: Error parsing line 9 column 75 of src/main/resources/org/liquibase/changelog.xml: cvc-elt.1: Deklaration des Elements 'databaseChangeLog' kann nicht gefunden werden. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

项目结构是: Project structure

对我来说,这似乎是模式的问题,但我仔细检查了一下,没有发现问题。很可能我在这里遗漏了一些非常明显的东西。

最佳答案

确保使用相同版本的 liquibase-core 和 liquibase-maven 插件。 例如。将 liquibase-maven-plugin 的版本设置为 <version>3.5.3</version>

关于xml - Maven 构建失败,Liquibase : cvc-elt. 1 找不到元素声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42889086/

相关文章:

java - JaxB 属性值已定义。使用 <jaxb :property> to resolve this conflict

xml - xslt:无法识别 2 参数函数

java - android-bitmap 低质量问题

java - 无法执行 android :onClick 的方法

java - Powermock 驱动的测试通过 maven 运行得很好,但不能在 intellij 中运行

java - cobertura-maven-plugin 2.6 托管在任何地方?

java - Linux 上的 IntelliJ 使用错误的依赖版本

java - MSML 的 XSD 架构中的 XML 失败 (RFC 5707)

xml - 使用 Jackson : no String-argument constructor/factory method to deserialize from String value 从 XML 到 POJO 的反序列化问题

xml - 最好的 XSD 文件生成器