簡體   English   中英

輔助數據在 java 源樹中的正確位置?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM