辅助数据在java源代码树中的位置正确吗?
我了解java源代码树和jar文件的基本结构:辅助数据在java源代码树中的位置正确吗?,java,jar,project-structure,Java,Jar,Project Structure,我了解java源代码树和jar文件的基本结构: com example mypackage myclass1.java myclass2.java 但是如果我有位图或html文件,我应该把它们放在哪里有约定吗? 过去,我在源代码树根目录中添加了一个ui目录(例如,上面com目录中的同级目录)。但这感觉很“鬼鬼祟祟”:从技术上讲,可能会有一个“ui”包。我不知道有什么约定。我个人把我所有的东西都放在一个数据/目录中 即使有这样一个包,存在与类文件冲突的文件的可
com
example
mypackage
myclass1.java
myclass2.java
但是如果我有位图或html文件,我应该把它们放在哪里有约定吗?
过去,我在源代码树根目录中添加了一个
ui
目录(例如,上面com
目录中的同级目录)。但这感觉很“鬼鬼祟祟”:从技术上讲,可能会有一个“ui”包。我不知道有什么约定。我个人把我所有的东西都放在一个数据/目录中
即使有这样一个包,存在与类文件冲突的文件的可能性也很小。我更喜欢Maven方法,即有一个独立于Java源文件的资源目录:
my-app
|-- pom.xml
`-- src
|-- main
| `--- resources <-- Resources go here (sibling directory of java)
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
我的应用程序
|--pom.xml
`--src
|--主要
|`---resources如果您使用maven,它会鼓励/迫使您使用采用良好的项目结构(单个WAR模块):
几点提示:将data.csv
放在与Test.java
包相同的目录中,您可以轻松地在Test.java
中打开此文件(由于数据文件位于多个目录中,因此请保持一切有序):
Maven会自动将/src/main/resources
内容放在类路径上/webapp
子目录仅用于WAR文件。+1用于META-INF。是否有更多关于如何执行此操作的信息?(我发现了,但这意味着已经有关于META-INF中应该和不应该包含哪些内容的约定)有一个约定。这些文件位于META-INF/services/
中。编辑:我误读了前面的评论。进入META-INF的文件通常是要使用ClassLoader.getResource
或ClassLoader.getResourceAsStream
访问的资源或配置文件。Java规范也可能同意哪些文件可能进入META-INF目录。
.
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ └── Test.java
├── resources
│ └── com
│ └── example
│ └── data.csv
└── webapp
├── public.png
└── WEB-INF
├── hidden.jsp
└── web.xml
getClass().getResource("data.csv"); //will only work in com.example package