我了解 java 源代码树和 jar 文件的基本结构:
com
example
mypackage
myclass1.java
myclass2.java
但是,如果我有位图或 html 文件,是否有约定放置它们的位置?
过去,我ui
在源代码树根目录中添加了一个目录(例如,com
上面目录中的同级目录)。但这感觉“偷偷摸摸”:从技术上讲,可能有一个“ui”包。
我了解 java 源代码树和 jar 文件的基本结构:
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
如果您想要更“企业化”的方法,请使用很久以前由 Sun 开发的“企业应用程序项目约定” 。AFAIK,只有 Netbeans IDE 在某种程度上(或全部)实现了这一点。
在运行时,所有资源都应该在META-INF
目录中。可能有子目录,但我认为这方面有足够的协议,不像源代码组织。
我不知道任何约定。我个人把我所有的东西都放在一个 data/ 目录中。
即使有一个像这样调用的包,存在与类文件冲突的文件的可能性也很小。
如果您使用 maven,它会鼓励/强制您使用广泛采用的项目结构(单个 WAR 模块):
.
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ └── Test.java
├── resources
│ └── com
│ └── example
│ └── data.csv
└── webapp
├── public.png
└── WEB-INF
├── hidden.jsp
└── web.xml
一些提示:放置data.csv
在与包相同的目录中Test.java
可以让您轻松地在其中打开此文件Test.java
(并保持一切井井有条,因为数据文件位于多个目录中):
getClass().getResource("data.csv"); //will only work in com.example package
Maven 会/src/main/resources
自动将内容放到你的 CLASSPATH 中。/webapp
子目录仅用于 WAR 文件。