JFinal3.0 Maven SqlTemplate 遇到的问题。

SqlTemplate在Maven中是怎么设置路径的,我试了PathKit里面的所有的方法,只有RootClassPath才可用。Maven工程中sql文件都保存在其他模块中。其他方法Maven编译都会出现找不到文件的路径。

评论区

JFinal

2017-03-09 15:30

使用 arp.setBaseSqlTemplatePath(....) 配置好基础路径,然后再通过 arp.addSqlTemplate(...) 将所有 sql 文件添加进去

如果 sql 文件很多,可以写点代码去扫描自动添加一下

蜡笔小新

2017-03-09 15:43

@JFinal 我设置了,sql文件是在biz模块中,Maven编译成jar包,在web模块中引用,会出现找不到SQL文件的情况。

蜡笔小新

2017-03-09 15:53

对于单个Web工程,用RootClassPath这个方法没问题的。

蜡笔小新

2017-03-10 16:16

@JFinal 其实就是,我的所有SQL文件都是存在与jar文件里面的包里面。在Web工程中引用jar包里面的sql 模板文件,提示找不到。

JFinal

2017-03-10 16:18

@蜡笔小新 引用 jar 中的 sql 文件,这个功能确实还没有,写点代码先处理一下吧

siyuan

2017-04-01 23:10

自己简单扩展一下支持maven开发环境,如下:
public class Mixeds {

public final static String DEV_PART = "target/classes/";

public final static String TEST_PART = "target/test-classes/";

/**
* 获取 classpath, 兼容 maven 开发环境
*
* @return classpath
*/
public static String getRootClassPath() {
String path = getBase();
if (path.endsWith(TEST_PART)) {
path = path.replace(TEST_PART, DEV_PART);
} else if (!path.endsWith("classes/") && new File(path + "target").exists()) {
path = path + DEV_PART;
}
return new File(path).getAbsolutePath() + File.separator;
}

/**
* 获取相对 classpath 的路径
*
* @param path 相对 classpath 的路径
* @return
*/
public static String getPath(String path) {
return new File(getRootClassPath() + path).getAbsolutePath() + File.separator;
}

/**
* 启动目录 或 Mixeds 类路径
*
* @return 启动目录 或 Mixeds 类路径
*/
private static String getBase() {
URL base = Mixeds.class.getResource("/");
if (base == null) {
return new File("").toURI().getPath();
} else {
return base.getPath();
}
}
}

JFinal

2017-11-05 16:21

新版本可以支持 jar 包内以及 class path 下面的模板:
activeRecordPlugin.getEngine().setSourceFactory(new ClassPathSourceFactory());

热门反馈

扫码入社