[英]right place in java source tree for auxiliary data?
我了解 java 源代碼樹和 jar 文件的基本結構:
com
example
mypackage
myclass1.java
myclass2.java
但是,如果我有位圖或 html 文件,我應該把它們放在哪里有約定嗎?
過去,我在源代碼樹根目錄中添加了一個ui
目錄(例如,上面com
目錄中的同級目錄)。 但這感覺“偷偷摸摸”:從技術上講,可能有一個“ui”package。
我更喜歡 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/ 目錄中。
即使有像這樣調用的 package,存在與 class 文件沖突的文件的可能性也很小。
如果您使用 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
Few hints: placing data.csv
in the same directory as Test.java
package allows you to easily open this file inside Test.java
(and keeping everything in order since data files are in multiple directories):
getClass().getResource("data.csv"); //will only work in com.example package
Maven 將自動將/src/main/resources
內容放在您的 CLASSPATH 中。 /webapp
子目錄僅用於 WAR 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.