我在我的项目中设置了具有以下目录布局的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没有发现问题。类文件。我做错了什么?
编辑:如果有人知道使用Ant(没有Maven,没有常春藤)建立Flyway的工作示例,将不胜感激。
原来Flyway会找到Jdbc迁移
类,但不会找到SpringJdbc迁移
。
此迁移已成功加载:
/* 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)"
);
}
}
下面是使用SpringJdbc迁移
时的蚂蚁调试输出:
[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] +-------------+------------------------+---------------------+---------+
事实证明,我没有所有的Spring JDBC迁移依赖项。
我用蚂蚁下载了最新的Flyway(2.0.3)
必须首先编译Java迁移。(Flyway查找.class文件)
我已经更新了文档,让它更清晰。
我使用SpringBoot2.2.0.m2/Flyway5.2.4/Java8创建了一个新项目。在尝试开始我的项目后,我得到了: 我在db/migration下有一个init sql,名称为:(其中只有一行:) yml中的flyway配置(忽略其他数据源): 我试着调试它,发现总是返回false,这意味着没有找到位置(但在调试器中看起来是正确的),见下面的截图: 感谢任何善意的帮助:)
我们正在Karaf中部署我们的应用程序,并试图使用Flyway来处理数据库迁移,但它在运行时找不到我们的文件。我检查过的东西: > 当我为Flyway启用调试时,我可以看到它在类路径上找到了文件夹,但其中没有文件。 当408与安装的捆绑包匹配时,日志显示它正在查找正确的捆绑包。 我不确定还要查找什么,因为没有记录任何错误,而且它似乎正在查找它应该位于的文件夹,而不是sql文件。我假设这是一个清单类
问题内容: 我不太确定是什么原因导致的,因为清单中正确列出了它: 我还添加了来构建路径,并将其移至的顶部,但是它仍然给我同样的错误。 编辑:我完全重建了该项目,并且无法重现该错误。不知道是什么原因造成的。 问题答案: 我的项目有同样的问题。这是由于我的项目与我在项目中添加的库项目之间的android支持库版本冲突而发生的。将相同版本的android支持库放入您的项目和包含的库项目中,并清理构建 …
问题内容: 我目前正在一个项目中,我必须使用纯本地ndk。当我尝试从Irrlicht引擎源运行helloworld示例时,它起作用了。然后,按照该示例的相同格式尝试在我的项目中使用它。但是我得到了: 在运行我的项目时。 这是我的main.cpp文件: n Android.mk: 我在AndroidManifest.xml中给了Activity名称: 我在这里做什么错?如有必要,我将发布完整代码。
我目前正在做一个项目,在这个项目中我必须使用纯原生的NDK。当我尝试从Irrlicht引擎源代码运行helloworld示例时,它起到了作用。然后我尝试在我的项目中使用它,遵循该示例的相同格式。但我得到: 在运行我的项目时。 并且我在AndroidManifest.xml中给出了活动名称: 我在这里犯了什么错误?如果需要,我会发布完整的代码。