2010-11-15 9 views
41

Chcę umieścić plik konfiguracyjny w moim projekcie Maven. Patrząc na the standard directory layout, są dwa miejsca, które wydają się rozsądne, "src/main/resources" i "src/main/config". Czy ktoś mógłby wyjaśnić różnicę między tymi słowami i wyjaśnić, kiedy umieścić coś w config i kiedy w resources?W maven, jaka jest różnica między main/resources i main/config?

W tym przypadku plik Patrzę na to ehcache.xml, ale moje pytanie nie jest ehcache specyficzny, jestem ciekawy dla log4j.properties itp

Trochę googlowania odkrył this person had the same question, ale odpowiedzi wydawało sprzeczne i niezbyt autorytatywne.

+0

Myślę, że znalazłem przypadek użycia dla głównego katalogu/config. Mam kilka plików konfiguracyjnych, które są opcjonalne i nie są użyteczne w ścieżce klas. Przykładowe pliki konfiguracyjne dla aplikacji i kontenera, w którym są wdrożone. Nigdzie nie mogę znaleźć dla nich żadnego innego miejsca. – akostadinov

+0

To może być dobre miejsce na pliki konfiguracyjne wtyczki Eclipse (findbugs, checkstyle itp.). Nie chciałbym, żeby te pliki znajdowały się w pliku archiwum. – jbruni

Odpowiedz

47

Wymiana email na http://www.mail-archive.com/[email protected]/msg90985.html mówi:

"To wszystko teoria ... Może pisząc docs, ktoś związany z rozwojem Maven Przypuszcza może być przydatny do posiadania katalogu src/main/config, a więc został uwzględniony w dokumentach, ale ponieważ nigdy nie został zaimplementowany w kodzie, nie jest obecnie używany. "

i

"Katalog [src/main/config] nie pojawi się na ścieżce klasy więc zastosowanie lub testy klas nie może nic w nim przeczytać. "

więc wystarczy użyć src/main/resources

. Uwaga: Nie wiem, czy to prawda (Jestem Pytający pytanie), ale to by tłumaczyło, dlaczego tak wielu ludzi w sieci polecam src/main/resources dla log4j Jeśli ludzie zgodzą się, że to jest właściwa odpowiedź, dajcie mi znać (komentarz lub głosowanie) Umieszczam to tutaj, aby ratować innych ludzi podczas pisania ..

+1

To jest poprawne, po prostu użyj 'src/xxx/resources' dla wszystkich plików bez źródeł, które chcesz pobrać w ścieżce klas. Oczywiście, możesz zdecydować się na dodanie innych katalogów, ale musisz dodać konkretną konfigurację do POM. –

+0

Dzięki za wyjaśnienia. Patrzyłem na dokumentację i [standardowa sekcja układu katalogu] (http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html) nie wspomina o tym :( – seneyr

+2

Używam src/main/config do przechowywania elementów konfiguracji, których nie chcę pakować do celu, takich jak skrypty konfiguracyjne JBoss. – jbruni

7

scr/main/resources to miejsce, w którym umieszczasz obrazy, dźwięki, szablony, pakiety językowe, pliki tekstowe i binarne używane przez kod źródłowy. Wszystkie pliki konfiguracyjne, takie jak excache.xml, log4j.properties, logback.xml i inne, przechodzą do src/main/config.

Dodaj do pom.xml:

<build> 
    <resources> 
     <resource> 
      <targetPath>.</targetPath> 
      <directory>src/main/config</directory> 
     </resource> 
    </resources> 
</build> 
+0

wydaje mi się to rozsądne, ale czy masz odniesienie? Istnieją różne wiadomości e-mail, np. Http://markmail.org/message/lve4d2qzba2lritd mówiąc, że zasoby są standardowym miejscem docelowym dla log4j.properties –

+0

Nie można znaleźć żadnego. To tylko zdrowy rozsądek. Gdziekolwiek to umieścisz, upewnij się, że jest w ścieżce klas, więc zostanie pobrane przez bibliotekę log4j. –

+0

Dzięki. Czy istnieje standardowy sposób dodania tego katalogu do ścieżki klasy pod kluczem? (Jestem nowym użytkownikiem maven) –

0

Przypadek użycia jest całkiem prosty, jeśli mnie pytacie. (Wydaje się, że src/main/config od tego czasu został usunięty standardowy układ katalogu)

  • /src/main/resources iść do słoika, a tym samym na ścieżce klasy
  • /src/main/config jest przeznaczony do wtyczki montażowej, gdzie można zbudować plik Kod pocztowy:

    hello-world.zip 
    lib/ 
        <dependencies> 
    bin/ 
        run.bat 
        run.sh 
    config/ 
        config.properies 
    
Powiązane problemy