请教一下,jfinal undertow部署的时候,能不能设置一个classes文件夹,类似tomcat的WEB-INF/classes文件夹,放进去的class文件能优先加载。
或者能调整jar的加载优先级也行。
问题来源是这样的,现在做的一个小系统,里面有几个对第三方jar包内class的自定义修改,本地开发运行时能被优先加载没有问题,但是打包部署时,自己项目的class都打包进了一个jar并且和第三方jar一起在lib文件下,加载顺序无法控制,导致都加载的原来jar里面的class程序出错。
1:下载首页的 jfinal_demo_for_maven.zip 这个 demo
2:拿到里头的 package.xml
3:在 package.xml 中的 fileSets 标签下面添加 fileSet 子标签,配置将 target/classes 下的文件复制到被部署的 classes 目录下面,大至如下:
《fileSet》
《directory》${basedir}/target/classes《/directory》
《outputDirectory》classes《/outputDirectory》
《/fileSet》
4:修改 package.xml 中的 dependencySets 标签,添加 excluded 标签过滤掉对项目自身 jar 包的复制,大致如下:
《excludes》
《!-- **/* 前缀用法,可以匹配所有路径,例如:**/*.txt --》
《exclude》my-project.jar《/exclude》
《/excludes》
5:修改 jfinal.sh 启动文件,在 -cp 参数中添加 classes 目录,指向你自己新建的目录,大致如下:
CP=${APP_BASE_PATH}/classes:${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*