- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在项目中设置了 Flyway,目录布局如下(不包括不相关的目录):
$ tree database
database
├── lib
│ ├── flyway-ant-2.0.1.jar
│ ├── flyway-core-2.0.1.jar
│ ├── migrate.jar
│ ├── spring-beans-3.1.2.RELEASE.jar
│ ├── spring-core-3.1.2.RELEASE.jar
│ ├── spring-dao-2.0.8.jar
│ └── spring-jdbc-3.1.2.RELEASE.jar
└── updates
├── java
│ └── database
│ └── migrate
│ └── V1_0__create_posts.java
└── sql
└── V1_1__create_users.sql
以及build.xml的相关部分(flyway.url和flyway.driver在此处未包含的属性文件中设置---Flyway与数据库通信没有问题):
<target name="path">
<path id="migrate.build.path">
<fileset dir="database/lib">
<include name="flyway-*.jar"/>
</fileset>
<fileset dir="database/lib">
<include name="spring-*.jar"/>
</fileset>
</path>
<path id="flyway.lib.path">
<fileset dir="database/lib">
<include name="flyway-*.jar"/>
</fileset>
</path>
<path id="flyway.classpath">
<fileset dir="lib" includes="h2-*.jar"/>
<fileset dir="database/lib" includes="migrate.jar"/>
</path>
</target>
<target name="compile" depends="path">
<mkdir dir="build"/>
<javac srcdir="database/updates/java" destdir="build" includeantruntime="false" classpathref="migrate.build.path"/>
<copy todir="build">
<fileset dir="database/updates" excludes="**/*.java"/>
</copy>
<jar destfile="database/lib/migrate.jar" basedir="build" includes="sql/**,database/migrate/**"/>
</target>
<target name="init" depends="compile,path">
<!-- imported tasks -->
<taskdef uri="antlib:com.googlecode.flyway.ant" resource="com/googlecode/flyway/ant/antlib.xml" classpathref="flyway.lib.path"/>
<property name="flyway.locations" value="sql,database.migrate"/>
</target>
<!-- flyway tasks -->
<target name="db:clean" depends="init">
<flyway:clean/>
</target>
<target name="db:init" depends="init">
<flyway:init/>
</target>
<target name="db:migrate" depends="init">
<flyway:migrate/>
</target>
<target name="db:validate" depends="init">
<flyway:validate/>
</target>
<target name="db:info" depends="init">
<flyway:info/>
</target>
<target name="db:status" depends="init,db:info"/>
<target name="db:repair" depends="init">
<flyway:repair/>
</target>
以下是在编译目标中创建的迁移 JAR 的布局:
$ unzip -l database/lib/migrate.jar
Archive: database/lib/migrate.jar
Length Date Time Name
-------- ---- ---- ----
0 01-14-13 16:27 META-INF/
103 01-14-13 16:27 META-INF/MANIFEST.MF
0 01-14-13 16:21 database/
0 01-14-13 16:27 database/migrate/
0 01-14-13 16:27 sql/
538 01-14-13 16:27 database/migrate/V1_0__create_posts.class
0 01-14-13 16:27 sql/V1_1__create_users.sql
-------- -------
641 7 files
这是 flyway:info
的输出:
[flyway:info] +-------------+------------------------+---------------------+---------+
[flyway:info] | Version | Description | Installed on | State |
[flyway:info] +-------------+------------------------+---------------------+---------+
[flyway:info] | 0 | << Flyway Init >> | 2013-01-14 14:14:09 | Missing |
[flyway:info] | 1.1 | create users | | Pending |
[flyway:info] +-------------+------------------------+---------------------+---------+
Flyway 未发现 .class 文件。我在这里做错了什么?
编辑:如果有人知道使用 Ant 设置 Flyway 的工作示例(没有 Maven,没有 Ivy),我们将不胜感激。
<小时/>事实证明,Flyway 会找到 JdbcMigration
类,但找不到 SpringJdbcMigration
。
此迁移已成功加载:
/* database/updates/java/database/migrate/V1_0__create_posts.java */
import com.googlecode.flyway.core.api.migration.jdbc.JdbcMigration;
import java.sql.Connection;
public class V1_0__create_posts implements JdbcMigration {
public void migrate(Connection conn) throws Exception {
conn.createStatement().execute(
"create table posts (id integer primary key, title varchar(255), body text)"
);
}
}
但这一个被跳过了:
/* database/updates/java/database/migrate/V1_0__create_posts.java */
import org.springframework.jdbc.core.JdbcTemplate;
import com.googlecode.flyway.core.api.migration.spring.SpringJdbcMigration;
public class V1_0__create_posts implements SpringJdbcMigration {
public void migrate(JdbcTemplate template) throws Exception {
template.execute(
"create table posts (id integer primary key, title varchar(255), body text)"
);
}
}
以下是使用 SpringJdbcMigration
时的 Ant 调试输出:
[antlib:com.googlecode.flyway.ant] Could not load definitions from resource com/googlecode/flyway/ant/antlib.xml. It could not be found. [4/873]
[flyway:info] Database: H2 1.2
[flyway:info] DDL Transactions Supported: false
[flyway:info] Schema: PUBLIC
[flyway:info] No metadata table upgrade necessary
[flyway:info] Spring Jdbc available: false
[flyway:info] Scanning for resources at 'database/migrate' (Prefix: 'V', Suffix: '.sql')
[flyway:info] Scanning URL: jar:file:.../flyway-sample/database/lib/migrate.jar!/database/migrate
[flyway:info] JBoss VFS v2 available: false
[flyway:info] Filtering out resource: database/migrate/ (filename: )
[flyway:info] Filtering out resource: database/migrate/V1_0__create_posts.class (filename: V1_0__create_posts.class)
[flyway:info] Scanning for classes at 'database/migrate' (Implementing: 'com.googlecode.flyway.core.api.migration.jdbc.JdbcMigration')
[flyway:info] Scanning URL: jar:file:.../flyway-sample/database/lib/migrate.jar!/database/migrate
[flyway:info] Filtering out resource: database/migrate/ (filename: )
[flyway:info] Scanning for resources at 'db/migration' (Prefix: 'V', Suffix: '.sql')
[flyway:info] Unable to determine URL for classpath location: db/migration (ClassLoader: AntClassLoader[.../flyway-sample/lib/h2-1.2.135.jar:.../flyway-sample/database/lib/migrate.jar])
[flyway:info] Scanning for classes at 'db/migration' (Implementing: 'com.googlecode.flyway.core.api.migration.jdbc.JdbcMigration')
[flyway:info] Unable to determine URL for classpath location: db/migration (ClassLoader: AntClassLoader[.../flyway-sample/lib/h2-1.2.135.jar:.../flyway-sample/database/lib/migrate.jar])
[flyway:info] Scanning for resources at 'sql' (Prefix: 'V', Suffix: '.sql')
[flyway:info] Scanning URL: jar:file:.../flyway-sample/database/lib/migrate.jar!/sql
[flyway:info] Filtering out resource: sql/ (filename: )
[flyway:info] Found resource: sql/V1_1__create_users.sql
[flyway:info] Scanning for classes at 'sql' (Implementing: 'com.googlecode.flyway.core.api.migration.jdbc.JdbcMigration')
[flyway:info] Scanning URL: jar:file:.../flyway-sample/database/lib/migrate.jar!/sql
[flyway:info] Filtering out resource: sql/ (filename: )
[flyway:info] Filtering out resource: sql/V1_1__create_users.sql (filename: V1_1__create_users.sql)
[flyway:info] +-------------+------------------------+---------------------+---------+
[flyway:info] | Version | Description | Installed on | State |
[flyway:info] +-------------+------------------------+---------------------+---------+
[flyway:info] | 0 | << Flyway Init >> | 2013-01-14 14:14:09 | Missing |
[flyway:info] | 1.1 | create users | | Pending |
[flyway:info] +-------------+------------------------+---------------------+---------+
最佳答案
必须首先编译Java 迁移。 (Flyway 查找 .class 文件)
我已更新the docs让这一点更清楚。
关于java - 使用 Ant 时,Flyway 在类路径上找不到 Spring Java 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504458/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!