JAVA和GIT如何管理外部资源。正确的技术
在Java项目中管理外部文件的正确技术是什么?或者更一般地说,在任何项目中 我目前正在使用IDEIntelliJ,但我希望这是一个更通用的解决方案,而不是依赖IDE的解决方案 我有以下文件夹结构:JAVA和GIT如何管理外部资源。正确的技术,java,git,intellij-idea,Java,Git,Intellij Idea,在Java项目中管理外部文件的正确技术是什么?或者更一般地说,在任何项目中 我目前正在使用IDEIntelliJ,但我希望这是一个更通用的解决方案,而不是依赖IDE的解决方案 我有以下文件夹结构: ├── headers │ └── header1 ├── htmlfiles │ └── reply1.html ├── out │ └── production │ └── WebApp-e01 │ └── ch │ └──
├── headers
│ └── header1
├── htmlfiles
│ └── reply1.html
├── out
│ └── production
│ └── WebApp-e01
│ └── ch
│ └── miao
│ └── webapp
│ └── server
│ ├── Content.class
│ ├── Request.class
│ └── Server.class
├── README.md
├── src
│ └── ch
│ └── miao
│ └── webapp
│ └── server
│ ├── Content.java
│ ├── Request.java
│ └── Server.java <-- MAIN HERE
└── WebApp-e01.iml
然后我尝试使用相对路径:
BufferedReader reader = new BufferedReader(new FileReader("./htmlfiles/reply1.html"))
如果我从Intellij运行它(因为有魔力),那么它工作得“很好”,但是如果我想从控制台以旧的方式运行它:
java ch.miao.webapp.server.Server
为了让它工作,我必须再次改变!我的类中的路径可能会改变,这取决于我使用的IDE,因为inetellij将所有内容放在out/production/…
但其他IDE有不同的位置,如果您在团队中工作,这将是一场噩梦
所以我想知道是否有一个通用的解决方案,在我从git克隆了我的项目后,我可以从IDE或命令行运行我的程序,然后从任何其他工作站运行,而不必更改我的文件路径。您可以使用名为“user.dir”的Java系统属性。它的名称可能有点误导,因为它指向JVM启动的目录
String workingDirectory = System.getProperty("user.dir");
File file = new File(workingDirectory + File.separator + "htmlfiles" + File.separator + "reply1");
无论如何,不要将
文件
用于内部资源,因为一旦打包,它就不可用;使用ClassLoader#getResourceAsStream
。
String workingDirectory = System.getProperty("user.dir");
File file = new File(workingDirectory + File.separator + "htmlfiles" + File.separator + "reply1");