我正在使用一个Spring Boot Maven应用程序,因此在此注册表格上的客户必须上传两个文档。
所以我将这些文件存储在数据库中的物理位置和路径上。
因此,为了存储许可证,我在proejct根文件夹下创建了一个文件夹customerLicense
到POM
,对于PAN卡,我也在相同位置下创建了customerPANcard
文件夹到{{1} }。
在POM
文件中,我已经输入了路径,因此在代码中,我正在读取文件夹位置并存储文档。
yml
因此要构建项目,我在 application:
customerLicensePath: /customerLicense
customerPANPath: /customerPANcard
所在的根文件夹下运行命令mvn clean install
。然后生成POM
文件夹并运行war我运行命令target
,该命令也是从根文件夹运行的。
我不会进入java -jar ./target jarName.war
,因为我将这些文件夹保存在项目根文件夹下,如果我从目标文件夹运行war文件,则将无法访问这些文件夹。
这是我的问题:-现在,如果我将此战争文件提供给客户端,那么第一个客户端必须手动创建两个文件夹来存储文档,否则他将在文件上传中遇到错误。
我们是否可以选择让客户不必执行任何操作,他只会运行war文件,并自动创建这些文件夹?
答案 0 :(得分:0)
几件事。
您不想将内容与pom.xml
平行。改为这样做:
projectRoot/src/main/java/uniquePackageNameHere/ // all your code in here
/pom.xml
如果希望客户端自己提供文件,只需在运行时接受路径即可。像java -jar jarName.jar -license /path/to/license -pan /path/to/pan
之类的东西(使用Apache Commons-cli或其他东西)
如果您想提供文件,则将它们包含在项目的resources
文件夹中:
src/main/resources/customerLicense
src/main/resources/customerPANcard
然后,在您的代码中,通过调用以下内容来引用文件:
Main.class.getClassLoader().getResourceAsStream("customerLicense")
Main.class.getClassLoader().getResourceAsStream("customerPANcard")
这将使无论从何处运行代码,您的程序都将始终进入resources
进行查找。